Jump to content
Sign in to follow this  
Stephane Boussuge

Group orchestration / instrumentation example

Recommended Posts

Hi,

An example of group orchestration.

I first create some binary représentation of some group of instruments and apply this groups with do-timeline:

;;; Parameters
(setf size 12)

;;; Length generation
(setf len1 (euclidean-rhythm  
            (gen-repeat size '(16))
            1 12 's :type 2))

(setf len2 (euclidean-rhythm  
            (gen-repeat size '(16))
            1 12 's :type 2))

(setf len3 (euclidean-rhythm  
            (gen-repeat size '(16))
            1 12 's :type 2))

(setf len4 (euclidean-rhythm  
            (gen-repeat size '(16))
            1 12 's :type 2))

;;; Pitch generation
(setf pmat (gen-divide 8 (vector-to-pitch '(c3 c5)(gen-white-noise 32))))

(setf pch1 (pitch-transpose 12 (rnd-sample size pmat)))
(setf pch2 (pitch-transpose 8 (rnd-sample size pmat)))
(setf pch3 (pitch-transpose 0 (rnd-sample size pmat)))
(setf pch4 (pitch-transpose -24 (rnd-sample size pmat)))

;;; Global dynamics
(setf dyna (mclist (pink-noise-sample 64 '(pp p mp mf f ff))))

;;; OMN assembly
(setf line1 (make-omn
             :pitch pch1
             :length len1
             :velocity dyna))

(setf line2 (make-omn
             :pitch pch2
             :length len2
             :velocity dyna))

(setf line3 (make-omn
             :pitch pch3
             :length len3
             :velocity dyna))

(setf line4 (make-omn
             :pitch pch4
             :length len4
             :velocity dyna))

(setf flute line1)
(setf oboe line2)
(setf clarinet line3)
(setf bassoon line4)

;;; Orchestration and post processing
;; Ambitus
(setf flute (ambitus '(g4 c6) flute))
(setf oboe (ambitus '(d4 d5) oboe))
(setf clarinet (ambitus '(c4 g5) clarinet))
(setf bassoon (ambitus '(c2 g3) bassoon))

;; Re-barring
(setf master-meters '(4/4))

(setf flute (omn-to-measure flute master-meters))
(setf oboe (omn-to-measure oboe master-meters))
(setf clarinet (omn-to-measure clarinet master-meters))
(setf bassoon (omn-to-measure bassoon master-meters))

;; Mute / play
(setf olen (length flute))
;(setf otime (rnd-sample 8 '(wwww www ww w h w ww www)))
(setf otime 1) 

;; Group orchestration
(setf grp1 '(1 1 0 0))
(setf grp2 '(1 1 1 0))
(setf grp3 '(1 1 1 1))
(setf grp4 '(1 0 1 1))
(setf grp5 '(0 0 1 1))
(setf grp6 '(1 1 0 1))
(setf grp7 '(1 0 1 1))

(setf i-list '(grp1 grp2 grp3 grp4 grp5 grp6 grp7))
(setf orchestration (rnd-sample olen i-list))
(setf orch-proc1 (binary-invert (apply-eval orchestration)))

(setf instrumentation (matrix-transpose orch-proc1))

(do-timeline2
 '(flute oboe clarinet bassoon)
 instrumentation
 '(gen-pause x) :time otime)

(setf ts (get-time-signature flute))

(def-score group-orch-example
           (:title "Group orch example "
            :composer "S.Boussuge"
            :copyright "2017 s.boussuge "
            :key-signature 'chromatic
            :time-signature ts
            :tempo 88
            :layout (list
                     (bracket-group
                      (flute-layout 'flute)
                      (oboe-layout 'oboe)
                      (clarinet-layout 'clarinet)
                      (bassoon-layout 'bassoon))))
  
  (flute
   :omn flute
   :channel 1
   :sound 'gm
   :program 'flute
   :volume 95
   :pan 70
   :controllers (91 '(52)))
  
  (oboe
   :omn oboe
   :channel 2
   :sound 'gm
   :program 'oboe
   :volume 95
   :pan 54
   :controllers (91 '(55)))
  
  (clarinet
   :omn clarinet
   :channel 3
   :sound 'gm
   :program 'clarinet
   :volume 95
   :pan 60
   :controllers (91 '(57)))
  
  (bassoon
   :omn bassoon
   :channel 4
   :sound 'gm
   :program 'bassoon
   :volume 95
   :pan 70
   :controllers (91 '(57)))
  )

SB.

 

Group & Orchestration.opmo

 

Share this post


Link to post
Share on other sites

Just helping others to read this code: the key data here are the variables after the comment ;; Group orchestration. Each variable grp1, grp2, etc. set for each part in a single bar whether that part should play in the end or not. The order of those groups (bars specifying which voice is playing) is then randomised. 

 

Best,

Torsten

Share this post


Link to post
Share on other sites

 

I am a bit overbooked actually and didn't took the time to comment it correctly, but you've made it :-)

Thank you Torsten !

 

In fact the variables grp1grp2 etc.. are like orchestration presets and can be (for example) stored in a library file to be recalled algorithmically.

S.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×