Jump to content

Stephane Boussuge

Moderators
  • Posts

    1,066
  • Joined

  • Last visited

Everything posted by Stephane Boussuge

  1. 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 grp1, grp2 etc.. are like orchestration presets and can be (for example) stored in a library file to be recalled algorithmically. S.
  2. 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
  3. ;; Number of bars (setf size 12) ;;; Random weighted choice of pitches with emphasis on d4 gs4 abd as4 (setf pitch (gen-weight size '((c4 1)(cs4 1)(d4 2)(ds4 1)(e4 1)(f4 1)(fs4 1)(g4 1) (gs4 2)(a4 1)(as4 2)))) ;;; Slightly varied rythm pattern based on a random choice ;;; of rythmic cells varied by rest positionning. ;; rythmic cells definition (setf rcells '((s s s s q e e q)(e e e e e e e e)(s s e s s e s s s s s s s s))) ;; random choice of rythmic cells (setf rchoice (rnd-sample size rcells)) ;; Length definition, adding some rests (setf len (length-weight rchoice :weight '(3 1))) ;;; Pitch and length assembly into an omn phrase: (setf phrase1 (make-omn :pitch pitch :length len )) Happy Opusmodus exploration ! SB.
  4. You may use the gen-repeat-seq function for the repetitions. You can have a look also to omn-to-measure , it could be useful also in what you doing. Cheers S.
  5. Quartal example: (harmonic-progression '(1 2 3 4 5 6 7) '(d4 natural-minor) :size 4 :step 3 :base 1 ) Another example more complex: (setf row (rnd-row :type :pitch :transpose 2)) (setf chords1 (harmonic-progression (rnd-number 24 -6 6) row :size (rnd-sample 24 '(3 4 5 6)) :step (rnd-sample 24 '(1 2 3 (2 3)(1 3))) )) S.
  6. Somewhere on this forum, there is an example from Janusz on how to implement the seed in you own function... S.
  7. You may have a look to the function get-harmonic-path. You can decide the harmonic rhythm analysis you use fir this function with the parameter time. You can pass after the output of this function to pcs-analysis. S.
  8. OSC is already in Opusmodus but not documented. Janusz ? S.
  9. Dear Torsten, i will have a look to git installation when i will have a bit of time. Thank you for the information. best, Stéphane
  10. Hi Torsten, when evaluate your OMN-utils.lisp i get a: Error: There is no package named "TU" I would like to use your last version of edit-omn but it seem i need some other files (TU). Thanks S.
  11. Thanks Torsten, your edit-omn function is definitively super-mega useful !! I love it :-) S.
  12. Just for info, it will be more in "Opusmodus style" to write that this way, using make-omn function: (setf some-pitches (gen-repeat 145 'g4)) (setf some-lengths (span some-pitches '(e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e -e -e -e -e -e -e -e -e -e -e e e e e -e -e -e -e -e -e -e -e -e e e e e -e -e -e -e -e -e -e -e -e e -e - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - = = = = = = = = = = - - - - = = = = = = = = = - - - - = = = = = = = = = -))) ;(setf some-division '(12)) ;(setf length-div (gen-divide some-division some-lengths)) (setf part (make-omn :pitch some-pitches :length some-lengths )) (setf time-sig '(12 8)) (def-score time ( :key-signature 'chromatic :time-signature time-sig :tempo 112 :layout (clarinet-layout 'clarinet) ) (clarinet :omn part :channel 1 :sound 'gm :program 'clarinet )) S.
  13. for example if you need 3 bars of 3/4 and 2 of 6/8 you can write: :time-signature '((3 4 3)(6 8 2)) you can also separate your length material with gen-divide and get the time signature. Example here: (setf some-pitches (integer-to-pitch (gen-integer-step 0 64 '(2 1 2 3 -2 -1 -2 -1 -2)))) (setf some-lengths (rnd-sample (length some-pitches) '(e e -e e))) (setf some-division '(8 12 8 6 9)) (setf length-div (gen-divide some-division some-lengths)) (setf time-sig (get-time-signature length-div)) (def-score time ( :key-signature 'chromatic :time-signature time-sig :tempo 112 :layout (clarinet-layout 'clarinet) ) (clarinet :length length-div :pitch some-pitches :channel 1 :sound 'gm :program 'clarinet )) SB.
  14. Here's a small function from my toolbox i use very often for adding articulation on already generated OMN material. Also useful for adding legato slurs. Link to video example: ;;; ============================================= ;;; ARTICULATION-MAP-OMN ;;; AJOUTE DES ARTICULATIONS SUR DES LISTES OMN ;;; BASÉES SUR DU PATTERN MATCHING. ;;; ============================================= (defun articulation-map-omn (map omn &key (otherwise '-)) (do-verbose ("articulation-map-omn") (let ((plist (disassemble-omn omn))) (setf (getf plist :articulation) (pattern-map map (getf plist :length) :otherwise otherwise :swallow t)) (apply 'make-omn plist)))) #| USAGE (setf mat '((q c4 p d4 e e4 f4 s g4 f a4 g4 f4 q e4) (e d4 mp c4 s d4 e4 f4 e4 q d4 e c4 b3) (h a3 f -h))) (setf prules '(((s s s) (leg leg leg)) ((s s) (leg leg)) ((s e) (- -)) ((s q) (- stacc)) ((q) (stacc)) ((e) (-)))) (setf out (articulation-map-omn prules mat)) |# SB.
  15. Hi Torsten, i get a: Error: There is no package named "TU" i like the metric-shift function (not only), i will add it to my toolbox. Thx S.
  16. Hi Torsten, very good and very interesting !! thank you for sharing this, i enjoy it greatly ! All the best S.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy