• ## Annotation

Unlike most of the other Stages this piece begins with rhythm. This is very much a 20th century approach to composition often employed by Stravinsky and Messiaen. But this piece takes something of the rhythmic (and later the melodic) character of Bartok. It begins with a collection of variables of rhythms occupying a quarter or dotted quarter beat.

### Section A

If we describe the rhythms as individual variables we can build lists with them and evaluate them with APPLY-EVAL. We’ll let the function RND-SAMPLE help us improvise a ten-beat phrase of these rhythms for the right hand until a suitable collection appears. Then, using the output of rhy-1 as a guide, the composer writes a left hand rhythmic part as a complement to the right hand part. This is done with the QL function, a kind of musical shorthand for writing note lengths. Using QL, (4 s) is the same as writing (s s s s).

Now we can add pitches. To achieve the Bartokesque pitch series the GEN-SINE function creates a wave-form that outputs chromatic pitches between e4 and b4.

`(gen-sine (get-count rhy-1 :sum t) 2 '(0.2 0.7))`

The important part of this expression is:

`(get-count rhy-1 :sum t)`

The function GET-COUNT is a more advanced version of the LISP primitive LENGTH. It counts the note-lengths in the lists of rhy-1:

```=> ((e e e) (s s e) (e s s) . . .))
(3 3 3 . . .)```

... and then sums them together. We now know exactly how many pitches GEN-SINUS must generate. By doing things this way we could change the rhythmic sequence and not have to worry about counting! At this point we just have a long list of pitches. By spanning the variable rhy-1 to wave the lists become organised.

`=> ((gs4 a4 gs4) (b4 a4 b4) (gs4 gs4 g4) . . .))`

Notice that the pitch for the left hand is simply '(b2 e2) and it's written into the MAKE-OMN expression. So it loops . . .

### Section B

In Section B the roles are reversed. The piano right hand has two chords that loop and the left hand has a wave-generated melody. This time the rhythms described as variables with a quarter or dotted quarter beat are more complex. They include tuplets, rest-lengths and a tied note.

`'(5q = = = =)`

The = above means repeat the note length, while in the list:

`'(-s s_3q 3q 3q)`

-s means a rest-length for a 1/16
s_3q means a 1/16 is tied to a triplet 1/8

Finally, notice in Section B how we've created two expressions together and inverted the wave-form:

```(setf wave-i
(vector-to-pitch '(fs2 fs3)
(gen-sine (get-count rhy-2 :sum t) 2 '(0.2 0.7))))

(setf wave-l (span rhy-2 (pitch-invert wave-i)))```

## Score

```;; Section A
(setf rhy-1 '((e = =) (s = e) (e s =) (s e s) (e =)
(s e s) (e s =) (s = e) (e s =) (e = =)))
(setf rhy-a
(ql '((1 q.) (2 e) (2 e) (2 e) (4 s)
(1 q) (1 q) (1 q) (2 e) (2 e 2 s))))

(setf wave (vector-to-pitch
'(e4 b4)
(gen-sine (get-count rhy-1 :sum t) 2 '(0.2 0.7))))

(setf wave-r (span rhy-1 wave))

(setf rh-1 (make-omn
:pitch wave-r
:length rhy-1
:velocity '(f)))

(setf lh-1 (make-omn
:pitch '(b2 e2)
:length rhy-a
:velocity '(p)))

;; Section B
(setf rhy-2 '((-s = = = = =) (5q = = = =) (-s = = = = =)
(-s s_3q 3q =) (-s = = = = =)
(3h 3q) (-s s_3q 3q =) (-3q = =)
(3h 3q) (-s = = = = =)))

(setf rhy-b (ql '((3 e) (1 q) (2 e 2 s) (1 q 1 e) (3 e)
(2 e) (1 e 1 q) (1 q) (1 q) (1 q 1 e))))

(setf wave-i
(vector-to-pitch
'(fs2 fs3)
(gen-sine (get-count rhy-2 :sum t) 2 '(0.2 0.7))))

(setf wave-l (span rhy-2 (pitch-invert wave-i)))

(setf rh-2 (make-omn
:pitch '(cs4fs4 e4b4)
:length rhy-b
:velocity '(p)))

(setf lh-2 (make-omn
:pitch wave-l
:length rhy-2
:velocity '(ff)))

(setf p-rh (assemble-seq rh-1 rh-2 rh-1))
(setq p-lh (assemble-seq lh-1 lh-2 lh-1))
(setf timesigs (get-time-signature p-rh))

(def-score lesson-22
(:key-signature 'chromatic
:time-signature timesigs
:tempo 60
:layout (piano-layout 'piano-rh 'piano-lh))

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

(piano-lh
:omn p-lh)
)```

## Notation

Next page Lesson 23. Intervals and Rows

Go back to Reference page.

Edited by opmo

×

• Lessons