Jump to content
  • Lesson 22. Lengths and Rhythms



    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)))


    ;; 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
           '(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))
       :omn p-rh
       :channel 1
       :sound 'gm
       :program 'acoustic-grand-piano)  
       :omn p-lh)


    Screen Shot 2017-12-05 at 17.50.51.png


    Next page Lesson 23. Intervals and Rows

    Go back to Reference page.

    Edited by opmo

  • Create New...

Important Information

Terms of Use Privacy Policy