Jump to content

Stephane Boussuge

core_group_6
  • Content Count

    546
  • Joined

  • Last visited

  • Days Won

    148

Everything posted by Stephane Boussuge

  1. Stephane Boussuge

    HELP needed on Jazz Lines from fragments

    Great ! i will be fan of this function ! S.
  2. Stephane Boussuge

    Snippet with key signatures

    As an alternative solution, You may use Torsten Anders's preview-score function for doing what you want: SB.
  3. Stephane Boussuge

    The learning curve..thoughts

    I agree at 100% !!! Would be good to share this advice on social media etc... 😉 S.
  4. Stephane Boussuge

    Logic X 16midiInstrument Template

    Here is one of my Logic X template for working with Opusmodus. 16MidiInInstrTemplate.zip
  5. Stephane Boussuge

    [HELP] Removing white spaces from a list ?

    Personally, i like very much to use the loop macro facilities, much clear and easy for me than recursion. Also, I am a big fan of it because it is very powerful. SB.
  6. Stephane Boussuge

    Request: make-omn

    (make-omn :pitch '((c4 d4 e4 f4 g4)) :length '((s s s s q)) :articulation '((num1 num2 num3 num4 num5)) ) S.
  7. Stephane Boussuge

    Pluton for Orchestra

    In memoriam Narcis Bonet who was one of my teachers. Opusmodus score attached. SB. PlutonV1-02.opmo
  8. Stephane Boussuge

    Prelude for Piano 171218

    Here's a small Prelude for Piano. SB.
  9. Stephane Boussuge

    Prelude for Piano 171218

    Hi Julio that score use the pcs 7-33 as pitch material. It use also a vector mapping on "reservoirs" of motives for the music generation. All this was done on the fly on a draft file. Once done, i've used pprint for pprint the score on my finale opmo score file and add some few treatment for creating the coda. Score attached to this post. All the best S. prelpia171218.opmo
  10. A score for String Quartet and Clarinet. Global random seed initialisation for the whole score. (init-seed 37929) Harmonic paths for each section of the piece. (setf path1 (tonality-series '(chromatic) :root (rnd-sample 64 '(d4 e4 fs4 gs4 as4)))) (setf path2 (tonality-series '(chromatic) :root (rnd-sample 64 '(c4 ds4 f4 g4 a4)))) (setf path3 (tonality-series '(chromatic) :root (rnd-sample 64 '(c4 ds4 f4 g4 a4)))) (setf path4 (tonality-series '(chromatic) :root (rnd-sample 64 '(d4 e4 fs4 gs4 as4)))) (setf path5 (tonality-series '(chromatic) :root (rnd-sample 64 '(c4 ds4 f4 g4 a4)))) (setf path6 (tonality-series '(chromatic) :root (rnd-sample 64 '(c4 ds4 f4 g4 a4)))) (setf path7 (tonality-series '(chromatic) :root (rnd-sample 64 '(c4 ds4 f4 g4 a4)))) Part1 (13-77) Definition of size (number of bars) for the section. (setf size 64) Binary Mute / Play system for each instrument. GEN-TRIM will extend the duration of the binary list until size parameter. (setf clamuteplay (gen-trim size '(1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0))) (setf vnmuteplay (gen-trim size '(0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1))) (setf vamuteplay (gen-trim size '(0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1))) (setf vcmuteplay (gen-trim size '(0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0))) Generation and smoothing of vectors for velocity. (setf velvect (vector-smooth 0.41 (gen-white-noise size))) (setf clavel (mclist (vector-to-velocity 'mp 'ff velvect))) (setf rvel (mclist (vector-to-velocity 'p 'f velvect))) Definition of basics rhythmics cells. (setf baselength '((q. q q) (e e e e e e e) (e e e e e e e) (q. e e e e) (e e e q e e) (e e e e e q))) Conditional articulation based on lengths. (def-case make-art ((3/8 1/4 1/4) '(leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/8 1/8) '(stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)) ((3/8 1/8 1/8 1/8 1/8) '(leg+marc stacc stacc leg leg)) ((1/8 1/8 1/8 1/4 1/8 1/8) '(stacc+marc stacc stacc leg+marc leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/4) '(stacc+marc stacc stacc stacc+marc leg leg)) (otherwise '(leg))) Cello Ostinato Pitch def. Random sample of integer, conversion to pitch and append 3 repeated c2 pitch in front. (setf vc1.pitch (gen-loop size (append '(c2 = =) (integer-to-pitch (rnd-sample 4 (gen-integer -24 -6)))))) Length (setf vc1.length (gen-repeat size '((e e e e e e e)))) Articulation (setf vc1.art (gen-repeat size '((stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)))) OMN generation (setf vc1.omn (make-omn :pitch vc1.pitch :length vc1.length :articulation vc1.art :velocity rvel)) Mapping (setf vc1.map (tonality-map path1 vc1.omn)) Ambitus (setf vc1 (ambitus '(c2 c4) vc1.map)) Alto Pitch def. (setf alt.pitch (gen-loop size (integer-to-pitch (rnd-sample 7 (gen-integer -12 0))))) Length (setf alt.len (gen-repeat size '((e e e e e e e)))) Articulation (setf alt.art (gen-repeat size '((stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)))) OMN generation (setf alt1.omn (make-omn :pitch alt.pitch :length alt.len :articulation alt.art :velocity rvel)) Mapping (setf alt.map (tonality-map path1 alt1.omn)) Ambitus constraint (setf alt1 (ambitus '(c3 g5) alt.map)) Violin Pitch (setf vn1.pitch (gen-loop size (integer-to-pitch (rnd-sample 7 (gen-integer -5 12))))) Random choice of length cells in baselength list. (setf vn1.len (rnd-sample size baselength)) Articulation (setf vn1.art (make-art vn1.len)) OMN assembly (setf vn1.omn (make-omn :pitch vn1.pitch :length vn1.len :articulation vn1.art :velocity rvel)) Mapping (setf vn1.map (tonality-map path1 vn1.omn)) Ambitus constraint (setf vn1 (ambitus '(g3 g6) vn1.map)) Clarinet Pitch generation from vector (setf clavect (gen-white-noise 256)) Convert vector to pitch (setf clapitch (vector-to-pitch '(g3 c5) clavect)) Random choice of length cells in baselength list. (setf clalen (rnd-sample size baselength)) Articulation (setf claart (make-art clalen)) OMN (setf cla1.omn (make-omn :pitch clapitch :length clalen :velocity clavel :articulation claart)) Mapping (setf cla1.map (tonality-map path1 cla1.omn)) Ambitus (setf cla1.amb (ambitus '(a3 g5) cla1.map)) Adding the rests (setf cla1 (length-weight cla1.amb :weight '(8 1))) Mute/Play Application (setf cla1mp (binary-timeline clamuteplay cla1)) (setf vn1mp (binary-timeline vnmuteplay vn1)) (setf va1mp (binary-timeline vamuteplay alt1)) (setf vc1mp (binary-timeline vcmuteplay vc1)) Time signatures (setf ts (get-time-signature vc1 :group '((3 2 2)))) Now we define the score (def-score LessThanEight-1 (:title "Less Than Eight - I" :composer "Stephane Boussuge" :copyright "Copyright 2014 Stephane Boussuge" :key-signature 'atonal :time-signature ts :tempo 144 :layout (list (clarinet-layout 'clarinet) (bracket-group (violin-layout 'violin) (viola-layout 'viola) (violoncello-layout 'cello)))) (clarinet :omn cla1mp :channel 1 :sound 'gm :program 'clarinet) (violin :omn vn1mp :channel 2 :sound 'gm :program 'violin) (viola :omn va1mp :channel 3 :sound 'gm :program 'viola) (cello :omn vc1mp :channel 4 :sound 'gm :program 'cello)) Part2 (78-142) Definition of size (number of bars) for the section. (setf size 64) Binary Mute / Play system for each instrument. GEN-TRIM will extend the duration of the binary list until size parameter. (setf clamuteplay (gen-trim size '(1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0))) (setf vnmuteplay (gen-trim size '(0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1))) (setf vamuteplay (gen-trim size '(0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1))) (setf vcmuteplay (gen-trim size '(0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0))) Generation and smoothing of vectors for velocity. (setf velvect (vector-smooth 0.41 (gen-white-noise size))) (setf clavel (mclist (vector-to-velocity 'mp 'ff velvect))) (setf rvel (mclist (vector-to-velocity 'p 'f velvect))) Definition of basics rhythmics cells. (setf baselength '((q. q q) (e e e e e e e) (q. e e e e) (e e e q e e) (e e e q -q))) Conditionnal articulation based on lengths. (def-case make-art ((3/8 1/4 1/4) '(leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/8 1/8) '(stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)) ((3/8 1/8 1/8 1/8 1/8) '(leg+marc stacc stacc leg leg)) ((1/8 1/8 1/8 1/4 1/8 1/8) '(stacc+marc stacc stacc leg+marc leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/4) '(stacc+marc stacc stacc stacc+marc leg leg)) (otherwise '(leg))) Cello Pitch (setf vc1.pitch (append '(c2 = =) (integer-to-pitch (rnd-sample 4 (gen-integer -24 -6))))) Random choice of length cells in baselength list. (setf vc1.len (rnd-sample size baselength)) Articulation (setf vc1.art (make-art vc1.len)) OMN (setf vc1.omn (make-omn :pitch vc1.pitch :length vc1.len :velocity rvel :articulation vc1.art)) Mapping (setf vc1.map (tonality-map path2 vc1.omn)) Ambitus (setf vc1 (ambitus '(c2 c4) vc1.map)) Viola Pitch (setf alt1.pitch (integer-to-pitch (rnd-sample 7 (gen-integer -12 0)))) Random choice of length cells in baselength list. (setf alt1.len (rnd-sample size baselength)) Articulation (setf alt1.art (make-art alt1.len)) OMN (setf alt1.omn (make-omn :pitch alt1.pitch :length alt1.len :velocity rvel :articulation alt1.art)) Mapping (setf alt1.map (tonality-map path2 alt1.omn)) Ambitus (setf alt1 (ambitus '(c3 g5) alt1.omn)) Violin Pitch (setf vn1.pitch (gen-loop size (integer-to-pitch (rnd-sample 7 (gen-integer -5 12))))) Random choice of length cells in baselength list. (setf vn1.len (rnd-sample size baselength)) Articulation (setf vn1.art (make-art vn1.len)) OMN (setf vn1.omn (make-omn :pitch vn1.pitch :length vn1.len :articulation vn1.art :velocity rvel)) Mapping (setf vn1.map (tonality-map path2 vn1.omn)) Ambitus (setf vn1 (ambitus '(g3 g6) vn1.map)) Clarinet Pitch (setf clapitch (vector-to-pitch '(g3 c5) clavect)) Random choice of length cells in baselength list. (setf clalen (rnd-sample size baselength)) Articulation (setf claart (make-art clalen)) OMN (setf cla1.omn (make-omn :pitch clapitch :length clalen :velocity clavel :articulation claart)) Mapping (setf cla1.map (tonality-map path2 cla1.omn)) Ambitus (setf cla1.amb (ambitus '(a3 g5) cla1.map)) Adding the rests (setf cla1 (length-weight cla1.amb :weight '(8 1))) Mute/Play Application (setf cla1mp (binary-timeline clamuteplay cla1)) (setf vn1mp (binary-timeline vnmuteplay vn1)) (setf va1mp (binary-timeline vamuteplay alt1)) (setf vc1mp (binary-timeline vcmuteplay vc1)) Time signatures (setf ts (get-time-signature vc1 :group '((3 2 2)))) Score definition for Part 2 (def-score LessThanEight-2 (:title "Less Than Eight - II" :composer "Stephane Boussuge" :copyright "Copyright 2014 Stephane Boussuge" :key-signature 'atonal :time-signature ts :tempo 144 :layout (list (clarinet-layout 'clarinet) (bracket-group (violin-layout 'violin) (viola-layout 'viola) (violoncello-layout 'cello)))) (clarinet :omn cla1mp :channel 1 :sound 'gm :program 'clarinet) (violin :omn vn1mp :channel 2 :sound 'gm :program 'violin) (viola :omn va1mp :channel 3 :sound 'gm :program 'viola) (cello :omn vc1mp :channel 4 :sound 'gm :program 'cello)) Part3 (143-175) Definition of size (number of bars) for the section. (setf size 32) Adding one bar rest between part2 and part3 (cons 0) Binary Mute / Play system for each instrument. GEN-TRIM will extend the duration of the binary list until size parameter. (setf clamuteplay (cons 0 (gen-trim size '(0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0)))) (setf vnmuteplay (cons 0 (gen-trim size '(0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1)))) (setf vamuteplay (cons 0 (gen-trim size '(0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1)))) (setf vcmuteplay (cons 0 (gen-trim size '(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0)))) Generation and smoothing of vectors for velocity. (setf velvect (vector-smooth 0.41 (gen-white-noise size))) (setf clavel (mclist (vector-to-velocity 'mp 'ff velvect))) (setf rvel (mclist (vector-to-velocity 'p 'f velvect))) Definition of basics rhythmics cells. (setf baselength '((q. q q) (q. q. -e) (h q.) (h. -e) (-e q q q) (-q q e e e) (h. e))) Conditional articulation based on lengths. (def-case make-art ((3/8 1/4 1/4) '(leg leg leg)) ((3/8 1/8 1/8 1/8 1/8) '(leg+marc stacc stacc leg leg)) ((1/8 1/8 1/8 1/4 1/8 1/8) '(stacc+marc stacc stacc leg+marc leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/4) '(stacc+marc stacc stacc stacc+marc leg leg)) ((3/8 3/8 -1/8) '(leg+marc leg)) ((1/2 3/8) '(leg+marc leg)) ((-1/4 1/4 1/8 1/8 1/8) '(leg stacc stacc stacc)) (otherwise '(leg))) Shared material for the section Smoothed vector generation from white noise (setf pvect (vector-smooth 0.84 (gen-white-noise 256))) Pitch from smoothed vector (setf phpch (vector-to-pitch '(g3 g5) pvect)) Random choice of length cells in baselength list. (setf phlen (rnd-sample size baselength)) Articulation (setf phart (make-art phlen)) Cello OMN (setf vc1.omn (make-omn :pitch phpch :length phlen :velocity rvel :articulation phart)) Mapping (setf vc1.map (tonality-map path3 vc1.omn)) Tie repeated notes (setf vc1.ft (filter-tie vc1.map)) Ambitus constraint (setf vc1 (ambitus '(c2 c4) vc1.ft)) Viola OMN with rotation on pitch and length (setf alt1.omn (make-omn :pitch (gen-rotate 1 phpch) :length (gen-rotate 1 phlen) :velocity rvel :articulation phart)) Mapping (setf alt1.map (tonality-map path3 alt1.omn)) Tie repeated notes (setf alt1.ft (filter-tie alt1.map)) Ambitus (setf alt1 (ambitus '(c3 g5) alt1.ft)) Violin OMN with rotation on pitch and length (setf vn1.omn (make-omn :pitch (gen-rotate 2 phpch) :length (gen-rotate 2 phlen) :velocity rvel :articulation phart)) Mapping (setf vn1.map (tonality-map path3 vn1.omn)) Tie repeated notes (setf vn1.ft (filter-tie vn1.map)) Ambitus (setf vn1 (ambitus '(g3 g6) vn1.ft)) Clarinet Vector generation (setf clavect (gen-white-noise 256)) Pitch from vector (setf clapitch (vector-to-pitch '(g3 c5) clavect)) Random choice of length cells in baselength list. (setf clalen (rnd-sample size baselength)) Articulation (setf claart (make-art clalen)) OMN (setf cla1.omn (make-omn :pitch clapitch :length clalen :velocity clavel :articulation claart)) Mapping (setf cla1.map (tonality-map path3 cla1.omn)) Tie repeated notes. (setf cla1.ft (filter-tie cla1.map)) Ambitus constraint (setf cla1.amb (ambitus '(a3 g5) cla1.ft)) Adding the rests (setf cla1 (length-weight cla1.amb :weight '(8 1))) Mute/Play Application (setf cla1mp (binary-timeline clamuteplay cla1)) (setf vn1mp (binary-timeline vnmuteplay vn1)) (setf va1mp (binary-timeline vamuteplay alt1)) (setf vc1mp (binary-timeline vcmuteplay vc1)) Time signature (setf ts (get-time-signature vc1 :group '((3 2 2)))) Score definition for part 3 (def-score LessThanEight-3 (:title "Less Than Eight - III" :composer "Stephane Boussuge" :copyright "Copyright 2014 Stephane Boussuge" :key-signature 'atonal :time-signature ts :tempo 144 :layout (list (clarinet-layout 'clarinet) (bracket-group (violin-layout 'violin) (viola-layout 'viola) (violoncello-layout 'cello)))) (clarinet :omn cla1mp :channel 1 :sound 'gm :program 'clarinet) (violin :omn vn1mp :channel 2 :sound 'gm :program 'violin) (viola :omn va1mp :channel 3 :sound 'gm :program 'viola) (cello :omn vc1mp :channel 4 :sound 'gm :program 'cello)) Introduction (1-12) Number of bars for introduction (setf size 24) Binary Mute / Play system for each instrument. GEN-TRIM will extend the duration of the binary list until size parameter. (setf clamuteplay (gen-trim size '(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1))) (setf vnmuteplay (gen-trim size '(0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 1 1))) (setf vamuteplay (gen-trim size '(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1))) (setf vcmuteplay (gen-trim size '(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1))) Definition of basics rhythmics cells. (setf baselength '((q. q q) (e e e e e e e) (e e e e e e e) (q. e e e e) (e e e q e e) (e e e e e q))) Conditional articulation based on lengths. (def-case make-art ((3/8 1/4 1/4) '(leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/8 1/8) '(stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)) ((3/8 1/8 1/8 1/8 1/8) '(leg+marc stacc stacc leg leg)) ((1/8 1/8 1/8 1/4 1/8 1/8) '(stacc+marc stacc stacc leg+marc leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/4) '(stacc+marc stacc stacc stacc+marc leg leg)) (otherwise '(leg))) Cello Pitch (setf vc1.pitch (gen-loop size (append '(c2 = =) (integer-to-pitch (rnd-sample 4 (gen-integer -24 -6)))))) Length (setf vc1.len (gen-repeat size '((e e e e e e e)))) Velocity (setf vc1.vel (gen-repeat size '((p)))) Articulation (setf vc1.art (gen-repeat size '((stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)))) OMN assembly (setf vc1.omn (make-omn :pitch vc1.pitch :length vc1.len :velocity vc1.vel :articulation vc1.art)) Mapping (setf vc1.map (tonality-map path1 vc1.omn)) Ambitus (setf vc1 (ambitus '(c2 c4) vc1.map)) Viola Pitch (setf alt1.pitch (gen-loop size (integer-to-pitch (rnd-sample 7 (gen-integer -12 0))))) Length (setf alt1.len (gen-repeat size '((e e e e e e e)))) Velocity (setf alt1.vel (gen-repeat size '((p)))) Articulation (setf alt1.art (gen-repeat size '((stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)))) OMN assembly (setf alt1.omn (make-omn :pitch alt1.pitch :length alt1.len :velocity alt1.vel :articulation alt1.art)) Mapping (setf alt1.map (tonality-map path1 alt1.omn)) Ambitus (setf alt1 (ambitus '(c3 g5) alt1.map)) Violin Pitch (setf vn1.pitch (gen-loop size (integer-to-pitch (rnd-sample 7 (gen-integer -5 12))))) Length (random choice in baselength list) (setf vn1.len (rnd-sample size baselength)) Articulation (setf vn1.art (make-art vn1.len)) Velocity (setf vn1.vel (gen-repeat size '((p)))) OMN (setf vn1.omn (make-omn :pitch vn1.pitch :length vn1.len :velocity vn1.vel :articulation vn1.art)) Mapping (setf vn1.map (tonality-map path1 vn1.omn)) Ambitus (setf vn1 (ambitus '(g3 g6) vn1.map)) Clarinet White-noise vector generation (setf clavect (gen-white-noise 256)) Transforming vector to pitch (setf cla1.pitch (vector-to-pitch '(g3 c5) clavect)) Length (setf cla1.len (rnd-sample size baselength)) Articulation (setf cla1.art (make-art cla1.len)) Velocity (setf cla1.vel (gen-repeat size '((mp)))) OMN (setf cla1.omn (make-omn :pitch cla1.pitch :length cla1.len :velocity cla1.vel :articulation cla1.art)) Mapping (setf cla1.map (tonality-map path1 cla1.omn)) Ambitus (setf cla1.amb (ambitus '(a3 g5) cla1.map)) Adding some rest (setf cla1 (length-weight cla1.amb :weight '(8 1))) Mute/Play Application (setf cla1mp (binary-timeline clamuteplay cla1)) (setf vn1mp (binary-timeline vnmuteplay vn1)) (setf va1mp (binary-timeline vamuteplay alt1)) (setf vc1mp (binary-timeline vcmuteplay vc1)) Time signature (setf ts (get-time-signature vc1 :group '((3 2 2)))) Score definition for Introduction (def-score LessThanEight-intro (:title "Less Than Eight - Intro" :composer "Stephane Boussuge" :copyright "Copyright 2014 Stephane Boussuge" :key-signature 'atonal :time-signature ts :tempo 144 :layout (list (clarinet-layout 'clarinet) (bracket-group (violin-layout 'violin) (viola-layout 'viola) (violoncello-layout 'cello)))) (clarinet :omn cla1mp :channel 1 :sound 'gm :program 'clarinet) (violin :omn vn1mp :channel 2 :sound 'gm :program 'violin) (viola :omn va1mp :channel 3 :sound 'gm :program 'viola) (cello :omn vc1mp :channel 4 :sound 'gm :program 'cello)) Part4 (tutti) (176-184) Number of bars (size) for the section (setf size 8) Binary Mute / Play system for each instrument. GEN-TRIM will extend the duration of the binary list until size parameter. (setf clamuteplay (gen-trim size '(1 1 1 1 1 1 1 1))) (setf vnmuteplay (gen-trim size '(1 1 1 1 1 1 1 1))) (setf vamuteplay (gen-trim size '(1 1 1 1 1 1 1 1))) (setf vcmuteplay (gen-trim size '(1 1 1 1 1 1 1 1))) Definition of basics rhythmics cells. (setf baselength '((q. q q) (e e e e e e e) (e e e e e e e) (q. e e e e) (e e e q e e) (e e e e e q))) Conditional articulation based on lengths. (def-case make-art ((3/8 1/4 1/4) '(leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/8 1/8) '(stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)) ((3/8 1/8 1/8 1/8 1/8) '(leg+marc stacc stacc leg leg)) ((1/8 1/8 1/8 1/4 1/8 1/8) '(stacc+marc stacc stacc leg+marc leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/4) '(stacc+marc stacc stacc stacc+marc leg leg)) (otherwise '(leg))) Global length generation (random choice in baselength list) for all instruments (tutti). (setf tuttilen (rnd-sample size baselength)) Cello Pitch (setf vc1.pitch (append '(c2 = =) (integer-to-pitch (rnd-sample 4 (gen-integer -24 -6))))) Length (setf vc1.len tuttilen) Articulation (setf vc1.art (make-art vc1.len)) Velocity (setf vc1.vel (gen-repeat size '((f)))) OMN (setf vc1.omn (make-omn :pitch vc1.pitch :length vc1.len :velocity vc1.vel :articulation vc1.art)) Mapping (setf vc1.map (tonality-map path4 vc1.omn)) Tie repeated notes (setf vc1.ft (filter-tie vc1.map)) Ambitus (setf vc1 (ambitus '(c2 c4) vc1.ft)) Viola Pitch (setf alt1.pitch (integer-to-pitch (rnd-sample 7 (gen-integer -12 0)))) Length (setf alt1.len tuttilen) Articulation (setf alt1.art (make-art vc1.len)) Velocity (setf al1.vel (gen-repeat size '((f)))) OMN (setf alt1.omn (make-omn :pitch alt1.pitch :length alt1.len :velocity alt1.vel :articulation alt1.art)) Mapping (setf alt1.map (tonality-map path4 alt1.omn)) Tie repeated notes (setf alt1.ft (filter-tie alt1.map)) Ambitus (setf alt1 (ambitus '(c3 g5) alt1.ft)) Violin Pitch (setf vn1.pitch (gen-loop size (integer-to-pitch (rnd-sample 7 (gen-integer -5 12))))) Length (setf vn1.len tuttilen) Articulation (setf vn1.art (make-art vn1.len)) OMN (setf vn1.omn (make-omn :pitch vn1.pitch :length vn1.len :velocity '((f)) :articulation vn1.art)) Mapping (setf vn1.map (tonality-map path4 vn1.omn)) Tie repeated notes (setf vn1.ft (filter-tie vn1.map)) Ambitus (setf vn1 (ambitus '(g3 g6) vn1.ft)) Clarinet Pitch Vector generation (setf clavect (gen-white-noise 256)) Vector-to-pitch (setf clapitch (vector-to-pitch '(g3 c5) clavect)) Length (setf clalen tuttilen) Articulation (setf claart (make-art clalen)) Velocity (setf clavel (gen-repeat size '((ff)))) OMN (setf cla1.omn (make-omn :pitch clapitch :length clalen :velocity clavel :articulation claart)) Mapping (setf cla1.map (tonality-map path4 cla1.omn)) Tie repeated notes (setf cla1.ft (filter-tie cla1.map)) Ambitus (setf cla1 (ambitus '(a3 g5) cla1.ft)) Mute/Play Application (setf cla1mp (binary-timeline clamuteplay cla1)) (setf vn1mp (binary-timeline vnmuteplay vn1)) (setf va1mp (binary-timeline vamuteplay alt1)) (setf vc1mp (binary-timeline vcmuteplay vc1)) Time signature (setf ts (get-time-signature vc1 :group '((3 2 2)))) Score definition (def-score LessThanEight-4 (:title "Less Than Eight - IV" :composer "Stephane Boussuge" :copyright "Copyright 2014 Stephane Boussuge" :key-signature 'atonal :time-signature ts :tempo 144 :layout (list (clarinet-layout 'clarinet) (bracket-group (violin-layout 'violin) (viola-layout 'viola) (violoncello-layout 'cello)))) (clarinet :omn cla1mp :channel 1 :sound 'gm :program 'clarinet) (violin :omn vn1mp :channel 2 :sound 'gm :program 'violin) (viola :omn va1mp :channel 3 :sound 'gm :program 'viola) (cello :omn vc1mp :channel 4 :sound 'gm :program 'cello)) Part5 (185-207) Number of bars (size) for the section (setf size 22) Binary Mute / Play system for each instrument. GEN-TRIM will extend the duration of the binary list until size parameter. (setf clamuteplay (gen-trim size '(1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0))) (setf vnmuteplay (gen-trim size '(0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1))) (setf vamuteplay (gen-trim size '(0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1))) (setf vcmuteplay (gen-trim size '(0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0))) Generate a white noise vector and smooth it. (setf velvect (vector-smooth 0.41 (gen-white-noise size))) Map the vector to dynamics value (velocity) (setf clavel (mclist (vector-to-velocity 'mp 'ff velvect))) (setf rvel (mclist (vector-to-velocity 'p 'f velvect))) Definition of basics rhythmics cells. (setf baselength '((q. q q) (e e e e e e e) (q. e e e e) (e e e q e e) (e e e q -q))) Conditional articulation based on lengths. (def-case make-art ((3/8 1/4 1/4) '(leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/8 1/8) '(stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)) ((3/8 1/8 1/8 1/8 1/8) '(leg+marc stacc stacc leg leg)) ((1/8 1/8 1/8 1/4 1/8 1/8) '(stacc+marc stacc stacc leg+marc leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/4) '(stacc+marc stacc stacc stacc+marc leg leg)) (otherwise '(leg))) Clarinet Pitch Vector generation from white noise (setf clavect (gen-white-noise 256)) Map the vector to pitch (setf clapitch (vector-to-pitch '(g3 c5) clavect)) Random choice of length celles in baselength list. (setf clalen (rnd-sample size baselength)) Articulation (setf claart (make-art clalen)) OMN (setf cla1.omn (make-omn :pitch clapitch :length clalen :velocity clavel :articulation claart)) Mapping (setf cla1.map (tonality-map path5 cla1.omn)) Ambitus (setf cla1.amb (ambitus '(a3 g5) cla1.map)) Adding rest (setf cla1 (length-weight cla1.amb :weight '(8 1))) Cello Pitch (setf vc1.pitch (gen-rotate 1 clapitch)) Length (setf vc1.len (gen-rotate 1 clalen)) Articulation (setf vc1.art (make-art vc1.len)) OMN (setf vc1.omn (make-omn :pitch vc1.pitch :length vc1.len :velocity rvel :articulation vc1art)) Mapping (setf vc1.map (tonality-map path5 vc1.omn)) Ambitus (setf vc1 (ambitus '(c2 c4) vc1.omn)) Viola Pitch (setf alt1.pitch (gen-rotate 2 clapitch)) Length (setf alt1.len (gen-rotate 2 clalen)) Articulation (setf alt1.art (make-art alt1.len)) OMN assembly (setf alt1.omn (make-omn :pitch alt1.pitch :length alt1.len :velocity rvel :articulation alt1.art)) Mapping (setf alt1 (tonality-map path5 alt1.omn)) Ambitus (setf alt1 (ambitus '(c3 g5) alt1.omn)) Violin Pitch (setf vn1.pitch (gen-rotate 3 clapitch)) Length (setf vn1.len (gen-rotate 3 clalen)) Articulation (setf vn1.art (make-art vn1.len)) OMN (setf vn1.omn (make-omn :pitch vn1.pitch :length vn1.len :velocity rvel :articulation vn1.art)) Mapping (setf vn1.map (tonality-map path5 vn1.omn)) Ambitus (setf vn1 (ambitus '(g3 g6) vn1.omn)) Mute/Play Application (setf cla1mp (binary-timeline clamuteplay cla1)) (setf vn1mp (binary-timeline vnmuteplay vn1)) (setf va1mp (binary-timeline vamuteplay alt1)) (setf vc1mp (binary-timeline vcmuteplay vc1)) Time signature (setf ts (get-time-signature vc1 :group '((3 2 2)))) Score definition for part 5 (def-score LessThanEight-5 (:title "Less Than Eight - V" :composer "Stephane Boussuge" :copyright "Copyright 2014 Stephane Boussuge" :key-signature 'atonal :time-signature ts :tempo 144 :layout (list (clarinet-layout 'clarinet) (bracket-group (violin-layout 'violin) (viola-layout 'viola) (violoncello-layout 'cello)))) (clarinet :omn cla1mp :channel 1 :sound 'gm :program 'clarinet) (violin :omn vn1mp :channel 2 :sound 'gm :program 'violin) (viola :omn va1mp :channel 3 :sound 'gm :program 'viola) (cello :omn vc1mp :channel 4 :sound 'gm :program 'cello)) Part6 (208-272) Number of bars (size) for the section (setf size 64) Binary Mute / Play system for each instrument. GEN-TRIM will extend the duration of the binary list until size parameter. (setf clamuteplay (gen-trim size '(1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0))) (setf vnmuteplay (gen-trim size '(0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1))) (setf vamuteplay (gen-trim size '(0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1))) (setf vcmuteplay (gen-trim size '(0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0))) Generate a white noise vector and smooth it. (setf velvect (vector-smooth 0.41 (gen-white-noise size))) Map the vector to dynamics value (velocity) (setf clavel (mclist (vector-to-velocity 'mp 'ff velvect))) (setf rvel (mclist (vector-to-velocity 'p 'f velvect))) Definition of basics rhythmics cells. (setf baselength '((q. q q) (e e e e e e e) (e e e e e e e) (q. e e e e) (e e e q e e) (e e e e e q) (s s s s s s s s s s s s s s) (s s s s s s s s q -e) (q s s s s s s e e))) Conditional articulation based on lengths. (def-case make-art ((3/8 1/4 1/4) '(leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/8 1/8) '(stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)) ((3/8 1/8 1/8 1/8 1/8) '(leg+marc stacc stacc leg leg)) ((1/8 1/8 1/8 1/4 1/8 1/8) '(stacc+marc stacc stacc leg+marc leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/4) '(stacc+marc stacc stacc stacc+marc leg leg)) (otherwise '(leg))) Cello Pitch (setf vc1.pitch (gen-loop size (append '(c2 = =) (integer-to-pitch (rnd-sample 4 (gen-integer -24 -6)))))) Length (setf vc1.len (gen-repeat size '((e e e e e e e)))) Articulation (setf vc1.art (gen-repeat size '((stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)))) Velocity (setf vc1.vel rvel) OMN (setf vc1.omn (make-omn :pitch vc1.pitch :length vc1.len :articulation vc1.art :velocity vc1.vel)) Mapping (setf vc1.map (tonality-map path6 vc1.omn)) Ambitus (setf vc1 (ambitus '(c2 c4) vc1.map)) Viola Pitch (setf alt1.pitch (gen-loop size (integer-to-pitch (rnd-sample 7 (gen-integer -12 0))))) Length (setf alt1.len (gen-repeat size '((e = = = = = =)))) Articulation (setf alt1.art (gen-repeat size '((stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)))) OMN (setf alt1.omn (make-omn :pitch alt1.pitch :length alt1.len :articulation alt1.art)) Mapping (setf alt1.map (tonality-map path6 alt1.omn)) Remove repetitions (setf alt1.rpt (filter-repeat 1 alt1.map)) Ambitus (setf alt1 (ambitus '(c3 g5) alt1.rpt)) Violin Pitch (setf vn1.pitch (gen-loop size (integer-to-pitch (rnd-sample 7 (gen-integer -5 12))))) Length (setf vn1.len (rnd-sample size baselength)) Articulation (setf vn1.art (make-art vn1.len)) Dynamics (velocity) (setf vn1.vel rvel) OMN (setf vn1.omn (make-omn :pitch vn1.pitch :length vn1.len :articulation vn1.art :velocity vn1.vel)) Mapping (setf vn1.map (tonality-map path6 vn1.omn)) Remove repetitions (setf vn1.rpt (filter-repeat 1 vn1.map)) Ambitus (setf vn1 (ambitus '(g3 g6) vn1.rpt)) Clarinet Pitch White noise vector generation (setf clavect (gen-white-noise 256)) Map vector to pitch (setf clapitch (vector-to-pitch '(g3 c5) clavect)) Random selection of rhytmics cells in baselength list (setf clalen (rnd-sample size baselength)) Articulation (setf claart (make-art clalen)) OMN (setf cla1.omn (make-omn :pitch clapitch :length clalen :velocity clavel :articulation claart)) Mapping (setf cla1.map (tonality-map path6 cla1.omn)) Tie repeated notes (setf cla1.ft (filter-tie cla1.map)) Ambitus (setf cla1.amb (ambitus '(a3 g5) cla1.ft)) Adding some rest (setf cla1 (length-weight cla1.amb :weight '(8 1))) Mute/Play Application (setf cla1mp (binary-timeline clamuteplay cla1)) (setf vn1mp (binary-timeline vnmuteplay vn1)) (setf va1mp (binary-timeline vamuteplay alt1)) (setf vc1mp (binary-timeline vcmuteplay vc1)) Time signature (setf ts (get-time-signature vc1 :group '((3 2 2)))) Score definition for part 6 (def-score LessThanEight-6 (:title "Less Than Eight - VI" :composer "Stephane Boussuge" :copyright "Copyright 2014 Stephane Boussuge" :key-signature 'atonal :time-signature ts :tempo 144 :layout (list (clarinet-layout 'clarinet) (bracket-group (violin-layout 'violin) (viola-layout 'viola) (violoncello-layout 'cello)))) (clarinet :omn cla1mp :channel 1 :sound 'gm :program 'clarinet) (violin :omn vn1mp :channel 2 :sound 'gm :program 'violin) (viola :omn va1mp :channel 3 :sound 'gm :program 'viola) (cello :omn vc1mp :channel 4 :sound 'gm :program 'cello)) Part7 (coda) (273-281) Number of bars (size) for the section (setf size 8) Binary Mute / Play system for each instrument. GEN-TRIM will extend the duration of the binary list until size parameter. (setf clamuteplay (gen-trim size '(1 1 1 1 1 1 1 1))) (setf vnmuteplay (gen-trim size '(1 1 1 1 1 1 1 1))) (setf vamuteplay (gen-trim size '(1 1 1 1 1 1 1 1))) (setf vcmuteplay (gen-trim size '(1 1 1 1 1 1 1 1))) Velocity for each bar. (setf rvel (mclist '(p p mp mp mf mf f ff))) Definition of basics rhythmics cells. (setf baselength '((q. q q) (e e e e e e e) (e e e e e e e) (q. e e e e) (e e e q e e) (e e e e e q))) Conditional articulation based on lengths. (def-case make-art ((3/8 1/4 1/4) '(leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/8 1/8) '(stacc+marc stacc stacc stacc+marc stacc stacc+marc stacc)) ((3/8 1/8 1/8 1/8 1/8) '(leg+marc stacc stacc leg leg)) ((1/8 1/8 1/8 1/4 1/8 1/8) '(stacc+marc stacc stacc leg+marc leg leg leg)) ((1/8 1/8 1/8 1/8 1/8 1/4) '(stacc+marc stacc stacc stacc+marc leg leg)) (otherwise '(leg))) Cello Pitch (setf vc1.pitch (append '(c2 = =) (integer-to-pitch (rnd-sample 4 (gen-integer -24 -6))))) Length (random choice in baselength list) (setf tuttilen (rnd-sample size baselength)) Append tuttilen to one final rhytmic cell. (setf vc1.len (append tuttilen '((3/8 -2/8 2/8)))) Articulation (setf vc1.art (make-art vc1.len)) OMN (setf vc1.omn (make-omn :pitch vc1.pitch :length vc1.len :velocity rvel :articulation vc1.art)) Mapping (setf vc1.map (tonality-map path4 vc1.omn)) Tie repeated notes (setf vc1.ft (filter-tie vc1.map)) Ambitus (setf vc1 (ambitus '(c2 c4) vc1.ft)) Viola Pitch (setf alt1.pitch (integer-to-pitch (rnd-sample 7 (gen-integer -12 0)))) Length (setf alt1.len vc1.len) Articulation (setf alt1.art (make-art vc1.len)) OMN (setf alt1.omn (make-omn :pitch alt1.pitch :length alt1.len :velocity rvel :articulation alt1.art)) Mapping (setf alt1.map (tonality-map path4 alt1.omn)) Tie repeated notes. (setf alt1.ft (filter-tie alt1.map)) Ambitus (setf alt1 (ambitus '(c3 g5) alt1.ft)) Violin Pitch (setf vn1.pitch (gen-loop size (integer-to-pitch (rnd-sample 7 (gen-integer -5 12))))) Length (setf vn1.len vc1.len) Articulation (setf vn1.art (make-art vn1.len)) OMN (setf vn1.omn (make-omn :pitch vn1.pitch :length vn1len :velocity rvel :articulation vn1.art)) Mapping (setf vn1.map (tonality-map path4 vn1.omn)) Tie repeated notes. (setf vn1.ft (filter-tie vn1.map)) Ambitus (setf vn1 (ambitus '(g3 g6) vn1.ft)) Clarinet Pitch Generate a white noise vector (setf clavect (gen-white-noise 256)) Map vector to pitch (setf clapitch (vector-to-pitch '(g3 c5) clavect)) Length (setf clalen vc1.len) Articulation (setf claart (make-art clalen)) OMN (setf cla1.omn (make-omn :pitch clapitch :length clalen :velocity rvel :articulation claart)) Mapping (setf cla1.map (tonality-map path4 cla1.omn)) Tie repeated notes (setf cla1.ft (filter-tie cla1.map)) Ambitus (setf cla1.amb (ambitus '(a3 g5) cla1.amb)) Adding the rests (setf cla1 (length-weight cla1.amb :weight '(8 1))) Mute/Play Application (setf cla1mp (binary-timeline clamuteplay cla1)) (setf vn1mp (binary-timeline vnmuteplay vn1)) (setf va1mp (binary-timeline vamuteplay alt1)) (setf vc1mp (binary-timeline vcmuteplay vc1)) Time signature (setf ts (get-time-signature vc1 :group '((3 2 2)))) Score definition for Coda (part 7) (def-score LessThanEight-7 (:title "Less Than Eight - VII" :composer "Stephane Boussuge" :copyright "Copyright 2014 Stephane Boussuge" :key-signature 'atonal :time-signature ts :tempo 144 :layout (list (clarinet-layout 'clarinet) (bracket-group (violin-layout 'violin) (viola-layout 'viola) (violoncello-layout 'cello)))) (clarinet :omn cla1mp :channel 1 :sound 'gm :program 'clarinet) (violin :omn vn1mp :channel 2 :sound 'gm :program 'violin) (viola :omn va1mp :channel 3 :sound 'gm :program 'viola) (cello :omn vc1mp :channel 4 :sound 'gm :program 'cello)) Full score compilation (assembly) (compile-score '(LessThanEight-intro LessThanEight-1 LessThanEight-2 LessThanEight-3 LessThanEight-4 LessThanEight-5 LessThanEight-6 LessThanEight-7)) LessThanEightRv04.opmo
  11. Stephane Boussuge

    Harmonic Systems - Harmonizing from top notes (melodies)

    You can use pitch-class within pattern-map function: (pattern-map '(((0 1 9 4 2 5) (0 4 2 1 9 5)) ((11 8 10 3 7 6) (10 8 11 3 7 6))) '((c6 cs4 a4 e3 d6 f4) (b4 gs3 bb4 eb4 g5 fs6)) :pcs t) => ((c6 e4 d4 cs3 a6 f4) (bb4 gs3 b4 eb4 g5 fs6))
  12. Stephane Boussuge

    Help on WILDCARDS ? *

    You can use pitch-class within pattern-map function: (pattern-map '(((0 1 9 4 2 5) (0 4 2 1 9 5)) ((11 8 10 3 7 6) (10 8 11 3 7 6))) '((c6 cs4 a4 e3 d6 f4) (b4 gs3 bb4 eb4 g5 fs6)) :pcs t) => ((c6 e4 d4 cs3 a6 f4) (bb4 gs3 b4 eb4 g5 fs6))
  13. Stephane Boussuge

    On the Functions of death......

    May be Expansion-series functions pitch-repeat-transpose (re-incarnation 🙂 trim with gen-trim length-diminution or augmentation fragmentation with pitch-fragment gen-transition or gen-morph etc.. use weighted function to add more and more rest in music (length-weight) use text-to-pitch functions to create pitch structures based on the Death word or a death poem create vectors who go from top to bottom (or reverse) and use them for rhythm, pitch etc... (gen-tendency) the possibilities are endless 🙂 SB.
  14. Stephane Boussuge

    Harmonic Systems - Harmonizing from top notes (melodies)

    originally, i've made gen-chord3 with JP for using in this top to bottom approach. what is called root in gen-chord3 parameters was not thinked by me originaly as "root" but more cantus note on with to add other notes (below or not). S. But naturally, the gen-chord3 function is not conditionnal, so we have to think about something else but i think you can do that with pattern-match function. S. or also with def-case.
  15. Stephane Boussuge

    how to keep omn-notation?

    (gen-retrograde durations1 :omn t) => ((t s t) (t 13/96 3q) (5h = 3/35 7q = = = = 3/35 5h =) (3q 13/96 t) (t s t)) S.
  16. Stephane Boussuge

    transpose-on-event-number

    For span-ignore-pause, use the function gen-swallow SB.
  17. Stephane Boussuge

    Creating Custom Chord Symbols

    You may use text attributes. S.
  18. Stephane Boussuge

    Make-chord-if-length study

    EDIT: Sligthly improved version with chord-interval-replace for finalising the final score assembly: ;;; UTILITIES ;;; ======================================== ;;; 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)) (setf seed (rnd-seed seed)) (let (pitches) (do-verbose ("gen-pitch-line :seed ~s" 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))))) #| USAGE (gen-pitch-line 24 :compress 0.42 :type :white :filter-repeat 1) (gen-pitch-line 24 :compress 0.42 :type :pink :filter-repeat 1) (gen-pitch-line 24 :compress 0.42 :type :extreme :filter-repeat 1) (gen-eval 8 '(make-omn :pitch (gen-pitch-line 24 :compress 0.42 :type :white :filter-repeat 1) :length (euclidean-rhythm 16 1 16 's :type 2) ) :seed 33) |# ;;; OMN-ARTICULATION-PROCESSOR (defun omn-articulation-processor (map omn-mat &key (section nil)) (do-verbose ("omn-articulation-processor") (let ((artic (pattern-map map (omn :length omn-mat) :otherwise '(default) :section section)) ) (omn-replace :articulation artic omn-mat) ))) ;;; MAKE-CHORD-IF-LENGTH (defun make-chord-if-length-aux (omn &key (test #'>) (length-val 1/8) (interval-list '((4 7)(7 12))) (cycle t)(relative nil) seed) (setf seed (rnd-seed seed)) (let ((s-events (single-events omn))) (loop for e in s-events when (funcall test (omn-encode (first e)) length-val) append (omn-replace :pitch (gen-chord3 (list (second e)) interval-list :cycle cycle :relative relative :seed (seed)) e ) else append e))) (defun make-chord-if-length (omn &key (test #'>) (length-val 1/8) (interval-list '((4 7)(7 12)))(cycle nil)(relative nil) seed) (setf seed (rnd-seed seed)) (do-verbose ("make-chord-if-length :seed ~s :length-val ~s :interval-list ~s :cycle ~s :relative ~s" seed length-val interval-list cycle relative) (let ((test-fn (case test (> #'>) (< #'<) (= #'=) (otherwise test)))) (if (listp (car omn)) (mapcar #'(lambda (x) (make-chord-if-length-aux x :test test-fn :length-val (omn-encode length-val) :interval-list interval-list :cycle cycle :relative relative :seed (seed))) omn) (make-chord-if-length-aux omn :test test-fn :length-val (omn-encode length-val) :interval-list interval-list :cycle cycle :relative relative :seed (seed)))))) ;;; ======================================== ;;;--------------------------------------------------------- ;;; Parameters ;;;--------------------------------------------------------- (setf size 24) (setf flow1 (pitch-transpose -7 (make-omn :pitch (gen-pitch-line 128 :compress 0.33 :seed 729353) :length (rnd-sample size '((s s s s s s s s -q) (e e h)(h.)(q q e e) (e e q q)(s s s s q q) (q s s s s q)(s s e -e s s q) ) :seed 729355) :velocity (rnd-sample size '((ppp)(pp)(p)(mp)(mf)) :seed 729356) ))) (setf flow2 (pitch-transpose -4 (make-omn :pitch (gen-pitch-line 128 :compress 0.73 :seed 353) :length (rnd-sample size '((h. ) (q. e q)(h.)(q q q) (h -q)(e e h) (h e e) ) :seed 729355) :velocity (rnd-sample size '((ppp)(pp)(p)) :seed 729356) ))) (setf flow3 (pitch-transpose -7 (make-omn :pitch (gen-pitch-line 128 :compress 0.33 :seed 7353) :length (rnd-sample size '((s s s s s s s s -q) (e e h)(h.)(q q e e) (e e q q)(s s s s q q) (q s s s s q)(s s e -e s s q) ) :seed 7255) :velocity (rnd-sample size '((ppp)(pp)(p)(mp)(mf)) :seed 7256) ))) ;;; Articulation remap (setf map '(((1/16 1/16 1/16 1/16)(leg leg leg default)))) (setf with-ch1 (omn-articulation-processor map (pitch-ornament (make-chord-if-length flow1 :interval-list '((-7 -19 3 9)(-4 -16 3 7) (-5 -17 4 12)(-3 -15 7)) :cycle nil :relative t :seed 729358 )))) (setf with-ch2 (omn-articulation-processor map (pitch-ornament (make-chord-if-length flow2 :interval-list '((-7 -19 3 9)(-4 -16 3 7) (-5 -17 4 12)(-3 -15 7)) :cycle nil :relative t :seed 729358 )))) (setf with-ch3 (omn-articulation-processor map (pitch-ornament (make-chord-if-length flow3 :interval-list '((-7 -19 3 9)(-4 -16 3 7) (-5 -17 4 12)(-3 -15 7)) :cycle nil :relative t :seed 729358 )))) ;;; SCORE ASSEMBLY (setf piano-rh (chord-interval-replace '(0 1 2) '(4 3 4) (omn-replace :articulation '(default leg leg leg default fermata-l) (ambitus-filter '(c4 c8) (assemble-seq with-ch1 with-ch2 with-ch3)) :section '(71)))) (setf piano-lh (chord-interval-replace '(0 1 2) '(4 3 4) (omn-replace :articulation '(default fermata-l) (ambitus-filter '(c0 b3) (assemble-seq with-ch1 with-ch2 with-ch3)) :section '(71)))) ;;;--------------------------------------------------------- ;;; Score and Layout ;;;--------------------------------------------------------- (def-score Study (:title "Mcil-study" :composer "S.Boussuge" :copyright "Copyright © 2018 s.boussuge " :key-signature 'chromatic :time-signature '((1 1 1) 4) :tempo 82 :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.
  19. Stephane Boussuge

    Make-chord-if-length study

    Here's a small piano study using my new function make-chord-if-length and few others from my personal lib. Enjoy 😉 SB. ;;; UTILITIES ;;; ======================================== ;;; 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)) (setf seed (rnd-seed seed)) (let (pitches) (do-verbose ("gen-pitch-line :seed ~s" 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))))) #| USAGE (gen-pitch-line 24 :compress 0.42 :type :white :filter-repeat 1) (gen-pitch-line 24 :compress 0.42 :type :pink :filter-repeat 1) (gen-pitch-line 24 :compress 0.42 :type :extreme :filter-repeat 1) (gen-eval 8 '(make-omn :pitch (gen-pitch-line 24 :compress 0.42 :type :white :filter-repeat 1) :length (euclidean-rhythm 16 1 16 's :type 2) ) :seed 33) |# ;;; OMN-ARTICULATION-PROCESSOR (defun omn-articulation-processor (map omn-mat &key (section nil)) (do-verbose ("omn-articulation-processor") (let ((artic (pattern-map map (omn :length omn-mat) :otherwise '(default) :section section)) ) (omn-replace :articulation artic omn-mat) ))) ;;; MAKE-CHORD-IF-LENGTH (defun make-chord-if-length-aux (omn &key (test #'>) (length-val 1/8) (interval-list '((4 7)(7 12))) (cycle t)(relative nil) seed) (setf seed (rnd-seed seed)) (let ((s-events (single-events omn))) (loop for e in s-events when (funcall test (omn-encode (first e)) length-val) append (omn-replace :pitch (gen-chord3 (list (second e)) interval-list :cycle cycle :relative relative :seed (seed)) e ) else append e))) (defun make-chord-if-length (omn &key (test #'>) (length-val 1/8) (interval-list '((4 7)(7 12)))(cycle nil)(relative nil) seed) (setf seed (rnd-seed seed)) (do-verbose ("make-chord-if-length :seed ~s :length-val ~s :interval-list ~s :cycle ~s :relative ~s" seed length-val interval-list cycle relative) (let ((test-fn (case test (> #'>) (< #'<) (= #'=) (otherwise test)))) (if (listp (car omn)) (mapcar #'(lambda (x) (make-chord-if-length-aux x :test test-fn :length-val (omn-encode length-val) :interval-list interval-list :cycle cycle :relative relative :seed (seed))) omn) (make-chord-if-length-aux omn :test test-fn :length-val (omn-encode length-val) :interval-list interval-list :cycle cycle :relative relative :seed (seed)))))) ;;; ======================================== ;;;--------------------------------------------------------- ;;; Parameters ;;;--------------------------------------------------------- (setf size 24) (setf flow1 (pitch-transpose -7 (make-omn :pitch (gen-pitch-line 128 :compress 0.33 :seed 729353) :length (rnd-sample size '((s s s s s s s s -q) (e e h)(h.)(q q e e) (e e q q)(s s s s q q) (q s s s s q)(s s e -e s s q) ) :seed 729355) :velocity (rnd-sample size '((ppp)(pp)(p)(mp)(mf)) :seed 729356) ))) (setf flow2 (pitch-transpose -4 (make-omn :pitch (gen-pitch-line 128 :compress 0.73 :seed 353) :length (rnd-sample size '((h. ) (q. e q)(h.)(q q q) (h -q)(e e h) (h e e) ) :seed 729355) :velocity (rnd-sample size '((ppp)(pp)(p)) :seed 729356) ))) (setf flow3 (pitch-transpose -7 (make-omn :pitch (gen-pitch-line 128 :compress 0.33 :seed 7353) :length (rnd-sample size '((s s s s s s s s -q) (e e h)(h.)(q q e e) (e e q q)(s s s s q q) (q s s s s q)(s s e -e s s q) ) :seed 7255) :velocity (rnd-sample size '((ppp)(pp)(p)(mp)(mf)) :seed 7256) ))) ;;; Articulation remap (setf map '(((1/16 1/16 1/16 1/16)(leg leg leg default)))) (setf with-ch1 (omn-articulation-processor map (pitch-ornament (make-chord-if-length flow1 :interval-list '((-7 -19 3 9)(-4 -16 3 7) (-5 -17 4 12)(-3 -15 7)) :cycle nil :relative t :seed 729358 )))) (setf with-ch2 (omn-articulation-processor map (pitch-ornament (make-chord-if-length flow2 :interval-list '((-7 -19 3 9)(-4 -16 3 7) (-5 -17 4 12)(-3 -15 7)) :cycle nil :relative t :seed 729358 )))) (setf with-ch3 (omn-articulation-processor map (pitch-ornament (make-chord-if-length flow3 :interval-list '((-7 -19 3 9)(-4 -16 3 7) (-5 -17 4 12)(-3 -15 7)) :cycle nil :relative t :seed 729358 )))) ;;; SCORE ASSEMBLY (setf piano-rh (omn-replace :articulation '(default leg leg leg default fermata-l) (ambitus-filter '(c4 c8) (assemble-seq with-ch1 with-ch2 with-ch3)) :section '(71))) (setf piano-lh (omn-replace :articulation '(default fermata-l) (ambitus-filter '(c0 b3) (assemble-seq with-ch1 with-ch2 with-ch3)) :section '(71))) ;;;--------------------------------------------------------- ;;; Score and Layout ;;;--------------------------------------------------------- (def-score Study (:title "Mcil-study" :composer "S.Boussuge" :copyright "Copyright © 2018 s.boussuge " :key-signature 'chromatic :time-signature '((1 1 1) 4) :tempo 82 :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)) ) )
  20. Stephane Boussuge

    Make-chord-if-length study

    Thanks Iviklund. indeed, default articulation is included in my setup from a long time and i forget to put it back here. have a nice day SB
  21. Stephane Boussuge

    make-chord-if-length

    Sorry, there was a mistake in this first version. here's the correct one. Apologize. SB. ;;; ============================================== ;;; UTILITY FUNCTIONS ;;; (defun make-chord-if-length-aux (omn &key (test #'>) (length-val 1/8) (interval-list '((4 7)(7 12))) (cycle t)(relative nil) seed) (setf seed (rnd-seed seed)) (let ((s-events (single-events omn))) (loop for e in s-events when (funcall test (omn-encode (first e)) length-val) append (omn-replace :pitch (gen-chord3 (list (second e)) interval-list :cycle cycle :relative relative :seed (seed)) e ) else append e))) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4)) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '((4 7)(3 10))) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '((4 7 11 14)(7 9 16)) :cycle nil) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '((-17 -12 4 7)(-12 -7 5 10)) :cycle t) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '((4 7 11 14)(7 9 16)) :cycle nil :seed 4) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '((4 7 11 14)(7 9 16)) :cycle nil :relative t) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '((4 7 11 14)(7 9 16)) :cycle nil :relative t :seed 4) ;;; ============================= ;;; MAIN FUNCTION (defun make-chord-if-length (omn &key (test #'>) (length-val 1/8) (interval-list '((4 7)(7 12)))(cycle nil)(relative nil) seed) (setf seed (rnd-seed seed)) (do-verbose ("make-chord-if-length :seed ~s :length-val ~s :interval-list ~s :cycle ~s :relative ~s" seed length-val interval-list cycle relative) (let ((test-fn (case test (> #'>) (< #'<) (= #'=) (otherwise test)))) (if (listp (car omn)) (mapcar #'(lambda (x) (make-chord-if-length-aux x :test test-fn :length-val (omn-encode length-val) :interval-list interval-list :cycle cycle :relative relative :seed (seed))) omn) (make-chord-if-length-aux omn :test test-fn :length-val (omn-encode length-val) :interval-list interval-list :cycle cycle :relative relative :seed (seed)))))) ;;; Tests ;(make-chord-if-length '((q c4 e d4 e4 f4 h d4)(s a4 b4 a4 g4 h f4)(q c4 d4 h e4))) ;(make-chord-if-length '((q c4 e d4 e4 f4 h d4)(s a4 b4 a4 g4 h f4)(q c4 d4 h e4)) :seed 8) ;(make-chord-if-length '((q c4 e d4 e4 f4 h d4)(s a4 b4 a4 g4 h f4)(q c4 d4 h e4)) :interval-list '((2 9)(7 11))) ;(make-chord-if-length '((q c4 d4 e4 f4 g4)(s a4 b4 a4 g4 h f4)(q c4 d4 h e4)) :cycle t) ;(make-chord-if-length '((q c4 e d4 e4 f4 h d4)(s a4 b4 a4 g4 h f4)(q c4 d4 h e4)) :cycle nil :relative t) ;(make-chord-if-length '((q c4 e d4 e4 f4 h d4)(s a4 b4 a4 g4 h f4)(q c4 d4 h e4)) :cycle nil :relative t :seed 8) make-chord-if-length.lisp
  22. Stephane Boussuge

    make-chord-if-length

    Here's a new function a bit similar to my old "add-interval-if-length" function but bit more sophisticated. It use gen-chord3 to create chord on defined length. ;;; ============================================== ;;; UTILITY FUNCTIONS ;;; (defun make-chord-if-length-aux (omn &key (test #'>) (length-val 1/8) (interval-list '((4 7)(7 12))) (cycle t)(relative nil) seed) (setf seed (rnd-seed seed)) (let ((s-events (single-events omn))) (loop for e in s-events for i in (gen-trim (length s-events) interval-list) when (funcall test (omn-encode (first e)) length-val) append (omn-replace :pitch (gen-chord3 (list (second e)) i :cycle cycle :relative relative :seed (seed)) e ) else append e))) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4)) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '((4 7)(3 10))) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '((4 7 11 14)(7 9 16)) :cycle nil) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '((4 7 11 14)(7 9 16)) :cycle nil :seed 4) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '((4 7 11 14)(7 9 16)) :cycle nil :relative t) ;(make-chord-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '((4 7 11 14)(7 9 16)) :cycle nil :relative t :seed 4) ;;; ============================= ;;; MAIN FUNCTION (defun make-chord-if-length (omn &key (test #'>) (length-val 1/8) (interval-list '((4 7)(7 12)))(cycle nil)(relative nil) seed) (setf seed (rnd-seed seed)) (do-verbose ("make-chord-if-length :seed ~s :length-val ~s :interval-list ~s :cycle ~s :relative ~s" seed length-val interval-list cycle relative) (let ((test-fn (case test (> #'>) (< #'<) (= #'=) (otherwise test)))) (if (listp (car omn)) (mapcar #'(lambda (x) (make-chord-if-length-aux x :test test-fn :length-val (omn-encode length-val) :interval-list interval-list :cycle cycle :relative relative :seed (seed))) omn) (make-chord-if-length-aux omn :test test-fn :length-val (omn-encode length-val) :interval-list interval-list :cycle cycle :relative relative :seed (seed)))))) ;;; Tests ;(make-chord-if-length '((q c4 e d4 e4 f4 h d4)(s a4 b4 a4 g4 h f4)(q c4 d4 h e4))) ;(make-chord-if-length '((q c4 e d4 e4 f4 h d4)(s a4 b4 a4 g4 h f4)(q c4 d4 h e4)) :seed 8) ;(make-chord-if-length '((q c4 e d4 e4 f4 h d4)(s a4 b4 a4 g4 h f4)(q c4 d4 h e4)) :interval-list '((2 9)(7 11))) ;(make-chord-if-length '((q c4 d4 e4 f4 g4)(s a4 b4 a4 g4 h f4)(q c4 d4 h e4)) :cycle t) ;(make-chord-if-length '((q c4 e d4 e4 f4 h d4)(s a4 b4 a4 g4 h f4)(q c4 d4 h e4)) :cycle nil :relative t) ;(make-chord-if-length '((q c4 e d4 e4 f4 h d4)(s a4 b4 a4 g4 h f4)(q c4 d4 h e4)) :cycle nil :relative t :seed 8) i've also attached the original file to this post. SB. make-chord-if-length.lisp
  23. Stephane Boussuge

    How to apply different voicings over a chord progression

    But indeed, i see, it is more about chord processing... Thanks for this. All the best SB.
  24. Stephane Boussuge

    How to apply different voicings over a chord progression

    But also you need to use the :cycle t keyword. It allo you to cycle between the chords definition, because if :cycle nil (default) chords are chosen randomly. SB.
  25. Stephane Boussuge

    Pattern for Piano

    New short piano piece from "3 Pièces pour Piano". SB.
×