Jump to content
  • Sign in to follow this  

    Lesson 16. Ambitus



    In an earlier piece we transposed the pitch row sequentially by its own intervals. Now we're doing the same but making a retrograde structure. To do this we have to use the keyword :flatten. Look at the difference without :flatten:

    (gen-retrograde p-transp) 
    => ((c5 g4 fs4 cs4 c4) (cs5 gs4 g4 d4 cs4)
        (fs5 cs5 c5 g4 fs4) (g5 d5 cs5 gs4 g4)
        (c6 g5 fs5 cs5 c5))


    . . . and with :flatten

    (setf r-transp (gen-retrograde p-transp :flatten t))
    => ((c6 g5 fs5 cs5 c5) (g5 d5 cs5 gs4 g4)
        (fs5 cs5 c5 g4 fs4) (cs5 gs4 g4 d4 cs4)
        (c5 g4 fs4 cs4 c4))


    Without :flatten, the contents of each sub-list are retrograded, but the sub-lists themselves maintain their original position. With :flatten set to t (true), the positions of all sublists have also been reversed.


    Now we'll use two different forms of the AMBITUS function. The Latin word ambitus means range. We're going to scale down the range of the p-transp lists to a lower octave. Look carefully at the difference in output with and without the keyword :flat-invert set:

    => ((c3 cs3 fs3 g3 c4) (cs3 d3 g3 gs3 ds3) . . .))
    => ((c3 cs2 fs2 g2 c3) (cs2 d2 g2 gs2 cs2) . . .))


    Next follows a striking interlude in 1/16ths made from the AMBITUS-SERIES function. Each of the 5/16 bars has a different range assigned to it. Notice how the note-lengths and dynamics are handled. Also, see how the interlude is assigned to the right hand (although in practise a pianist would use left and right). The left hand part needs to be paused. This is how it's done using the function GEN-PAUSE:

    (setf p-lh2 (gen-pause p-rh2 :section '(0 1 2 3 4)))


    What GEN-PAUSE does in this instance is to replace each of the five sub-lists (numbered 0 to 4) in p-rh2 with (nil).

    The dynamics are organised to create crescendos and diminuendos over 5 bar phrases. By using the function MCLIST we only need to write a flat list of dynamics, which will be bundled into lists associated with the five bars in each section:

    (setf dynamics (mclist '(p mp mf f ff)))
    => ((p) (mp) (mf) (f) (ff))


    (setf pitches '(c4 cs4 fs4 g4 c5))
    (setf p-transp (pitch-transpose (pitch-to-integer pitches) (gen-repeat 5 (list pitches))))
    (setf r-transp (gen-retrograde p-transp :flatten t))
    (setf c-ambitus (ambitus '(c2 c3) p-transp))
    (setf p-ambitus (ambitus '(c2 c3) p-transp :type :flat-invert))
    (setf s-ambitus (ambitus '((c2 c3) (b2 f3) (g3 cs4) (fs4 g5) (c4 c5)) p-transp))
    (setf lengths (span p-transp '(1/8)))
    (setf interlude (span s-ambitus '(1/16)))
    (setf dynamics (mclist '(p mp mf f ff)))
    (setq r-dynamics (mclist '(ff f mf mp p)))
    (setf p-rh1 (make-omn
                 :length lengths
                 :pitch p-transp
                 :velocity dynamics))
    (setf p-lh1 (make-omn
                 :length lengths
                 :pitch c-ambitus
                 :velocity dynamics))
    (setf p-rh2 (make-omn
                 :length interlude
                 :pitch s-ambitus
                 :velocity r-dynamics))
    (setf p-lh2 (gen-pause p-rh2 :section '(0 1 2 3 4)))
    (setf p-rh3 (make-omn
                 :length lengths
                 :pitch r-transp
                 :velocity dynamics))
    (setf p-lh3 (make-omn
                 :length lengths
                 :pitch p-ambitus
                 :velocity dynamics))
    (setf rh-1 (assemble-seq p-rh1 p-rh2 p-rh3))
    (setf lh-1 (assemble-seq p-lh1 p-lh2 p-lh3))
    (setf timesigs (get-time-signature rh-1 :group '((5))))
    (def-score lesson-16
               (:key-signature 'chromatic
                :time-signature timesigs
                :flexible-clef t
                :tempo 80
                :layout (piano-layout 'piano-rh 'piano-lh))
       :omn rh-1
       :channel 1
       :sound 'gm
       :program 'acoustic-grand-piano)
       :omn lh-1)


    Screen Shot 2017-12-05 at 13.41.31.png


    Next page Lesson 17. Working with Integers

    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...