Jump to content
  • Sign in to follow this  

    Lesson 20. Skipping, Swallowing and Pausing


    opmo



    Annotation

    Adding silence into a musical texture is an important part of the craft of composing. In this piece there are three examples of how silent spaces can be achieved. Two are concerned with rhythmic space, what is called in Opusmodus the length-rest. The third is about silencing lists by generating pauses across sections. First, however, we need to explain skipping and swallowing. A list of pitches will fully map onto a list of lengths, provided there are no rest-lengths:

     

    (1/8 1/8 1/8 1/8 1/8)
    (c4 cs4 fs4 g4 c5)

     

    But when rest-lengths are added to the rhythm list things change! Either pitches can skip rest-lengths:

     

    (1/8 -1/8 1/8 -1/8 1/8)
    (c4       cs4      fs4)

     

    Or the rest-lengths can ‘swallow’ the pitches:

     

    (1/8 -1/8 1/8 -1/8 1/8)
    (c4       fs4      c5)

     

    The default in Opusmodus is to skip, but we've seen in Lesson 13 that if we use GEN-BINARY-RND and BINARY-MAP rest-lengths do swallow pitches!


    Section A

    Notice in this Stage the organisation of the score-script has changed. This is to enable us to score more easily in sections. Section A focuses on skipping and swallowing. The right hand swallows and the left hand skips. Notice also that the expressions have become more complex. The expression below creates the rhythm template:

     

    (setf t-seq (assemble-seq
                 (gen-eval 5 '(pitch-transpose
                               (rnd-range 3 7) 
                               (mclist pitches)) :seed 67)))
    => ((1 1 1 0 1) (1 1 1 1 0) (0 1 1 1 1) (1 1 1 1 0) (1 1 0 1 1))

     

    When we take the output map into this expression:

     

    (setf p-seq-i (binary-map map pitches))

     

    We can then see the pitch lists:

     

    => ((c4 cs4 fs4 c5) (c4 cs4 fs4 g4)
        (cs4 fs4 g4 c5) (c4 cs4 fs4 g4) (c4 cs4 g4 c5))

     

    But now we'll get the rhythm to 'swallow' with this expression. Check against the binary output:

     

    (setf p-sw (gen-swallow rhythm p-seq-i))
    => ((c4 cs4 fs4 c4) (c4 cs4 fs4 g4)
        (fs4 g4 c5 cs4) (c4 cs4 fs4 g4) (c4 cs4 c5 c4))
        
    => ((1 1 1 0 1) (1 1 1 1 0)
        (0 1 1 1 1) (1 1 1 1 0) (1 1 0 1 1))


    Section B

    Here the emphasis is on adding intervals to the pitch list to get a kind of improvised harmonisation.

     

    (setf t-seq
          (assemble-seq
           (gen-loop 5 (pitch-transpose
                        (rnd-range 3 7) 
                        (mclist pitches)) :seed 67)))

     

    Another complex expression, this time to create five lists of pitches that are transposed between 3 and 7 semitones above the original we hear in Section A. These are then to be 'swallowed’:

     

    (setq t-sw (gen-swallow rhythm t-seq))

     

    Now we'll mix the original and transposed lists together to create diads:

     

    (setf rh-mix 
          (gen-divide 4 (pitch-mix
                         (list (flatten p-sw) 
                               (flatten t-sw)))))

     

    Audition the MAKE-OMN expression for rh-2, the piano right hand.

    And in the left hand Audition the MAKE-OMN expression for lh-2, the piano right hand. Notice retrograde and transposition have been placed inside the MAKE-OMN expression.

     

    (setq lh-2
          (make-omn
           :length rhythm 
           :pitch (gen-retrograde (pitch-transpose -24 p-seq))
           :velocity '(mf)
           :articulation art-stacc))


    Section C

    This section shows how the GEN-PAUSE function can control the play of silence in sections. Notice that GEN-PAUSE has to be applied to length and pitch. There's a new function present in this section: CHORD-INTERVAL-ADD. This makes possible a harmonisation into diads of the left hand part.

     

    (setq lhp-pause
          (gen-pause (chord-interval-add 
                      '((5 6 7 5) (4 8 9 7) (3 5 6 7))
                      (gen-retrograde
                       (pitch-transpose -24 p-seq)))
                      :section '(1 3)))

     

    Whereas in Section B an expression t-seq was created to produce an 'improvised' harmonisation using intervals in a range, CHORD-INTERVAL-ADD allows the composer to chose precise interval sets. Here's the  left hand part before and after using CHORD-INTERVAL-ADD:

     

    => ((c3 g2 fs2 cs2 c2) (c3 g2 fs2 cs2 c2)
        (c3 g2 fs2 cs2 c2) (c3 g2 fs2 cs2 c2) (c3 g2 fs2 cs2 c2))
    
    => ((c3f3 g2cs3 fs2cs3 cs2fs2 c2f2) (nil)
        (c3eb3 g2c3 fs2c3 cs2gs2 c2eb2) (nil) (c3e3 g2eb3 fs2eb3 cs2gs2 c2e2))


    Score

    ;; Section A
    (setf pitches '(c4 cs4 fs4 g4 c5))
    (setf p-seq (gen-repeat 5 (list pitches)))
    (setf map (gen-eval 5 '(gen-binary-remove 
                           (rnd-pick pitches) pitches) :seed 5))
    
    (setf p-seq-i (binary-map map pitches))
    (setf rhythm (binary-map map 'e))
    (setf p-sw (gen-swallow rhythm p-seq-i))
    (setf art-stacc (gen-repeat 5 (list '(- - - stacc))))
    
    (setq rh-1 (make-omn
                :length rhythm
                :pitch p-sw
                :velocity '(f)
                :articulation art-stacc))
    
    (setq lh-1 (make-omn 
                :length rhythm
                :pitch (pitch-transpose -24 p-seq)
                :velocity '(f)
                :articulation art-stacc ))
    
    ;; Section B
    (setf t-seq (assemble-seq
                 (gen-eval 5 '(pitch-transpose
                               (rnd-range 3 7) 
                               (mclist pitches)) :seed 67)))
    
    (setq t-sw (gen-swallow rhythm t-seq))
    
    (setf rh-mix 
          (gen-divide 4 
                      (pitch-mix
                       (list (flatten p-sw)
                             (flatten t-sw)))))
    
    (setq rh-2 (make-omn
                :length rhythm
                :pitch rh-mix 
                :velocity '(mf)
                :articulation art-stacc))
    
    (setq lh-2 (make-omn
                :length rhythm
                :pitch (gen-retrograde (pitch-transpose -24 p-seq))
                :velocity '(mf)
                :articulation art-stacc))
    
    ;; Section C
    (setq rhr-pause (gen-pause rhythm :section '(0 4)))
    (setq rhp-pause (gen-pause
                     (gen-retrograde rh-mix :section '(2))
                     :section '(0 4)))
    
    (setq lhr-pause (gen-pause rhythm :section '(1 3)))
    (setq lhp-pause (gen-pause
                     (chord-interval-add
                      '((5 6 7 5) (4 8 9 7) (3 5 6 7))
                      (gen-retrograde
                       (pitch-transpose -24 p-seq)))
                     :section '(1 3)))
    
    (setq rh-3 (make-omn
                :length rhr-pause
                :pitch rhp-pause
                :velocity '(mp)
                :articulation art-stacc))
    
    (setq lh-3 (make-omn
                :length lhr-pause
                :pitch lhp-pause  
                :velocity '(mf)
                :articulation art-stacc))
    
    (setq rh-ABCA (assemble-seq rh-1 rh-2 rh-3 rh-1))
    (setq lh-ABCA (assemble-seq lh-1 lh-2 lh-3 lh-1))
    
    (def-score lesson-20
               (:key-signature 'chromatic
                :time-signature '(5 8)
                :tempo '(q 80)
                :layout (piano-layout 'piano-rh 'piano-lh))
      
      (piano-rh    
       :omn rh-ABCA
       :channel 1
       :sound 'gm
       :program 'acoustic-grand-piano)  
      
      (piano-lh    
       :omn lh-ABCA)
      )


    Notation

    Screen Shot 2017-12-05 at 16.59.35.png

     

    Next page Lesson 21. Mapping, Substituting and Interleaving

    Go back to Reference page.


    Sign in to follow this  



×