• # Lesson 7. Retrograde, Transpose and Sections

## Annotation

Another good reason for using lists as bars is that we can select and process individual lists as the following expressions demonstrate.

```(setf line (gen-repeat 5 '((c4 cs4 fs4 g4 c5))))
(setf line-t (pitch-transpose '(0 1 7 6 0) line))
=> ((c4 cs4 fs4 g4 c5)
(cs4 d4 g4 gs4 cs5)
(g4 gs4 cs5 d5 g5)
(fs4 g4 c5 cs5 fs5)
(c4 cs4 fs4 g4 c5))```

These two expressions can be put together as one.

```(setf line-t (pitch-transpose '(0 1 7 6 0)
(gen-repeat 5 '((c4 cs4 fs4 g4 c5)))))```

This piece uses the same A B A structure as Stage 6. In the left hand bass part there’s use of the function GEN-RETROGRADE.

```(setf bass (pitch-transpose -24 line))

This retrograde function makes use of a special keyword :section. This selects the GEN-RETROGRADE function to come into action on the 1st, 3rd and 5th bars of the B section in the bass part. Remember LISP counting of sections starts at 0.

```(setf bass-2
(make-omn
:length rhy-wi
:velocity '(f)))
=> ((e c3 f g2 fs2 cs2 -)
(-e - c2 cs2 fs2)
(e c3 g2 fs2 - -)
(e c2 - cs2 fs2 g2)
(e c3 - g2 fs2 -))```

In the A section of the left hand bass part there’s another new function. TIE-BARS enables ties to be placed between bars when necessary. Evaluate it and look at the omn script.

```(setf bass-1 (tie-bars
(make-omn
:length rhythm
:velocity '(mp))))
=> ((e c3 mp g2 fs2 cs2 c2 tie)
(e c2 cs2 fs2 g2 c3 tie)
(e c3 g2 fs2 cs2 c2 tie)
(e c2 cs2 fs2 g2 c3 tie)
(e c3 g2 fs2 cs2 c2))```

## Score

```(setf line (gen-repeat 5 '((c4 cs4 fs4 g4 c5))))
(setf line-t (pitch-transpose '(0 1 7 6 0) line))
(setf bass (pitch-transpose -24 line))
(setf chords (respell '(c4cs4fs4 g4c5)))
(setf rhythm (span line '(e)))
(setf rhy-chords (span rhythm chords))
(setf rhy-w (length-weight rhythm :weight '(2 1) :seed 30))
(setf rhy-wi (length-weight rhythm :weight '(3 1) :seed 23))

(setf line-1 (make-omn
:length rhy-w
:pitch line-t
:velocity '(f)))

(setf bass-1 (tie-bars
(make-omn
:length rhythm
:velocity '(mp))))

(setf line-2 (make-omn
:length rhy-w
:pitch chords
:velocity '(mp)))

(setf bass-2 (make-omn
:length rhy-wi
:velocity '(f)))

(setf part-1-rh (assemble-seq line-1 line-2 line-1))
(setf part-1-lh (assemble-seq bass-1 bass-2 bass-1))
(setf ts-list (get-time-signature part-1-rh :group '((5))))

(def-score lesson-7
(:key-signature 'chromatic
:time-signature ts-list
:tempo 100
:layout (piano-layout 'piano-rh 'piano-lh))

(piano-rh
:omn part-1-rh
:channel 1
:sound 'gm
:program 'acoustic-grand-piano)

(piano-lh
:omn part-1-lh)
)```

## Notation

Next page Lesson 8. Changing Metre

Go to Reference page.

Edited by opmo

×

• Lessons