Jump to content

Stephane Boussuge

Moderators
  • Posts

    1,059
  • Joined

  • Last visited

Everything posted by Stephane Boussuge

  1. Hi, Attached is a simple example of using spectra from a sound mapped on the content of a piece for woodwinds. SB. Spectral-remap1.opmo
  2. i think POSITION-INSERT can do what you want. Example: (position-insert '((2 3 4)) '((a d a)) '((a (d) c))) => ((a (d) a d a c)) (position-insert '((2 3 4)) '(((a d a))) '((a (d) c))) => ((a (d) (a d a) (a d a) (a d a) c)) (position-insert '(2 3 4) '(((a d a))) '((a (d) c))) => ((a (d) (a d a) c)) Please, have a look to the documentation of POSITION-INSERT and to my example and let me know if it's works for your need. SB.
  3. Something like that using conditionnal "if" : (defun consxp (rang item lis &key (option1 a) (option2 a)) ...... (cond ( ( and ( listp item ) (hassublistp oldlist )) (if (equal option1 a) (append (list-diff oldlist newlist ) (list item) (nthcdr rang oldlist )) (append (list-diff oldlist newlist ) item (nthcdr rang oldlist )))) (( and ( atom item ) (hassublistp oldlist )) (if (equal option2 a) (append (list-diff oldlist newlist ) (cons (list item) (nthcdr rang oldlist )))) (append (list-diff oldlist newlist ) (cons item (nthcdr rang oldlist )))) ........
  4. Hi, i've made an example of song generator/constructor for one of my Opusmodus student. I share it here if it could be useful to somebody. SB. SongConstructExample.opmo
  5. A better and more refined version. Attached, the Final score (from Dorico but first imported into Sibelius and after to Dorico because Dorico won't recall the opmo dynamics marks...). ;;; UTILITY ;;; ------------------------------------------------------------------------------ ;;; GEN-PITCH-LINE ;;; Fonction de génération de hauteurs basées sur une conversion de vecteur de bruit ;;; avec un grand choix de type de bruit, taux de compression du vecteur, filtrage des répétitions et ambitus. (defun gen-pitch-line (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat (type :white)) (let (pitches) (do-verbose ("gen-pitch-line") (rnd-seed seed) (labels ((white-or-pink (nb-pitch seed type) (if (eq type ':pink) (gen-pink-noise nb-pitch :seed seed) (gen-white-noise nb-pitch :seed seed :type (if (eq type ':white) :normal type)))) (process (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat type) (setf pitches (vector-to-pitch ambitus (vector-smooth compress (white-or-pink nb-pitch seed type)))) (when filter-repeat (setf pitches (gen-trim nb-pitch (filter-repeat filter-repeat pitches)))) pitches) ) (process nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type type))))) ;;;--------------------------------------------------------- ;;; Parameters ;;;--------------------------------------------------------- ;;; Global size (setf size 42) ;;; Global random seed init (init-seed 392) ;;; Harmonic content definition ;; Base row (setf row (rnd-row :type :pitch :transpose 2)) ;; Extract scales from row (setf sc (gen-chord 12 7 7 0 0 (gen-trim 14 row))) ;; Harmonic rhythm to apply for the piece (setf hry '(4 4 2 2 1 1 2 2 3 3)) ;;; Generation of rhythmic cells reservoir (setf ryres (euclidean-rhythm (gen-trim 8 '(16)) '(1) '(16) 's :type 2 )) ;;; Generation of pitch contours reservoir (setf pres (gen-divide 16 (gen-pitch-line 64 :compress 0.24))) ;;; 2 global control vectors (setf vc1 (gen-white-noise size)) (setf vc2 (gen-white-noise size)) ;;; Choose pitch in pitch reservoir based on vector (setf pch1 (vector-map pres vc1)) (setf pch2 (pitch-transpose -12 (vector-map pres vc2))) ;;; Choose rhythmic cells in rhythm reservoir based on control vector (setf r1 (vector-map ryres vc1)) (setf r2 (vector-map ryres vc2)) ;;; definition of dynamics and articulation reservoir (setf bvel '((pp)(p)(mp)(mf)(f)(ff))) (setf bart '((-)(-)(-)(marc)(-)(stacc)(-)(-))) ;;; Choose dynamics based on control vector (setf v1 (vector-map bvel vc1)) ;;; Choose articulation based on control vector (setf art1 (vector-map bart vc1)) (setf art2 (vector-map bart vc2)) ;;; Chordize pitch when length = 1/4 or 1/2 (setf chp1 (length-chordize-map '((1/4 2)(1/2 2)) pch1 r1 )) (setf chp2 (length-chordize-map '((1/4 2)(1/2 2)) pch2 r2 )) ;;; OMN assembly and harmonic remapping with tonality map whith harmonic rhythm (:time hry) (setf p1a (filter-tie (ambitus-chord 12 (tonality-map (mclist sc) (chord-interval-replace '(1 2) '(4 8) (make-omn :pitch chp1 :length r1 :velocity v1 :articulation art1 )) :time hry)))) (setf p1b (ambitus '(c2 c4) (filter-tie (ambitus-chord 12 (tonality-map (mclist sc) (chord-interval-replace '(1 2) '(4 8) (make-omn :pitch chp2 :length r2 :velocity v1 :articulation art2 )) :time hry))))) ;;; Coda chords (setf p2a '((w eb5a5 f))) (setf p2b '((w d4bb4 f))) ;;; Assemble part1 and part2 (coda) (setf piano-rh (assemble-seq p1a p2a)) (setf piano-lh (assemble-seq p1b p2b)) ;;;--------------------------------------------------------- ;;; Score and Layout ;;;--------------------------------------------------------- (def-score snippet (:title "Snippet for Piano" :composer "S.Boussuge" :copyright "Copyright © 2016 s.boussuge " :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 100 :layout (piano-solo-layout 'piano-rh 'piano-lh)) (piano-rh :omn piano-rh :channel 1 :sound 'gm :program 'acoustic-grand-piano :volume 100 :pan 64 :controllers (91 '(48)) ) (piano-lh :omn piano-lh :channel 2 :controllers (91 '(48)) ) ) SB. SnippetForPiano Partition complète.pdf
  6. Hi, here's a small piece for piano as an example of different process like tonality mapping, harmonic rhythm, rhytm and pitch cells etc.. ;;; UTILITY ;;; ------------------------------------------------------------------------------ ;;; GEN-PITCH-LINE ;;; Fonction de génération de hauteurs basées sur une conversion de vecteur de bruit ;;; avec un grand choix de type de bruit, taux de compression du vecteur, filtrage des répétitions et ambitus. (defun gen-pitch-line (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat (type :white)) (let (pitches) (do-verbose ("gen-pitch-line") (rnd-seed seed) (labels ((white-or-pink (nb-pitch seed type) (if (eq type ':pink) (gen-pink-noise nb-pitch :seed seed) (gen-white-noise nb-pitch :seed seed :type (if (eq type ':white) :normal type)))) (process (nb-pitch &key (compress 1) (ambitus '(c4 c6)) seed filter-repeat type) (setf pitches (vector-to-pitch ambitus (vector-smooth compress (white-or-pink nb-pitch seed type)))) (when filter-repeat (setf pitches (gen-trim nb-pitch (filter-repeat filter-repeat pitches)))) pitches) ) (process nb-pitch :compress compress :ambitus ambitus :filter-repeat filter-repeat :seed (seed) :type type))))) ;;;--------------------------------------------------------- ;;; Parameters ;;;--------------------------------------------------------- ;;; Global size (setf size 42) ;;; Global random seed init (init-seed 392) ;;; Harmonic content definition ;; Base row (setf row (rnd-row :type :pitch :transpose 2)) ;; Extract scales from row (setf sc (gen-chord 12 7 7 0 0 (gen-trim 14 row))) ;; Harmonic rhythm to apply for the piece (setf hry '(4 4 2 2 1 1 2 2 3 3)) ;;; Generation of rhythmic cells reservoir (setf ryres (euclidean-rhythm (gen-trim 8 '(16)) '(1) '(16) 's :type 2 )) ;;; Generation of pitch contours reservoir (setf pres (gen-divide 16 (gen-pitch-line 64))) ;;; 2 global control vectors (setf vc1 (gen-white-noise size)) (setf vc2 (gen-white-noise size)) ;;; Choose pitch in pitch reservoir based on vector (setf pch1 (vector-map pres vc1)) (setf pch2 (pitch-transpose -12 (vector-map pres vc2))) ;;; Choose rhythmic cells in rhythm reservoir based on control vector (setf r1 (vector-map ryres vc1)) (setf r2 (vector-map ryres vc2)) ;;; definition of dynamics and articulation reservoir (setf bvel '((pp)(p)(mp)(mf)(f)(ff))) (setf bart '((-)(-)(-)(marc)(-)(stacc)(-)(-))) ;;; Choose dynamics based on control vector (setf v1 (vector-map bvel vc1)) (setf v2 (vector-map bvel vc2)) ;;; Choose articulation based on control vector (setf art1 (vector-map bart vc1)) (setf art2 (vector-map bart vc2)) ;;; Chordize pitch when length = 1/4 or 1/2 (setf chp1 (length-chordize-map '((1/4 2)(1/2 2)) pch1 r1 )) (setf chp2 (length-chordize-map '((1/4 2)(1/2 2)) pch2 r2 )) ;;; OMN assembly and harmonic remapping with tonality map whith harmonic rhythm (:time hry) (setf p1a (ambitus-chord 12 (tonality-map (mclist sc) (make-omn :pitch chp1 :length r1 :velocity v1 :articulation art1 ) :time hry))) (setf p1b (ambitus-chord 12 (tonality-map (mclist sc) (make-omn :pitch chp2 :length r2 :velocity v2 :articulation art2 ) :time hry))) ;;; Coda chords (setf p2a '((w eb5a5 f))) (setf p2b '((w d4bb4 f))) ;;; Assemble part1 and part2 (coda) (setf piano-rh (assemble-seq p1a p2a)) (setf piano-lh (assemble-seq p1b p2b)) ;;;--------------------------------------------------------- ;;; Score and Layout ;;;--------------------------------------------------------- (def-score snippet (:title "Snippet for Piano" :composer "S.Boussuge" :copyright "Copyright © 2016 s.boussuge " :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 100 :layout (piano-solo-layout 'piano-rh 'piano-lh)) (piano-rh :omn piano-rh :channel 1 :sound 'gm :program 'acoustic-grand-piano :volume 100 :pan 64 :controllers (91 '(48)) ) (piano-lh :omn piano-lh :channel 2 :controllers (91 '(48)) ) ) SB.
  7. Hi, In the attachment (score) you will find more complete and usable version of the section script of LeDuc in GM - all the dependancies are included in the score file. Happy study !! SB. LeDuc2.opmo
  8. a bit more advance on this way: ;;;; Adding neighbour tone to triads (setf source '(c4 d4 e4 f4 g4 a4 b4)) (pattern-map '(((3)(2 3)) ((4)(3 4)) ((7)(6 7)) ) source :pcs t ) ;; a possible approach (setf base-trsp (car (sort-asc (pitch-to-integer source)))) (setf base-mtrsp (* -1 base-trsp)) (pattern-map '(((3)(2 3)) ((4)(3 4)) ((7)(6 7)) ) (pitch-transpose base-mtrsp source) :pcs t ) ;; trying to do some function with that idea (defun add-neighbour-pitch (map source &key (filter-repeat 1)) (let* ((base-trsp (car (sort-asc (pitch-to-integer source)))) (re-base (* -1 base-trsp)) ) (filter-repeat filter-repeat (pitch-transpose base-trsp (pattern-map map (pitch-transpose re-base source) :pcs t ))))) (setf map '(((3)(2 3)) ((4)(3 4)) ((7)(6 7)) )) ; the problem here is we can use it only on 1 octave (because pcs use) (add-neighbour-pitch map '(d4 e4 f4 g4 a4 b4 c5 d5 e5 f5 g5 a5)) ; may be a better approach could be not using the pcs (defun add-neighbour-pitch2 (map source &key (filter-repeat 1)) (let* ((base-trsp (car (sort-asc (pitch-to-integer source)))) (re-base (* -1 base-trsp)) ) (filter-repeat filter-repeat (pitch-transpose base-trsp (integer-to-pitch (pattern-map map (pitch-to-integer (pitch-transpose re-base source)) )))))) (setf map '(((3)(2 3)) ((15)(14 15)) ((4)(3 4)) ((16)(15 16)) ((7)(6 7)) ((19)(18 19)) )) (add-neighbour-pitch2 map '(d4 e4 f4 g4 a4 b4 c5 d5 e5 f5 g5 a5)) SB.
  9. i am probably wrong, but may be it could be easier to use another approach than tonality-map for achieve this. A pattern matching on pitch class could be a solution, search for triadic unit and add lower or upper chromatic notes: (setf source1 '(c4 d4 e4 f4 g4 a4 b4)) (pattern-map '(((3)(2 3)) ((4)(3 4)) ((7)(6 7)) ) source1 :pcs t ) naturally, if the input source is not based on C, we need to find a way first to transpose it to C , do the pattern matching with chromatics and transpose another time the output of pattern-match to the original base of the input. It is just an idea, may be not help you.... SB.
  10. Hi, here's some example of pitch generation. Naturally, Opusmodus have infinite possibilities and it is just few example of possible way of pitch generation. ;;; SOME (FEW) IDEAS FOR PITCH GENERATION ;;; SB. 09/2016 ;; FROM VECTORS (setf vect1 (gen-white-noise 32 :seed 33)) (setf p1 (vector-to-pitch '(a3 a5) vect1)) ;; SMOOTHED VECTOR (setf vect2 (vector-smooth 0.02 vect1)) (setf p2 (vector-to-pitch '(a3 a5) vect2)) ;; without direct repetition (setf p2b (filter-repeat 1 p2)) ; see also gen-accumulate and other vectors (pink-noise, brownian etc..). ;;; ====================================== ;; RANDOM-CHOICES (setf p3 (rnd-sample '(4 3 7 8 4 5) (list (make-scale 'c3 24)) :seed 12)) ;; without repetition (setf p4 (rnd-unique '(4 3 7 8 4 5) (gen-repeat 6 (list (make-scale 'c3 24))) :seed 12)) ;;; ====================================== ;; PITCH FROM INTEGERS (setf int1 (rnd-sample '(8 4 7 3) (list (gen-integer 16)))) (setf p5 (integer-to-pitch int1)) ;; COOL FOR ARPEGIOS (setf int2b (gen-integer-step 0 32 '(1 1 2))) (setf int2 (gen-integer-step 0 32 (rnd-sample 6 '(1 2 3 4 -1 -2 -3 -4)))) (setf p6 (integer-to-pitch int2)) ;;; ====================================== ;; PITCH FROM INTERVALS (setf intv1 (interval-direction-series '(1 2 3) '(1 2 1 (2 1)) :first 'd)) (setf p7 (interval-to-pitch intv1)) (setf intv2 (interval-series '(3 2 1 2 3) '(1 2 3) :seed 34)) (setf p8 (interval-to-pitch intv2)) (setf intv3 (interval-expansion-series 10 '(1 -1 2 -2) '(1 2 3) '(-6 -5 3 4) :max-interval 6)) (setf p9 (interval-to-pitch intv3)) ;; extend the first element of intv3 with a matrix (setf intv4 (interval-row-matrix (1~ intv3))) (setf p10 (interval-to-pitch intv4)) ;; PITCH DIRECTION SERIES EXAMPLE (setf p11 (pitch-direction-series '(2 2 2 2 2) '(c4g4 c4g4 c4g4 c4g4 c4g4 c4g4 c4g4 c4g4 c4g4) :first 'd :ambitus '(-12 24))) (setf p11-each-in-list (mclist p11)) (setf p11-melodized (melodize p11-each-in-list)) (setf p11-chordized (chordize p11-melodized)) ;;; ====================================== ;; EXTRACT CHORDS (SETS) FROM ROW (setf row (rnd-row :type :pitch :transpose 4 :seed 783)) ;; GEN-CHORD (setf p12 (gen-chord 24 3 6 -6 6 row :seed 42)) ;; longer output (setf p13 (gen-chord 24 3 6 -6 6 (gen-trim 64 row) :seed 42)) ;; create sets (setf p14 (melodize (mclist p13))) ;; GEN-CHORD2 (setf p15 (gen-chord2 32 '(3 6 5) row)) (setf p16 (gen-chord2 32 '(3 6 5) row :offset '(2 1 3 2 4))) (setf p17 (gen-chord2 32 '(3 6 5) row :offset '(2 1 3 2 4) :transpose (rnd-number 8 -6 6 :seed 4))) (setf p18 (gen-chord2 32 '(3 6 5) row :offset '(2 1 3 2 4) :transpose (rnd-number 8 -6 6 :seed 4) :rnd-octaves t)) ;; control the output (setf p19 (chord-interval-remove '(1 2) p17)) (setf p20 (chord-interval-replace '(1 2) '(13 14) p17)) ;; voice leading (setf p21 (chord-relative-path '(c2c3g3e4a4d5) p20 :seed 31 :ambitus '(c2 c6))) (setf p22 (chord-closest-path '(c2c3g3e4a4d5) p20 :seed 31 :ambitus '(c2 c6))) ;; GEN-CHORD3 (setf p23 (gen-chord3 (rnd-sample 12 (make-scale 'c3 11) :seed 2) '((4 2 5)(3 5 11)(4 6 10)) :cycle t)) (setf p24 (gen-chord3 (rnd-sample 12 (make-scale 'c3 11) :seed 2) '((4 2 5)(3 5 11)(4 6 10)) :cycle t)) (setf p25 (gen-chord3 (rnd-sample 12 (make-scale 'c3 11) :seed 2) '((4 2 5)(3 5 11)(4 6 10)) :cycle nil)) (setf p26 (gen-chord3 (rnd-sample 12 (make-scale 'c3 11) :seed 2) '((4 2 5)(3 5 11)(4 6 10)) :cycle t :relative t :seed 4)) ;;; ====================================== ;; HARMONIC-PROGRESSION (setf p27 (harmonic-progression (integer-transpose -1 '(1 1 1 3 1 2 4 3 1 1 3 4 5 6 5 3 1 -2 -2 1 1)) row )) ;; HARMONIC-PROGRESSION FROM SCALES (setf p28 (harmonic-progression (integer-transpose -1 '(1 1 1 3 1 2 4 3 1 1 3 4 5 6 5 3 1 -2 -2 1 1)) '(d4 messiaen-mode5) :size '(4 3 5) :step '(2 1 3 2) )) ;; HARMONIC-PROGRESSION FROM SCALES with relative path (setf p28 (harmonic-progression (integer-transpose -1 '(1 1 1 3 1 2 4 3 1 1 3 4 5 6 5 3 1 -2 -2 1 1)) '(d4 messiaen-mode5) :size '(4 3 5) :step '(2 1 3 2) :relative t :seed 33 )) ;; create sets of pitches from p28 (setf p28b (melodize (mclist p28))) ;; Melodic material from random order of each set (setf p28c (rnd-order p28b :seed 4)) Happy Opusmodusing !! SB.
  11. When working with Opusmodus, it is very common to run many times a script containing some random process and you may want to keep and redo the last output for refine it or whatever. It can be also good to save multiples output from a script with an index number attached to the output name. In this post, i will show you how to achieve this two technics. 1.Seed record: The first operation is to generate randomly a seed value and bind it to a variable: (setf my-seed (rnd-range 1 10000)) Pass it to the init-seed function (init-seed my-seed) Now you can evaluate you score many times and when the output is ok for you, recall the last random seed by evaluating the seed variable name, the seed number will be showed in the listener. Just copy and past it as the value of init-seed function in place of "my-seed". Here’s a small score example: (setf my-seed (rnd-range 1 10000)) (init-seed my-seed) (setf size 12) (setf pitch (rnd-sample (rnd-number size 1 16) (list (make-scale 'a4 12 :alt '(2 1 2 3))))) (setf len (gen-tuplet 1 1 'm '? 'w (mapcar 'length pitch))) (setf phrase (make-omn :pitch pitch :length len )) (def-score flute ( :key-signature 'chromatic :time-signature '(4 4) :tempo 112 :layout (flute-layout 'flt) ) (flt :omn phrase :channel 1 :sound 'gm :program 'flute ) ) Now if you want to recall the last seed, you can evaluate my-seed and copy the result from the listener into the init-seed function: (init-seed 37281) ..... 2. Indexing Midi files: You can add a compile-score function at the end of your score script and give it some instructions regarding the output format AND a possible versioning system. A small score example: Evaluate this score several times and you will find in your midi folder each output indexed: Flute2-001 Flute2-002 Flute2-003 .... (setf size2 12) (setf pitch2 (rnd-sample (rnd-number size2 1 16) (list (make-scale 'a4 12 :alt '(2 1 2 3))))) (setf len2 (gen-tuplet 1 1 'm '? 'w (mapcar 'length pitch2))) (setf phrase2 (make-omn :pitch pitch2 :length len2 )) (def-score flute2 ( :key-signature 'chromatic :time-signature '(4 4) :tempo 112 :layout (flute-layout 'flt) ) (flt :omn phrase2 :channel 1 :sound 'gm :program 'flute ) ) (compile-score 'flute2 :output :midi :file "Flute2" :new-index t) SB.
  12. Here's a piece for Chamber Ensemble inspired by the Novel of Lewis Carroll: Alice's Adventures in Wonderland. Attached you will find an extract of the score script. SB. ExtraitDACDM4_2.opmo
  13. May be this could help: (setf source '((c4 d4 e4) (f4 g4 a4 b4) (cs4 ds4 fs4 gs4 as4))) (interleave-map '((1 1 1)(1 1 1)(1 1 1)) source) SB.
  14. Another example (a score example) of using a loop for generate some multiple output of a process. ;;; FORME ETRANGE ;;; POUR PIANO SEUL. (setf row '(c4 e4 g4 bb4 d5 fs5 a5 gs5 f5 eb4 cs4 b4)) (setf set1 (subseq row 0 6)) (setf set2 (subseq row 3 9)) (setf set3 (subseq row 6 12)) (setf couleur1 (gen-chord 12 5 5 -6 6 (gen-repeat 12 set1))) (setf couleur2 (gen-chord 12 5 5 -6 6 (gen-repeat 12 set2))) (setf couleur3 (gen-chord 12 5 5 -6 6 (gen-repeat 12 set3))) (setf path1 (tonality-series couleur1)) (setf path2 (tonality-series couleur2)) (setf path3 (tonality-series couleur3)) ;;;============================================= (setf ch1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :pitch (rnd-sample 6 couleur1) :length (rnd-sample 1 '((q h -q) (h h) (e e e e h) (w) (q q) (q e e q) (q -q) )) :velocity (rnd-sample 1 '((f)(ff)(fff)(mf)(mp)(p)(pp))) )))))) (setf un1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :pitch (pitch-transpose -48 (rnd-sample 1 (melodize (rnd-sample 1 couleur1)))) :length (rnd-sample 1 '((h -q) (w) (q -h) )) :velocity '((ffff)) )))))) (setf ar1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :pitch (pitch-transpose (rnd-pick '(10 11 12 13 14 15 16 17)) (tonality-map (rnd-sample 1 path1) (rnd-sample 1 '( (c2 e2 g2 b2 d3 fs3 c4 e4 g4 b4 d5 fs5) (c2 e2 g2 b2 d3 fs3 d3 fs3 a4 e5 b5) (fs5 d5 b4 g4 e4 c4 b4 g4 e4 c4 b3 g3 e3 c3) (fs5 d5 b4 d5 b4 g4 b4 g4 e4 g4 e4 c4 g3 c3) )))) :length (rnd-sample 1 '((t t t t t q -q) (t t t t t t t t t t t t) (s s s s s s s s) (t t t t t t e e q -q))) :velocity (rnd-sample 1 '((f)(ff)(fff)(mf)(mp)(p)(pp))) )))))) (setf ar1b (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :pitch (filter-repeat 1 (pitch-transpose 12 (tonality-map (rnd-sample 1 path1) (rnd-sample 6 '(c4 d4 e4 f4 g4 a4 b4 c5 d5 e4 fs5))))) :length (rnd-sample 1 '((t t t t t q -q) (t t t t t t t t t t t t) (s s s s s s s s) (t t t t t t e e q -q))) :velocity (rnd-sample 1 '((f)(ff)(fff)(mf)(mp)(p)(pp))) )))))) ;; Assemblage (setf s1 (rnd-sample 24 (append ch1 un1 ar1 ar1b))) ;;;========================================== (setf ch1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :pitch (rnd-sample 6 couleur2) :length (rnd-sample 1 '((q h -q) (h h) (e e e e h) (w) (q q) (q e e q) (q -q) )) :velocity (rnd-sample 1 '((f)(ff)(fff)(mf)(mp)(p)(pp))) )))))) (setf un1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :pitch (pitch-transpose -48 (rnd-sample 1 (melodize (rnd-sample 1 couleur2)))) :length (rnd-sample 1 '((h -q) (w) (q -h) )) :velocity '((ffff)) )))))) (setf ar1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :pitch (pitch-transpose (rnd-pick '(10 11 12 13 14 15 16 17)) (tonality-map (rnd-sample 1 path2) (rnd-sample 1 '( (c2 e2 g2 b2 d3 fs3 c4 e4 g4 b4 d5 fs5) (c2 e2 g2 b2 d3 fs3 d3 fs3 a4 e5 b5) (fs5 d5 b4 g4 e4 c4 b4 g4 e4 c4 b3 g3 e3 c3) (fs5 d5 b4 d5 b4 g4 b4 g4 e4 g4 e4 c4 g3 c3) )))) :length (rnd-sample 1 '((t t t t t q -q) (t t t t t t t t t t t t) (s s s s s s s s) (t t t t t t e e q -q))) :velocity (rnd-sample 1 '((f)(ff)(fff)(mf)(mp)(p)(pp))) )))))) (setf ar1b (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :pitch (filter-repeat 1 (pitch-transpose 12 (tonality-map (rnd-sample 1 path2) (rnd-sample 6 '(c4 d4 e4 f4 g4 a4 b4 c5 d5 e4 fs5))))) :length (rnd-sample 1 '((t t t t t q -q) (t t t t t t t t t t t t) (s s s s s s s s) (t t t t t t e e q -q))) :velocity (rnd-sample 1 '((f)(ff)(fff)(mf)(mp)(p)(pp))) )))))) ;; Assemblage (setf s2 (rnd-sample 24 (append ch1 un1 ar1 ar1b))) ;;;========================================== (setf ch1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :pitch (rnd-sample 6 couleur3) :length (rnd-sample 1 '((q h -q) (h h) (e e e e h) (w) (q q) (q e e q) (q -q) )) :velocity (rnd-sample 1 '((f)(ff)(fff)(mf)(mp)(p)(pp))) )))))) (setf un1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :pitch (pitch-transpose -48 (rnd-sample 1 (melodize (rnd-sample 1 couleur3)))) :length (rnd-sample 1 '((h -q) (w) (q -h) )) :velocity '((ffff)) )))))) (setf ar1 (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :pitch (pitch-transpose (rnd-pick '(10 11 12 13 14 15 16 17)) (tonality-map (rnd-sample 1 path3) (rnd-sample 1 '( (c2 e2 g2 b2 d3 fs3 c4 e4 g4 b4 d5 fs5) (c2 e2 g2 b2 d3 fs3 d3 fs3 a4 e5 b5) (fs5 d5 b4 g4 e4 c4 b4 g4 e4 c4 b3 g3 e3 c3) (fs5 d5 b4 d5 b4 g4 b4 g4 e4 g4 e4 c4 g3 c3) )))) :length (rnd-sample 1 '((t t t t t q -q) (t t t t t t t t t t t t) (s s s s s s s s) (t t t t t t e e q -q))) :velocity (rnd-sample 1 '((f)(ff)(fff)(mf)(mp)(p)(pp))) )))))) (setf ar1b (mclist (position-insert '(0) '(ped) (assemble-seq (gen-loop 24 (make-omn :pitch (filter-repeat 1 (pitch-transpose 12 (tonality-map (rnd-sample 1 path3) (rnd-sample 6 '(c4 d4 e4 f4 g4 a4 b4 c5 d5 e4 fs5))))) :length (rnd-sample 1 '((t t t t t q -q) (t t t t t t t t t t t t) (s s s s s s s s) (t t t t t t e e q -q))) :velocity (rnd-sample 1 '((f)(ff)(fff)(mf)(mp)(p)(pp))) )))))) ;; Assemblage (setf s3 (rnd-sample 24 (append ch1 un1 ar1 ar1b))) (def-score FormeEtrange-s1 ( :title "FormeEtrange" :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :key-signature 'chromatic :time-signature (get-time-signature s1) :tempo 108 :layout (piano-grand-layout 'piano) ) (piano :omn s1 :channel 1 :sound 'gm :program 'acoustic-grand-piano ;:port 0 ) ) (def-score FormeEtrange-s2 ( :title "FormeEtrange" :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :key-signature 'chromatic :time-signature (get-time-signature s2) :tempo 108 :layout (piano-grand-layout 'piano) ) (piano :omn s2 :channel 1 :sound 'gm :program 'acoustic-grand-piano ;:port 0 ) ) (def-score FormeEtrange-s3 ( :title "FormeEtrange" :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :key-signature 'chromatic :time-signature (get-time-signature s3) :tempo 108 :layout (piano-grand-layout 'piano) ) (piano :omn s3 :channel 1 :sound 'gm :program 'acoustic-grand-piano ;:port 0 ) ) (compile-score '( FormeEtrange-s1 FormeEtrange-s2 FormeEtrange-s3 ))
  15. Hi, try this one, it works on my computer with Finale 2014.5: (musicxml-to-editor "test" :identifier "com.makemusic.Finale") don't forget to replace "test" by the name of your xml file naturally :-) SB.
  16. Hi André, about pattern matching and replacement, did you see the function motif-map into opusmodus doc ? It can be very useful. I use it a lot. Best regards Stéphane.
  17. Hi Tom, the normal way for altering notes is tonality-map. :key-signature in def score is for the score. key-signature-length function is not made for altering notes. also, you can show in score cautionary accidentals or if you prefer all accidentals using in def-score header: :accidental :cautionary or :accidental :all Stéphane
  18. Hybrid piece for solo cello and electronic. Based on magic square with magic constant 48. Thanks to opmo for the mapping.
  19. Ambient soundtrack, thanks to gen-controller function for the algorithmic parameters automation ;-) SB.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy