Jump to content

Recommended Posts

Hello,

 

Here's an example of a possible way for achieve group instrumentation.

The idea is to create names of instrumental groups and extract some binary list from this groups

for using in do-timeline2 function for apply the instrumentation.

 

The score is also attached to this post.

;;;---------------------------------------------------------
;;; GROUP INSTRUMENTATION EXAMPLE
;;;---------------------------------------------------------
(setf size 12)

;;; Basic Pitch material generation
(setf pmat (integer-to-pitch (rnd-number 24 -4 16)))

;;; Global velocity definition
(setf gvel (rnd-sample size '((pp)(p)(mp)(mf)(f))))

;;; OMN material for each instrument
(setf flute (make-omn
             :pitch (pitch-transpose 
                     12
                     (rnd-sample-seq 
                      (rnd-number size 2 8) 
                      (gen-repeat 6 (list pmat))))
             
             :length (euclidean-rhythm 
                      (gen-repeat size '(16))
                      1 16 's :type '(2))
             
             :velocity gvel
             ))

(setf clarinet (make-omn
                :pitch (pitch-transpose 
                        7
                        (rnd-sample-seq 
                         (rnd-number size 2 8) 
                         (gen-repeat 6 (list pmat))))
                
                :length (euclidean-rhythm 
                         (gen-repeat size '(16))
                         1 16 's :type '(2))
                
                :velocity gvel
                ))

(setf violin (make-omn
              :pitch (pitch-transpose 
                      10
                      (rnd-sample-seq 
                       (rnd-number size 2 8) 
                       (gen-repeat 6 (list pmat))))
              
              :length (euclidean-rhythm 
                       (gen-repeat size '(16))
                       1 8 's :type '(2))
              
              :velocity gvel
              ))


(setf violoncello (make-omn
                   :pitch (pitch-transpose 
                           -12
                           (rnd-sample-seq 
                            (rnd-number size 2 8) 
                            (gen-repeat 6 (list pmat))))
                   
                   :length (euclidean-rhythm 
                            (gen-repeat size '(16))
                            1 8 's :type '(2))
                   
                   :velocity gvel
                   ))


(setf piano-rh (make-omn
                :pitch (pitch-transpose 
                        4
                        (rnd-sample-seq 
                         (rnd-number size 2 8) 
                         (gen-repeat 6 (list pmat))))
                
                :length (euclidean-rhythm 
                         (gen-repeat size '(16))
                         1 8 's :type '(2))
                
                :velocity gvel
                ))

(setf piano-lh (make-omn
                :pitch (pitch-transpose 
                        -17
                        (rnd-sample-seq 
                         (rnd-number size 2 8) 
                         (gen-repeat 6 (list pmat))))
                
                :length (euclidean-rhythm 
                         (gen-repeat size '(16))
                         
                         1 4 's :type '(2))
                :velocity gvel
                ))

;;; GROUP INSTRUMENTATION
;;; the main idea is to generate some binary list
;;; based on the interpretation of "instrumental textures or group names).
;; INSTRUMENTAL GROUPS DEFINITION
(setf texture1 '(flute clarinet))
(setf texture2 '(flute violin))
(setf texture3 '(flute clarinet violoncello piano-rh piano lh))
(setf texture4 '(clarinet violin violoncello))
(setf texture5 '(violin violoncello piano-rh piano-lh))
(setf texture6 '(flute))

(setf orch-template '(flute clarinet violin violoncello
                            piano-rh piano-lh
                            ))

;; utility function definition
(defun binary-orch1 (orch-template groups)
(loop for i in orch-template
  collect (if (member i groups) 0 1)))

;; main function
(defun binary-orch (orch-template groups)
  (mapcar (lambda(x) (binary-orch1  orch-template x))
        groups))  

;; group order choice
(setf orchestration1 (apply-eval 
                     (rnd-sample
                      size
                      '(
                        texture1
                        texture2 
                        texture3 
                        texture4 
                        texture5 
                        texture6
                        ))))
                                        
;; generate binary from group order                                 
(setf binary-from-orch (binary-orch
                     orch-template
                     orchestration1
                     ))

;; apply the orchestration
(do-timeline2
'(flute clarinet violin violoncello piano-rh piano-lh)
(matrix-transpose binary-from-orch)
 '(gen-pause x) 
)

;;;---------------------------------------------------------
;;; Score and Layout
;;;---------------------------------------------------------

(def-score pierrot-ensemble
           (:title "Title"
            :composer "Composer"
            :copyright "Copyright ©"
            :key-signature 'chromatic
            :time-signature '((1 1 1 1) 4)
            :tempo 71
            :layout (list
                     (bracket-group
                      (flute-layout 'flute)
                      (clarinet-layout 'clarinet)
                      (violin-layout 'violin)
                      (violoncello-layout 'violoncello))
                     (piano-layout 'piano-rh 'piano-lh)))
  
  (flute
   :omn flute
   :channel 1
   :sound 'gm
   :program 'flute
   :volume 95
   :pan 70
   :controllers (91 '(52))
   )
  
  (clarinet
   :omn clarinet
   :channel 3
   :sound 'gm
   :program 'clarinet
   :volume 95
   :pan 60
   :controllers (91 '(57))
   )

  (violin
   :omn violin
   :channel 14
   :sound 'gm
   :program 'violin
   :volume 100
   :pan 16
   :controllers (91 '(48))
   )

  (violoncello
   :omn violoncello
   :channel 15
   :sound 'gm
   :program 'cello
   :volume 90
   :pan 95
   :controllers (91 '(60))
   )

  (piano-rh
   :omn piano-rh
   :channel 7
   :sound 'gm
   :program 'acoustic-grand-piano
   :volume 100
   :pan 64
   :controllers (91 '(60))
   )

  (piano-lh
   :omn piano-lh
   :channel 8
   :sound 'gm
   :program 'acoustic-grand-piano
   :volume 100
   :pan 64
   :controllers (91 '(60))
   )
  )

 

 

SB.

ExempleForumInstrumentation.opmo

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Topics

    • By born
      Is there a function like group-list in PWGL:
       
      SYSTEM GROUP-LST   (LIST GROUP-LENS):
      groups list into subsequnces, where group-lens indicates
      the length of each sublist. group-lens can be a number or a list of numbers.
      If list is not exhausted by group-lens, the last value of
       group-lens will be used as a constant until list has been exhausted.
       
      (group-lst lis '(1 2 3 4 5 6 7 8 9 10) '(2 3 5)) ; => ((1 2) (3 4 5) (6 7 8 9 10))
      (group-lst lis '(1 2 3 4 5 6 7 8 9 10) '(2 3 4)) ; => ((1 2) (3 4 5) (6 7 8 9) (10))
       
       
       
    • By Stephane Boussuge
      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
       
×
×
  • Create New...