Jump to content
  • Sign in to follow this  

    Lesson 27. Merging Parts and Sequencing Score-Scripts


    opmo



    Annotation

    For this score-script we change instruments: from piano to the classical guitar. This is the first movement of Nigel Morgan’s 4 Movements for Peace titled Invocation. The reason for including this is that its score-script includes the function MERGE-VOICES and the playing of multiple score-scripts.

    There are in fact three score-scripts in this file: part-1, 2 and 3. Organising your composition this way has many advantages as you can build the sections as separate score-scripts and when complete paste them together in a single file.

     

    The technique of composition used in Invocation is a little unusual in that most of the pitches played by the guitar are generated from fingering patterns.

     

    (setf E-string '(0 1 2 3 4))
    (setf D-string '(0 1 2 3 4)) 

     

    There is a precedent for this in the Autumn movement of Nigel Morgan’s large-scale guitar work Sense of Place. Part-1 produces a 2-part homophonic texture with a rhythm produced by LENGTH-WEIGHT and with repeated notes processed by FILTER-TIE:

     

    (setq rep-tie0 (filter-tie (list p-1&4 rw-1&4)))

     

    This function outputs lists of both pitch and length:

     

    => (gs4f3 e4e3 fs4d3 f4fs3 e4e3 f4d3 e4f3 . . .)
    => (1/8 1/8 -1/8 1/8 1/8 1/8 -1/8 -1/8 1/8 . . .)

     

    These lists are aligned inside the MAKE-OMN expression:

     

    (setf s14
          (make-omn 
           :pitch (1~ rep-tie0) 
           :length (2~ rep-tie0)))

     

    In Part-2 the homophony becomes polyphony. Although the generation of pitches is again from fingering positions the rhythm of each string is unique. Also the rhythmic 'gaps' in part-1 are replaced by an open-string diad. This is where LENGTH-REST-POSITION comes into its own - indicating the positions in the list that are rest-lengths:

     

    (setq p-1xi
          (position-replace 
           (length-rest-position rw-1i) 'g3 p-1i))
           
    (setq p-4xi
          (position-replace 
           (length-rest-position rw-4i) 'a2 p-4i))

     

    Again FILTER-TIE is used, this time with considerable effect, producing suspensions as here in the higher voice:

     

    => (e g3 e4 fs4 h_e g3 e gs4 . . .)

     

    Part-3 is homophonic like Part-1 but its pitch content comes from generating fingering positions on two different strings:

     

    (setf G-string '(0 1 2 3 4))
    (setf A-string '(0 1 2 3 4))

     

    It begins exactly like Part-1 with rhythmic gaps but then is restated with the texture developed by 'filling' these rhythmic gaps with an open-string diad:

     

    (setq p-1z
          (position-replace 
           (length-rest-position rw-3&5) 'e5d4 p-3&5))
    => (b3c3 g3b2 e5d4 gs3cs3 g3b2 gs3a2 e5d4 . . .)
    
    (setq  p-1v 
           (position-replace 
            (position-item 'e5d4 (1~ rep-tie01)) 'p (span r-3&5 '(f))))
    => (f f p f f f p f p f f f . . .)

     

    This diad on the guitar is a chord of harmonics and is simulated by assigning a lighter dynamic to its occurrence, as the expression above demonstrates.

    In Lesson 24 we saw how an ending was created with :start and :end settings. Note that in Invocation, each section has its own DEF-SCORE, which are used to structure the whole piece by calling on the three score definitions within COMPILE-SCORE:

     

    (compile-score
     '((invocation-1 :start 1 :end 8)
       (invocation-2 :start 1 :end 16)
       (invocation-3 :start 1 :end 16)
       (invocation-1 :start 1 :end 8)))


    Score

    ;; Invocation
    ;; Part I
    (setf E-string '(0 1 2 3 4))
    (setf D-string '(0 1 2 3 4))
    (setf s-1 (rnd-sample 32 E-string :seed 437))
    (setf s-4 (rnd-sample 32 D-string :seed 421))
    (setf p-1 (pitch-transpose 4 (integer-to-pitch s-1)))
    (setf p-4 (pitch-transpose -10 (integer-to-pitch s-4)))
    (setf p-1&4 (pitch-mix (list p-1 p-4)))
    (setf r-1&4 (span p-1&4 '(e)))
    (setf rw-1&4 (length-weight r-1&4 :weight '(2 1) :seed 45))
    (setq rep-tie0 (filter-tie (list p-1&4 rw-1&4)))
    (setf s14 (make-omn :pitch (1~ rep-tie0) :length (2~ rep-tie0)))
    
    (def-score invocation-1
               (:key-signature 'chromatic
                :time-signature '(2 4)
                :tempo 80)
    
      (guitar
       :omn s14
       :channel 1 :sound 'gm
       :program 'acoustic-guitar-nylon)
      )
    
    ;; Part II
    (setf Ei-string '(0 1 2 3 4))
    (setf Di-string '(0 1 2 3 4))
    (setf s-1i (rnd-sample 64 E-string :seed 437))
    (setf s-4i (rnd-sample 64 D-string :seed 421))
    (setf p-1i (pitch-transpose 4 (integer-to-pitch s-1i)))
    (setf p-4i (pitch-transpose -10 (integer-to-pitch s-4i)))
    (setf r-1&4i (span p-1i '(e)))
    (setf rw-1i (length-weight r-1&4i :weight '(2 1) :seed 45))
    (setq rw-4i (length-weight r-1&4i :weight '(3 1) :seed 451))
    (setq p-1xi (position-replace (length-rest-position rw-1i) 'g3 p-1i))
    (setq p-4xi (position-replace (length-rest-position rw-4i) 'a2 p-4i))
    (setf rep-tie4 (filter-tie (list p-4xi r-1&4i)))
    (setf rep-tie1 (filter-tie (list p-1xi r-1&4i)))
    (setf s1c (make-omn :pitch (1~ rep-tie1) :length (2~ rep-tie1)))
    (setf s4c (make-omn :pitch (1~ rep-tie4) :length (2~ rep-tie4)))
    
    (def-score invocation-2
               (:key-signature 'chromatic
                :time-signature '(2 4)
                :tempo 80
                :layout (guitar-down8-layout 'guitar))
      
      (guitar
       :omn (merge-voices s1c s4c)
       :channel 1
       :sound 'gm
       :program 'acoustic-guitar-nylon)
      )
    
    ;; Part III
    (setf G-string '(0 1 2 3 4))
    (setf A-string '(0 1 2 3 4))
    (setf s-3 (rnd-sample 32 G-string :seed 437))
    (setf s-5 (rnd-sample 32 A-string :seed 421))
    (setf p-3 (pitch-transpose -5 (integer-to-pitch s-3)))
    (setf p-5 (pitch-transpose -15 (integer-to-pitch s-5)))
    (setf p-3&5 (pitch-mix (list p-3 p-5)))
    (setf r-3&5 (span p-1&4 '(e)))
    (setf rw-3&5 (length-weight r-3&5 :weight '(2 1) :seed 45))
    (setq p-1z
          (position-replace 
           (length-rest-position rw-3&5) 'e5d4 p-3&5))
    
    (setq rep-tie0 (filter-tie (list p-3&5 rw-3&5)))
    (setq rep-tie01 (filter-tie (list p-1z r-3&5)))
    
    (setq p-1v (position-replace 
                (position-item 'e5d4 (1~ rep-tie01))
                'p (span r-3&5 '(f))))
    
    (setf s35 (make-omn
               :pitch (1~ rep-tie0)
               :length (2~ rep-tie0)))
    
    (setf harm '(- - harm -
                 - - harm
                 - harm -
                 - - harm
                 - - - harm
                 - - - -
                 - harm))
    
    (setf art-rest (gen-repeat 22 '-))
    (setf artic (flatten (list harm art-rest)))
    
    (setf s35i (make-omn
                :pitch (1~ rep-tie01)
                :length (2~ rep-tie01) 
                :velocity p-1v
                :articulation artic))
    
    (setq s2x (assemble-seq s35 s35i))
    
    (def-score invocation-3
               (:key-signature 'chromatic
                :time-signature '(2 4)
                :tempo 80)
    
      (guitar
       :omn s2x :channel 1
       :sound 'gm
       :program 'acoustic-guitar-nylon)
      )
    
    ;; Assemble score
    (compile-score
     '((invocation-1 :start 1 :end 8)
       (invocation-2 :start 1 :end 16)
       (invocation-3 :start 1 :end 16)
       (invocation-1 :start 1 :end 8))
     )


    Notation

    Screen Shot 2017-12-06 at 03.15.46.png

     

    Next page Lesson 28. Working with Libraries

    Go back to Reference page.


    Sign in to follow this  



×