Jump to content
  • Sign in to follow this  

    Lesson 12. Pitch Variation and Articulation



    This piece in A B A structure sets side-by-side two different ways of generating pitch material for the right hand.

    The first we’ve met before:

    (setf line-rnd (gen-eval 5 '(rnd-sample (rnd-range 3 5) line) :seed 41))
    => ((g4 cs4 c5 cs4) (fs4 c5 fs4 cs4) (c5 g4 g4 fs4 c4)
        (fs4 c5 g4 c5) (c4 c4 cs4))


    The second is using a generation function able to produce Markov chains. 

    (setf line-rd (rnd-sample (length (flatten line-rnd)) line :seed 35))
    => (fs4 c5 fs4 cs4 c4 c5 c5 g4 g4 fs4 c4
        c5 c5 fs4 c4 fs4 c5 c4 cs4 c4)


    GEN-MARKOV takes the output of randomizing our scale line and reorders it to highlight the inner patterns of line-rnd.

    (setf line-markov (encode-seq (gen-markov line-rd :seed 35))) 
    => (c4 c5 c5 g4 fs4 c5 fs4 c4 c5 c5 g4
        fs4 c5 fs4 c4 fs4 c4 cs4 c4 cs4)


    We need to match the line-rnd with line-markov. Although we could simple count the number of pitches in line-rnd it’s more accurate, and certainly quicker and easier in a larger list, to use GET-COUNT

    (get-count line-rnd :sum t) 
    => 20


    This piece features the use of articulation to enhance section B:

    (setf no-artic (gen-repeat 5 (list '(-)))) 


    '(-) this means no articulation, or:

    => ((-) (-) (-) (-) (-))
    (setq staccato (gen-repeat 5 (list '(stacc))))
    => ((stacc) (stacc) (stacc) (stacc) (stacc))
    (setf articulations-ABA (append no-artic staccato no-artic))
    => ((-) (-) (-) (-) (-)
        (stacc) (stacc) (stacc) (stacc) (stacc)
        (-) (-) (-) (-) (-))


    When made into an OMN list with MAKE-OMN the articulation looks like this:

    ((e g4 f cs4 c5 cs4) (e fs4 p c5 fs4 cs4)
     (e c5 f g4 g4 fs4 c4) (e fs4 p c5 g4 c5)
     (e c4 ff c4 cs4) (e c4 p stacc c5 stacc c5 stacc g4 stacc)
     (e fs4 mp stacc c5 stacc fs4 stacc c4 stacc)
     (e c5 p stacc c5 stacc g4 stacc fs4 stacc c5 stacc)
     (e fs4 mp stacc c4 stacc fs4 stacc c4 stacc)
     (e cs4 mf stacc c4 stacc cs4 stacc) (e g4 f cs4 c5 cs4)
     (e fs4 p c5 fs4 cs4) (e c5 f g4 g4 fs4 c4)
     (e fs4 p c5 g4 c5) (e c4 ff c4 cs4))

    Remember, by just repeating the articulation stacc the note-length, pitch and dynamic are automatically repeated, as above.


    (setf line '(c4 cs4 fs4 g4 c5))
    (setf bass (pitch-transpose -24 line))
    (setf line-rnd (gen-eval 5 '(rnd-sample (rnd-range 3 5) line) :seed 41))
    (setf line-rd (rnd-sample (get-count line-rnd :sum t) line :seed 35))
    (setf line-markov (gen-markov line-rd :seed 35))
    (setf line-markov-d (span line-rnd line-markov))
    (setf bass-line (span line-rnd bass))
    (setf bass-markov (pitch-transpose -18 (span line-markov-d line-rnd)))
    (setf bass-select (filter-first 1 bass-line))
    (setf bass-markov (filter-first 1 bass-markov))
    (setf rhythm (span line-rnd '(e)))
    (setf bass-rhythm (gen-repeat 3 (mclist (get-span rhythm))))
    (setf dynamics (mclist '(f p f p ff)))
    (setf dyn-spanned (span line-rnd dynamics))
    (setf dyn-markov (mclist '(p mp p mp mf)))
    (setf dyn-markov-spanned (span line-markov-d dyn-markov))
    (setf ABA-rh (assemble-seq
    (setf ABA-lh (assemble-seq
    (setf rhyABA (assemble-seq (gen-repeat 3 rhythm)))
    (setf rhyABAb bass-rhythm)
    (setf dynABA (assemble-seq
    (setf no-artic (gen-repeat 5 (list '(-))))
    (setq staccato (gen-repeat 5 (list '(stacc))))
    (setf articulations-ABA (assemble-seq no-artic staccato no-artic))
    (setf line-1 (make-omn 
                  :length rhyABA
                  :pitch ABA-rh
                  :velocity dynABA
                  :articulation articulations-ABA))
    (setf bass-1 (make-omn 
                  :length rhyABAb
                  :pitch ABA-lh
                  :velocity dynABA))
    (setf ts-list (get-time-signature line-1))
    (def-score lesson-12
               (:key-signature 'chromatic
                :time-signature ts-list
                :tempo 100
                :layout (piano-layout 'piano-rh 'piano-lh))
       :omn line-1
       :channel 1
       :sound 'gm
       :program 'acoustic-grand-piano)  
       :omn bass-1)


    Screen Shot 2017-12-05 at 12.06.11.png


    Next page Lesson 13. Working with Binary Rhythmics

    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

    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

    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

    CLM Examples 0
  • Create New...