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  



  • Introduction to OMN the language

    OMN is designed as a scripting language for musical events. It’s not about sounds themselves, it is about their control and organisation in a musical composition. As a linear script rather than a graphic stave, musical events can be transformed, extended, reorganised by powerful computer algorithms. Some sequencers and score writers provide basic algorithms, but they do not represent the way composers now think about the process of music composition. Composing has become such a multi-faceted pro

    opmo
    opmo
    OMN The Language 0
  • Introduction to Opusmodus

    Contents A Contemporary Language for Making Music The Parametric World of Music The Parametric Instrument Learning Opusmodus : A Strategy Important Questions: Necessary Answers

    opmo
    opmo
    Tutorial Guide 0
×
×
  • Create New...