Jump to content
  • Sign in to follow this  

    Lesson 26. Chords to Parts


    opmo



    Annotation

    A Piano Trio

    This score-script returns to Lesson 18 to create a version of the chorale, this time for piano trio. So the score opens with an opportunity to see how DEF-SOUND-SET is used to set up a violin and a cello part. This is more than setting a program change: it includes the mapping of program changes to reflect the string articulations of arco, pizz, staccato and tremolo.

     

    Most of the score-script remains the same until we get to the articulation and remix expressions:

    (setq art-1 
          '((arco arco arco arco arco+fermata)
            (stacc stacc stacc stacc stacc+fermata)
            (trem trem trem trem trem+fermata)
            (pizz pizz pizz pizz pizz+fermata)
            (arco arco arco arco arco+fermata)))

     

    Notice how the combining of arco and fermata requires a joining together as arco+fermata

    (setf vn-1 (pitch-demix 1 rh-ab))
    (setf vc-1 (pitch-demix 2 lh-abt))

     

    In 'remixing' the right and left hand diads played by the piano to a single part we indicate which of the two notes in the diads should be de-mixed. The original expression is this:

    (setf rh-ab 
        (pitch-mix (list (integer-to-pitch rh-a)
                        (integer-to-pitch rh-b))))
    => ((bb4eb4 bb4e4 bb4f4 gs4cs4 bb4f4 . . .)
    
    (setf vn-1 (pitch-demix 1 rh-ab))
    => (bb4 bb4 bb4 gs4 bb4 gs4 bb4 b4 c5 . . .)

     

    So setting the position value to 1 separates the treble from the alto voice in the diad and outputs the treble.

    To get the cello part we use the same approach, but setting the position value to 2 separates the tenor from the bass voice in the diad and outputs the bass.

     

    The only remaining tasks are to MAKE-OMN for both new parts:

    (setf vn
          (make-omn 
           :length rhy-1
           :pitch vn-1
           :velocity dyn-1
           :articulation art-1))
           
    (setf vc
          (make-omn 
           :length rhy-1
           :pitch vc-1
           :velocity dyn-1
           :articulation art-1))

     

    and create a new DEF-SCORE expression for violin and cello:

    (violin
     :omn vn 
     :channel 2
     :sound 'gm-violin)
     
    (violoncello
     :omn vc
     :sound 'gm-cello
     :channel 3)


    Score

    ;; Sound Sets
    (def-sound-set GM-violin
       :programs
      (:group violin 
              arco 40
              trem 44
              pizz 45))
    
    (def-sound-set GM-cello
       :programs
      (:group violin
              arco 42
              trem 44
              pizz 45))
    
    ;; Material
    (init-seed 2)
    
    (setf
     row-1 '(12 11 10 9 8)
     row-2 '(7 8 9 10 11)
     row-3 '(6 7 6 7 6)
     row-4 '(1 2 3 4 5))
    
    (setf
     r-1 (rnd-pick (list row-1 row-1 row-1 row-2 row-3))
     r-2 (rnd-pick (list row-2 row-3 row-3 row-4 row-4))
     r-3 (rnd-pick (list row-1 row-1 row-2 row-2 row-3))
     r-4 (rnd-pick (list row-2 row-3 row-4 row-4 row-4)))
    
    (setq
     rh-a (rnd-sample 25 r-1)
     rh-b (rnd-sample 25 r-2))
    
    (setf
     lh-a (rnd-sample 25 r-3)
     lh-b (rnd-sample 25 r-4))
    
    (setf rh-ab (pitch-mix
                 (list (integer-to-pitch rh-a)
                       (integer-to-pitch rh-b))))
    
    (setf lh-ab (pitch-mix
                 (list (integer-to-pitch lh-a)
                       (integer-to-pitch lh-b))))
    
    (setf lh-abt (pitch-transpose -12 lh-ab))
    (setf rhy (span rh-ab '(q)))
    (setf rhy-1 (gen-repeat 5 (list '(q q q q q))))
    (setf ferm (gen-repeat 5 (list '(- - - - fermata2))))
    (setq dyn-1 '((f mp< < < ff) (mf f mp> > pp)
                  (p< < mf mp mf) (f ff f> > mp)
                  (mf p mp> > pp)))
    
    (setq art-1 '((arco - - - fermata)
                  (stacc stacc stacc stacc stacc+fermata)
                  (trem trem trem trem trem+fermata)
                  (pizz - - - fermata)
                  (arco - - - fermata)))
    
    (setf vn-1 (pitch-demix 1 rh-ab))
    (setf vc-1 (pitch-demix 2 lh-abt))
    
    (setf vn (make-omn 
              :length rhy-1
              :pitch vn-1
              :velocity dyn-1
              :articulation art-1))
    
    (setf vc (make-omn 
              :length rhy-1
              :pitch  vc-1
              :velocity dyn-1
              :articulation art-1))
    
    (setf rh-1 (make-omn 
                :length rhy-1
                :pitch rh-ab
                :velocity dyn-1
                :articulation ferm))
    
    (setf lh-1 (make-omn 
                :length rhy-1
                :pitch lh-abt
                :velocity dyn-1
                :articulation ferm))
    
    (def-score lesson-26
               (:key-signature 'chromatic
                :time-signature (get-time-signature vn)
                :tempo '(q 70)
                :layout (list
                         (bracket-group
                          (violin-layout 'violin)
                          (violoncello-layout 'violoncello))
                         (piano-layout 'piano-rh 'piano-lh)))
      
      (violin :omn vn :channel 2 :sound 'gm-violin :pan 20)
      (violoncello :omn vc :channel 3 :sound 'gm-cello :pan 110) 
      (piano-rh :omn rh-1 :channel 1 :sound 'gm :program 'acoustic-grand-piano :pan 64)  
      (piano-lh :omn lh-1)
      )
    ;; Setting random back to NIL
    (init-seed nil)


    Notation


    Screen Shot 2017-12-06 at 03.08.21.png

     

    Next page Lesson 27. Merging Parts and Sequencing Score-Scripts

    Go back to Reference page.

    Edited by opmo


    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
  • CLM Installation

    Contents CLM Installation Command Line Tools Load and Compile Instruments CLM Installation Common Lisp Music, by William Schottstaedt is a powerful sound synthesis language implemented in Lisp and C. CLM is essentiall

    opmo
    opmo
    CLM Examples 0
×
×
  • Create New...