Jump to content

Stephane Boussuge

Moderators
  • Posts

    1,070
  • Joined

  • Last visited

Everything posted by Stephane Boussuge

  1. Hi, here is a possible solution: (ambitus '(g3 g5) (mapcar (lambda(x) (gen-interleave x (integer-to-pitch (gen-accumulate '(2 7) :start -5 :count 16)))) '(5 7 4 3)) ;;; Here is your list of length for gen-interleave :type :invert)SB.
  2. Here is my example named Pop_up ! Each time you run it, it generate a new version based on the chord progression. i hope it can help. ;; Chord progression (setf grid1 (tonality-series '((c4 min)(ab4 maj)(f4 min)(g4 maj) (c4 min)(ab3 maj)(f3 min)(g3 maj)))) ;; Extract length of grid1 list and give it the name: size1. (setf size1 (length grid1)) ;; Accomp. (setf bass.pitch (rnd-sample 4 '(c2 c3 g2))) (setf bass.length (binary-map (gen-binary-euclidean 1 16 4 10)'s)) (setf bass (make-omn :pitch bass.pitch :length (list bass.length))) (setf chords.pitch (integer-to-pitch (rnd-sample 16 (gen-integer 12)))) (setf chords.pitch.div (gen-divide 4 chords.pitch)) (setf chords.pitch.chrd (chordize-list chords.pitch.div)) (setf chords.len (binary-map (gen-binary-euclidean 1 16 4 12)'s)) (setf chords (make-omn :pitch chords.pitch.chrd :length (list chords.len))) ;; Repeat the given material (setf bass.rep (gen-repeat size1 bass)) (setf chords.rep (gen-repeat size1 chords)) ;; Apply the harmonic chords progression to accomp. (setf bass.map (tonality-map grid1 bass.rep)) (setf chords.map (pitch-transpose -12 (tonality-map grid1 chords.rep))) ;; Melody ;; vector definition for melodic contour generation (setf vect (vector-smooth 0.45 (gen-white-noise 128))) ;; Convert vector to pitch (setf melo.pitch (vector-to-pitch '(c4 c6) vect)) ;; Rhythm generation for melody (setf melo.length (gen-repeat size1 (list (binary-length-map ; note the use of binary-LENGTH-map in place of binary-map (gen-binary-euclidean 1 16 2 10) 's)))) ;; Melody assembly (setf melo (make-omn :pitch melo.pitch :length melo.length)) ;; Apply the harmonic chords progression to melo. (setf melo.map (tonality-map grid1 melo)) ;; add some rest (setf melo.rest (length-rest-weight '(3 1) melo.map)) (def-score Pop_up (:key-signature '(c min) :time-signature '(4 4) :composer "S.Boussuge" :copyright "Copyright © 2015 S.Boussuge" :tempo 112) (bass :omn bass.map :channel 1 :sound 'gm :program 'Electric-Bass-Finger) (guitar :omn chords.map :channel 2 :sound 'gm :program 'Electric-Guitar-Jazz) (melo :omn melo.rest :channel 3 :sound 'gm :program 'flute))SB. Pop_up.opmo
  3. Hi, here's a short example of a reggae accompaniment i found in my sandbox. i'm working on a better example (and better commented and explained) i will post once finished but this one can help a bit. ;;; Reggae1 ;; Harmonic path (setf cpath '((e4 maj) (cs4 m) (e4 maj) (cs4 m) (gs3 m) (fs3 m) (gs3 m) (b3 7))) ;; Patterns (setf pbass1.omn (tonality-map (mclist cpath) (make-omn :pitch (rnd-sample 4 '((c2 g2 c2))) :length (gen-repeat 8 (list (binary-map (gen-binary-euclidean 1 16 5 9) 's)))))) (setf pstack1.omn (tonality-map (mclist cpath) (make-omn :pitch '((e3g3c4)) :length (gen-repeat 8 '((-e e - = - = - =))) :articulation '((stacc))))) ;; Drums (setf kick1 (gen-repeat 4 (list (replace-pitch-map *gm-percussion* 'Bass-Drum1 '(-e c4 - - - = - = = - - - = - - -))))) (setf snare1 (gen-repeat 4 (list (replace-pitch-map *gm-percussion* 'Acoustic-Snare '(-q c4 - = - = - =))))) (setf hh1 (gen-repeat 4 (list (replace-pitch-map *gm-percussion* 'Closed-Hi-hat '(e c4 = = = = = = = = = = = = = = =))))) (setf drums (merge-voices kick1 snare1 hh1)) (def-score reggae1 (:time-signature '(4 4) :key-signature '(e maj) :tempo 72) (bass :omn pbass1.omn :channel 1 :sound 'gm :program 'Electric-Bass-Finger) (guitar :omn pstack1.omn :channel 2 :sound 'gm :program ' Electric-Guitar-Clean) (drums :omn drums :channel 10))SB.
  4. Here is a score for Violin and Piano. (attached file). It is a study on various aspect of traditional device in music composition like harmony, sequences. Preambule-04-GM.opmo
  5. For a midifile, the Janusz's solution is the good one, but may be it can help to know also how to use in Logic environment a transformer for remove such type of information in Input when driving Logic from Opusmodus. See attached picture. SB.
  6. Hi Ole, may be something like this: (setf time-points '(e b5 f - - - b5 - - b5 - - - - b5 - b5 - - b5 - - - b5 - - - - a5 - - - - - a5 - - - a5 - - - - a5 - - - a5 - - - a5 - - - - a5 - - - a5 - - - - a5)) (setf len (omn :length time-points)) (setf map (gen-binary-length len)) (setf result (binary-length-map map 'e :omn nil))SB.
  7. Here is the score of a short piano study using Harmony from a row, and user defined functions encapsulated in other functions for the score generation. Provided here as an example of a possible usage of functions defined by the user specifically for a given score. (defun arp1 (nb &key (rev nil) (rnge '(c1 c7)) (nbitv 5) (len (gen-repeat 16 '(s))) (vel '(mf))(art '(leg)) (itvlist '(1 2 4 5 1 3 -1 -2))) (make-omn :pitch (ambitus rnge (if rev (gen-retrograde (integer-to-pitch (gen-integer-step -24 nb (rnd-sample nbitv itvlist)))) (integer-to-pitch (gen-integer-step -24 nb (rnd-sample nbitv itvlist))))) :length (length-trim nb len) :velocity vel :articulation art)) (defun chrd1 (nb &key (ofst 3) (rnge '(c1 c7)) (chsize 4) (trspt 0)(rnd-oct nil) (len (gen-repeat 4 '(q))) (vel '(mf))(art '(leg))) (make-omn :pitch (ambitus rnge (gen-chord2 nb chsize (rnd-row :type :pitch) :offset ofst :transpose trspt :rnd-octaves rnd-oct)) :length (length-trim nb len) :velocity vel :articulation art)) (defparameter size 64) (setf row (rnd-row :type :pitch)) (setf hchords (gen-chord2 size 5 row :offset (rnd-sample size (gen-integer 4)) :transpose (rnd-sample size (gen-integer -12 12)))) (setf path (tonality-series hchords)) (setf study (tonality-map path (gen-loop size (eval (car (rnd-sample 1 '((length-fix (arp1 (car (rnd-number 1 6 12)) :rnge (rnd-pick '((c1 c7)(c5 c7)(c1 c3)(c3 c6)(g5 g6)(e2 g5))) :nbitv (rnd-pick '(1 2 3 4 5 6 7 8)) :vel (rnd-pick '((pp)(p)(mp)(mf)(f)(ff))) :art (rnd-pick '((stacc)(leg)(marc)(stacs)(mart))) :len (rnd-pick `(,(rnd-sample 12 '(1/24 1/8 1/8 1/16 1/16 1/32 -1/8 -1/8)) ,(gen-repeat 16 '(s)) ,(gen-repeat 12 '(1/12)) ,(rnd-sample 8 '(e e s s s -e)) ,(rnd-sample 8 '(e e s s s -q s s s -e)))) :itvlist (rnd-pick '((8 6 14 -8 -6) (1 2 -1 2) (1 2 3 4 -1 -2 -3 -4) (2 4 6 -1 -3 -7))))) (length-fix (chrd1 (car (rnd-number 1 1 8)) :ofst (rnd-pick '(1 2 3 4)) :rnge (rnd-pick '((c1 c7)(c5 c7)(c1 c3)(c3 c6)(g5 g6)(e2 g5))) :chsize (rnd-pick '(2 3 4 5 6)) :rnd-oct t :len (rnd-pick `(,(rnd-sample 4 '(h -q q)) ,(gen-repeat 8 '(e)) ,(gen-repeat 5 '(1/12)) ,(gen-repeat 4 '(e. s)) ,(rnd-sample 8 '(h q -q q q)) ,(rnd-sample 8 '(e e e e q -e)))) :vel (rnd-pick '((pp)(p)(mp)(mf)(f)(ff))) :art (rnd-pick '((stacc)(leg)(marc)(stacs)(mart)))))))))))) (def-score study (:composer "S.Boussuge" :copyright "Copyright © 2015 S.Boussuge" :key-signature atonal :time-signature (get-time-signature study) :tempo 118 :layout (piano-grand-layout 'piano)) (piano :omn study :channel 1 :sound 'gm :program 'acoustic-grand-piano :port 0)) S.B.
  8. Hello Nigel, i would be very happy if you include my video or score into you book ! i always read "Composing How and Why" chapter by chapter and appreciate a lot this book. Thanks, Stéphane
  9. Dear Nigel, thank you very much for your links. i will have a look on Livecoding network conference who seem very interesting. i used in past the Andrew Sorensen software " Impromptu" for live coding and i have recently look a bit on SonicPi too. Also i discover recently an organisation very active for live coding: Toplap.org Indeed, Live coding become more and more recognized in different area. About Defparameter in Lisp, basically i used it because Opusmodus Lisp (Clozure Lisp) complain for not correctly declared variable when i used setf in this situation (inside macro gen-loop) and i used defparameter by correction for the Lisp interpreter. I agree totally with you about the fact that we hear mainly electro/beat oriented music from live coding. This is why i tried to show something different with this score. I would love to speak about that with you in more details and hope to meet you another time soon. yours, Stéphane
  10. Hi, by default in MAKE-OMN function, the span is attributed to length, i.e. the length drive the number of elements in the output lists. if you want to change that, for example for pitch driving, you can do: (make-omn :length rhy :pitch pitches :span :pitch)
  11. Possible solution: (setq pattest (library 'modes 'minor nil :random 3)) (setq pattestpitches (integer-to-pitch (apply-eval pattest))) SB.
  12. In Opusmodus Scores examples folder, you have a score named: Using Modes Library. i provide it here for quicker reference: ;;;--------------------------------------------------------- ;;; MODES LIBRARY ;;; Using modes library example ;;;--------------------------------------------------------- ;; Vector generation (setf vector (vector-smooth 0.31 (gen-white-noise 128))) ;; Transform vector values in pitches (setf pch1 (vector-to-pitch '(c4 e5) vector)) (setf pch2 (gen-rotate 6 pch1)) (setf pch3 (gen-rotate 12 pch1)) (setf pch4 (gen-rotate 18 pch1)) ;; Number of bars (setf size 24) ;; Pick some random modes in modes library ;; based on mode-struct list. (setf mod-struct-list (vector-to-list (gen-trim size (vector-round 1 4 vector)))) (setf modes-list (library 'modes 'messiaen nil :collect mod-struct-list)) ;; Choice of fundamentals for modal path from vector (setf fund (vector-map '(d4 e4 f4 g4 a4) vector)) ;; Modal path (setf path (tonality-series modes-list :root fund)) ;; Rythmic structures generation (setf number-of-rythmic-motives 3) (setf rylist (binary-length-map (gen-binary-euclidean number-of-rythmic-motives 12 2 12) 'e)) ;; Rhythmic rotation and add rest (setf r1 (length-rest-weight '(3 1) (rnd-sample size rylist))) (setf r2 (gen-rotate -1 r1)) (setf r3 (gen-rotate -2 r1)) (setf r4 (gen-rotate -3 r1)) ;; Velocity from vector (setf master-vel (mclist (vector-to-velocity 'p 'f vector))) ;; Articulation from vector with rotation on each voices (setf artbase (vector-map '((leg) (stacc) (marc) (ten)) (gen-trim size vector))) (setf art1 artbase) (setf art2 (gen-rotate -1 artbase)) (setf art3 (gen-rotate -2 artbase)) (setf art4 (gen-rotate -3 artbase)) ;; OMN assembly (setf omn1 (make-omn :pitch pch1 :length r1 :velocity master-vel :articulation art1)) (setf omn2 (make-omn :pitch pch2 :length r2 :velocity master-vel :articulation art2)) (setf omn3 (make-omn :pitch pch3 :length r3 :velocity master-vel :articulation art3)) (setf omn4 (make-omn :pitch pch4 :length r4 :velocity master-vel :articulation art4)) ;; Apply harmonic path (setf oh1 (tonality-map path omn1)) (setf oh2 (tonality-map path omn2)) (setf oh3 (tonality-map path omn3)) (setf oh4 (tonality-map path omn4)) ;; Ambitus control (setf p1 (ambitus '(g4 c6) oh1)) (setf p2 (ambitus '(c4 c5) oh2)) (setf p3 (ambitus '(c3 a4) oh3)) (setf p4 (ambitus '(c2 c3) oh4)) ;;; -------------------- SCORE (def-score modes-lib ( :key-signature '(c maj) :time-signature '(12 8) :title "Modes-lib-example" :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :tempo '(q. 92) :layout (bracket-group (flute-layout 'flute) (oboe-layout 'oboe) (clarinet-layout 'clarinet) (bassoon-layout 'bassoon)) ) (flute :omn p1 :channel 1 :sound 'gm :program 'flute) (oboe :omn p2 :channel 2 :program 'oboe) (clarinet :omn p3 :channel 3 :program 'clarinet) (bassoon :omn p4 :channel 4 :program 'bassoon) ) SB.
  13. Hi Torsten, you may have a look to the function respell. Stf
  14. Hi, it is important to check the parameters we give to the function. GEN-FILTER-CHANGE need pitch, length and velocity but you give it two length list. This is the cause of the problem. SB.
  15. Hi, Here's the score file i used for my video LCI-performance1. Provided here for training and study purpose. SB. ;;; Global parameters (defparameter size 4) (defparameter master-span (gen-repeat size '(4/4))) (defparameter interval-set1 (gen-integer 0 0)) (defparameter interval-set2 interval-set1) (defparameter interval-set3 interval-set1) (setf len-set1 '(-q q s s s e q)) (setf len-set2 '(h q -q -e -q s s s e q)) (setf len-set3 '(h e e s s s e q -q)) (defparameter vel-set1 '(mf)) (defparameter vel-set2 vel-set1) (defparameter vel-set3 vel-set1) (setf center1 (gen-loop size (rnd-sample 8 '(d4)))) (setf center2 center1) (setf center3 center1) ;;; Piano (defparameter pnbpch 8) (setf pcenter center1) (setf pintervals (gen-loop size (rnd-sample 8 interval-set1))) (setf ppch (mapcar (lambda(x y) (pitch-transpose-n x y)) pintervals pcenter)) (setf plen (length-span master-span (rnd-sample pnbpch len-set1))) (setf pvelo (gen-loop size (rnd-sample pnbpch vel-set1))) (setf part (length-map '(leg) '((stacc) (marc)) '((e) (q)) plen)) (setf pia (ambitus '(c1 c7) (make-omn :pitch ppch :length plen :velocity pvelo :articulation part))) ;;; VIBRAPHONE (defparameter vbnbpch 8) (setf vbcenter center2) (setf vbintervals (gen-loop size (rnd-sample 8 interval-set2))) (setf vbpch (mapcar (lambda(x y) (pitch-transpose-n x y)) vbintervals vbcenter)) (setf vblen (length-span master-span (rnd-sample vbnbpch len-set2))) (setf vbvelo (gen-loop size (rnd-sample vbnbpch vel-set2))) (setf vbart (length-map '(leg) '((stacc)(marc)) '((e) (q)) vblen)) (setf vba (ambitus '(f3 f6) (make-omn :pitch vbpch :length vblen :velocity vbvelo :articulation vbart))) ;;; VIOLIN (defparameter vnnbpch 8) (setf vncenter center3) (setf vnintervals (gen-loop size (rnd-sample 8 interval-set3))) (setf vnpch (mapcar (lambda(x y) (pitch-transpose-n x y)) vnintervals vncenter)) (setf vnlen (length-span master-span (rnd-sample vnnbpch len-set3))) (setf vnvelo (gen-loop size (rnd-sample vnnbpch vel-set3))) (setf vnart (length-map '(spicc) '((leg)(marc pizz)(leg) (leg)) '((s) (q) (h) (w)) vnlen)) (setf vln (ambitus '(g3 g6) (make-omn :pitch vnpch :length vnlen :velocity vnvelo :articulation vnart))) (def-score lci-impro (:composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :key-signature 'atonal :time-signature '(4 4) :tempo 123) (piano :omn pia :channel 1 :port 0) (vibra :omn vba :channel 2) (violin :omn vln :channel 3 :sound 'Xce-ssgen))Original.opmo
  16. Dear Torsten, I didn't see your function before post mine, sorry. It is very interesting. My function is a bit different because i'm trying to keep all the OMN content for notation safe like different bars length (5/4 7/4..) velocity information (ff mp p), articulation like stacc, leg etc... But thank you for your function which is written in a very elegant way. Stéphane
  17. Dear Torsten, i have written a function for apply harmonic rhythm with TONALITY-MAP or HARMONIC-PATH (&key). It is probably not perfect because i am not a Lisp expert but it works for me. May help you a bit. ;;; APPLY-HARMONIC-RHYTHM (defun apply-harmonic-rhythm (chords harmonic-rhythm omn-phrases &key (type 'tonality-map)) "APPLY-HARMONIC-RHYTHM est une fonction s'appliquant aux listes OMN afin d'appliquer (map) sur celles-ci des structures harmoniques (accords, echelles..) en fonction d'un rhythme harmonique donné." (do-verbose ("apply-harmonic-rhythm") (let* ((flat1 (flatten omn-phrases)) (hdiv (length-span harmonic-rhythm flat1)) (map1 (if (equal type 'harmonic-path) (harmonic-path chords hdiv) (tonality-map chords hdiv))) (mapflat (flatten map1)) (bstruct (get-span omn-phrases)) (pmaprestr (length-span bstruct mapflat)) (orhystruct (omn :length omn-phrases)) (final (make-omn :pitch (omn :pitch pmaprestr) :length (omn :length orhystruct) :velocity (omn :velocity omn-phrases) :articulation (omn :articulation omn-phrases) :leg (omn :leg omn-phrases)))) final))) ;; USAGE: #| ;; Phrases: (setf ph1 '((e c4 p d4 e4 f4 g4 < a4 < b4 < g4 f) (e c5 mf g4 a4 g4 f4 a4 h g4) (q c4 f stacc g4 stacc e4 stacc e d4 leg c4 leg d4 leg e4 q c4 stacc ff))) ;; Chords (setf row (rnd-row :type :pitch)) (setf chords (gen-chord2 12 5 row :transpose '(3 1 2))) ;; Harmonic rhythm (setf hry (rnd-sample (length chords) '(1/4 1/2))) (apply-harmonic-rhythm (mclist chords) hry ph1) (apply-harmonic-rhythm (mclist chords) hry ph1 :type 'harmonic-path) (apply-harmonic-rhythm '((major :root f4) (natural-minor :root a3)) hry ph1) (apply-harmonic-rhythm (tonality-series '((a maj)(fs maj))) hry ph1) |# Stéphane.
  18. Hi Torsten, here is an example of Harmonic Rhythm study i wrote recently for myself. It may be help a bit. Stéphane ;;; Harmonic rhythm Study ;; Phrases (setf ph1 '((e c4 p d4 e4 f4 g4 < a4 < b4 < g4 f) (e c5 mf g4 a4 g4 f4 a4 h g4) (q c4 f stacc g4 stacc e4 stacc e d4 leg c4 leg d4 leg e4 q c4 stacc ff))) ;; Chords (setf row (rnd-row :type :pitch)) (setf chords (gen-chord2 12 5 row :transpose '(3 1 2))) ;; Harmonic rhythm (setf hry (rnd-sample (length chords) '(1/4 1/2))) ;; flatten ph1 (setf fph1 (flatten ph1)) ;; Re-découpe en fonction du rythme harmonique (setf hdivph1 (length-span hry fph1)) ;; Application des accords (setf mapph1 (tonality-map (mclist chords) hdivph1)) ;; 2nd flatten (setf ph1mapflat (flatten mapph1)) ;; Extract the original bars structure from ph1 (setf ph1.bstruct (get-span ph1)) ;; Apply bstruct to ph1mapflat for restructuring bars (setf ph1.mapped.brestruct (length-span ph1.bstruct ph1mapflat)) ;;; IL N'Y A PAS correspondance (rythmes transformés) entre ;;; ph1 (phrase originale) et ph1.mapped.restruct (phrase mappée). ;;; LE SEUL MOYEN DANS CE CAS EST DE RE-APPLIQUER LA STRUCTURE RYTHMIQUE ;;; D'ORIGINE SUR LA STRUCTURE TRAITEE. PAS PARFAIT mais pas mieux pour l'instant.... ;; Extract orignal rhythm struct from ph1 (setf ph1.rhystruct (omn :length ph1)) ;; Reconstruction of a new OMN phrase with ;; re-mapped phrase and rhythms from the extraction. (setf ph1.final (make-omn :pitch (omn :pitch ph1.mapped.brestruct) :length ph1.rhystruct :velocity (omn :velocity ph1) :articulation (omn :articulation ph1) :leg (omn :leg ph1))) ;;; Score notation validation: (def-score Harmonic-rhythms-application (:key-signature atonal :time-signature (get-time-signature ph1) :tempo 120) (ph1 :omn ph1) (ph1-processed :omn ph1.final))
  19. Gloria from "Messe Brève en Forme de de Haikus" Melodic base. (setf base1 (pitch-transpose -2 '((e a4 = f4 = c5 = g4 =) (e a4 = f4 = c5 = g4 =) (e a4 = f4 = c5 = g4 =) (e d5 = a4 = e5 = b4 =) (-w) (e a4 = f4 = c5 = g4 =) (e a4 = f4 = c5 = g4 =) (e d5 = a4 = e5 = c5 =) (e f5 e5 f5 g5 a5 = - -) (-w) (e a4 = f4 = c5 = g4 =) (e a4 = f4 = c5 = g4 =) (e d5 = a4 = e5 d5 c5 d5) (e e5 f5 g5 d5 a5 = - -) (-w) (e b5 = f5 = a5 = e5 =) (e g5 = d5 = a5 = e5 =) (e b5 = f5 = c6 = = =) (e c6 = - - - - - -)))) Create some shifted phrases and cut them to the correct length with GEN-TRIM. (setf ph1a base1) (setf ph1b (gen-trim 18 (gen-pause (gen-rotate -1 base1) :section '(0)))) (setf ph1c (gen-trim 17 (gen-pause (gen-rotate -2 base1) :section '(0 1)))) (setf ph1d (gen-trim 16 (gen-pause (gen-rotate -3 base1) :section '(0 1 2)))) Ambitus control. (setf sopline (ambitus '(c4 f5) ph1a)) (setf altline (ambitus '(a3 a4) ph1b)) (setf tenline (ambitus '(c3 c4) ph1c)) (setf basline (ambitus '(a2 a3) ph1d)) Lyrics Soprano (setf soptext1 '("glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria in ex cel sis de o glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria in ex cel sis de o glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria in ex cel sis de o")) Alto (setf alttext1 '("glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria in ex cel sis de o glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria in ex cel sis de o glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria in ex cel sis de o")) Tenor (setf tentext1 '("glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria in ex cel sis de o glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria in ex cel sis de o glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria in ex cel sis de o")) Bass (setf bastext1 '("glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria in ex cel sis de o glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria in ex cel sis de o glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria glo ria in ex cel sis de o")) Score definition (def-score Gloria-1-02 (:title "Gloria" :key-signature '(c maj) :time-signature '(4 4) :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :tempo 112 :layout (choir-satb-layout 'sop 'alt 'tnr 'bas)) (sop :omn sopline :text soptext1 :sound 'gm :port 0 :program 'acoustic-grand-piano) (alt :omn altline :text alttext1) (tnr :omn tenline :text tentext1) (bas :omn basline :text bastext1)) SB. Gloria.opmo GloriaPianoRender.mp3 Gloria.mp3
  20. Rendered version of my Duet for Piano and Violin included in Opusmodus demo files. SB.
  21. Kyrie from "Messe Brève En Forme de Haikus". Global Pitch definition. Basic row (with D minor notes every 2 notes) (setf row '(d4 fs4 f4 cs4 g4 gs4 a4 ds4 as4 e4 c5 b4)) Utility function (defun collect-every-n (steps list) (loop for n from 0 to (- (length list)1) by steps collect (nth n list))) Global ambitus definition (setf sopamb '(d4 g5)) (setf altamb '(a3 c5)) (setf tenamb '(c3 c4)) (setf bassamb '(g2 g3)) Kyrie part-1 (canon) Pitch definition (setf pl1a (collect-every-n 2 row)) Rotations for other voices (setf pl1b (gen-rotate 2 pl1a)) (setf pl1c (gen-rotate 4 pl1a)) (setf pl1d (gen-rotate 6 pl1a)) Lengths definition (setf basery1 '(q q q q q q -e e e e q -q)) (setf rl1d (append '(-w -h) (gen-rotate 6 basery1))) (setf rl1c (length-span (get-span rl1d) (append '(-w) (gen-rotate 4 basery1)))) (setf rl1b (length-span (get-span rl1d) (append '(-h) (gen-rotate 2 basery1)))) (setf rl1a (length-span (get-span rl1d) basery1)) OMN assembly (setf p1a (make-omn :pitch pl1a :length rl1a)) (setf p1b (make-omn :pitch pl1b :length rl1b)) (setf p1c (make-omn :pitch pl1c :length rl1c)) (setf p1d (make-omn :pitch pl1d :length rl1d)) Voices (setf lsop1 (ambitus '(d4 g5) (filter-tie p1a))) (setf lalt1 (ambitus '(a3 c5) (filter-tie p1b))) (setf lten1 (ambitus '(c3 c4) (filter-tie p1c))) (setf lbas1 (ambitus '(g2 g3) (filter-tie p1d))) Christe part-2 (tutti) Pitch definition (setf pl2a (subseq row 0 6)) Rotations for other voices (setf pl2b (pitch-transpose -7 pl2a)) (setf pl2c (pitch-transpose -11 (pitch-invert pl2a))) (setf pl2d (pitch-transpose -3 (pitch-invert pl2a))) Lengths definition (setf rl2a '((q q -q q q) (e e e q -e))) (setf rl2b rl2a) (setf rl2c rl2a) (setf rl2d rl2a) OMN (setf p2a (make-omn :pitch pl2a :length rl2a)) (setf p2b (make-omn :pitch pl2b :length rl2b)) (setf p2c (make-omn :pitch pl2c :length rl2c)) (setf p2d (make-omn :pitch pl2d :length rl2d)) Global transposition (setf tlist-2a '(0)) (setf tlist-2b tlist-2a) Voices (setf lsop2 (ambitus '(e4 g5) (filter-tie (pitch-transpose tlist-2a p2a)))) (setf lalt2 (ambitus '(c4 d5) (filter-tie (pitch-transpose tlist-2a p2b)))) (setf lten2 (ambitus '(c3 c4) (filter-tie (pitch-transpose tlist-2b p2c)))) (setf lbas2 (ambitus '(g2 g3) (filter-tie (pitch-transpose tlist-2b p2d)))) Kyrie2 (Spirale) Spirale p1 (setf bass1 '(q d3 e3 d3 e3 e3 fs3 e3 fs3)) (setf psop (gen-retrograde row)) (setf lsop (ql '(16 e))) (setf lalt lsop) (setf lten lsop) (setf palt (pitch-transpose -4 psop)) (setf pten (pitch-transpose -8 psop)) (setf sop1 (make-omn :pitch psop :length lsop)) (setf alt1 (make-omn :pitch palt :length lalt)) (setf ten1 (make-omn :pitch pten :length lten)) (setf bas1 bass1) Spirale p2 (setf trsp2 2) (setf sop2 (pitch-transpose trsp2 sop1)) (setf alt2 (pitch-transpose trsp2 alt1)) (setf ten2 (pitch-transpose trsp2 ten1)) (setf bas2 (pitch-transpose trsp2 bass1)) Spirale p3 (setf trsp3 5) (setf sop3 (pitch-transpose trsp3 '(q b4 ff = -))) (setf alt3 (pitch-transpose trsp3 '(q e4 ff = -))) (setf ten3 (pitch-transpose trsp3 '(q g3a3 ff = -))) (setf bas3 (pitch-transpose trsp3 '(q d3 ff = -))) Spirale p4 (setf trsp4 5) (setf sop4 (pitch-transpose trsp4 '(q b4 = - e b4 = q c5 b4 -))) (setf alt4 (pitch-transpose trsp4 '(q e4 = - e e4 = q f4 e4 -))) (setf ten4 (pitch-transpose trsp4 '(q g3a3 = - e g3a3 = q fs3gs3 g3a3 -))) (setf bas4 (pitch-transpose trsp4 '(q d3 = - e d3 = q cs3 d3 -))) Spirale assembly (setf lbas3 (append bas1 bas2 bas3 bas4)) (setf lsop3 (append sop1 sop2 sop3 sop4)) (setf lalt3 (append alt1 alt2 alt3 alt4)) (setf lten3 (append ten1 ten2 ten3 ten4)) Full Assembly (setf sopline (assemble-seq lsop1 lsop2 lsop3)) (setf altline (assemble-seq lalt1 lalt2 lalt3)) (setf tenline (assemble-seq lten1 lten2 lten3)) (setf basline (assemble-seq lbas1 lbas2 lbas3)) (setf path (tonality-series '(chromatic))) (setf sopline (ambitus sopamb (tonality-map path sopline))) (setf altline (ambitus altamb (tonality-map path altline))) (setf tenline (ambitus tenamb (tonality-map path tenline))) (setf basline (ambitus bassamb (tonality-map path basline))) Lyrics (setf soptext1 '("ky ri e ky ri e ky - rie - chri ste chri ste e le i son chri ste e le i son ky - rie - chri - ste - ky - rie - chri - ste - ky - rie - chri - ste - ky - rie - chri - ste - ky rie chri ste e le i son")) (setf alttext1 '("ky ri e ky ri e e le i son ky ri e chri ste e le i son ky - rie - chri - ste - ky - rie - chri - ste - ky - rie - chri - ste - ky - rie - chri - ste - ky rie chri ste e le i son")) (setf tentext1 '("ky ri e ky rie - ki ri e e le i son chri ste e le i son ky - rie - chri - ste - ky - rie - chri - ste - ky - rie - chri - ste - ky - rie - chri - ste - ky rie chri ste e le i son")) (setf basstext1 '("ky ri - e chri ste chri ste e le i son chri ste e le i son ky rie chri ste ky rie chri ste ky rie chri ste ky rie chri ste ky rie chri ste e le i son")) Score definition (def-score Kyrie-1 (:key-signature atonal :time-signature (get-time-signature rl1a) :title "Kyrie" :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :tempo 72 :layout (choir-satb-layout 'sop 'alt 'tnr 'bas)) (sop :omn sopline :text soptext1 :sound 'gm :program 0) (alt :omn altline :text alttext1) (tnr :omn tenline :text tentext1) (bas :omn basline :text basstext1)) SB. Kyrie.opmo
  22. Bonjour, pour des infos sur les articulations pour les cuivres, vous pouvez regarder les section 7.1/ 7.2/ 7.3 et 7.4 dans la doc de "OMN, Le langage." Pour l'acquisition des fonctions, il faut s'amuser avec Opusmodus, jouer avec lui et l'acquisition se fait naturellement , pas à pas. Cela prend un peu de temps mais une fois le langage maitrisé, c'est un vrai bonheur que de s'exprimer musicalement avec Opmo. Les vidéos postées récemment sur votre blog sont intéressantes , particulièrement celle utilisant Notion5 (que j'ai d'ailleurs utilisé pour le rendu de LessThanEight). Continuez sur ce chemin car visiblement , vous êtes sur la bonne voie. Bonne composition avec Opusmodus ! SB.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy