Jump to content

Stephane Boussuge

Moderators
  • Posts

    1,155
  • Joined

  • Last visited

Contact Methods

Profile Information

  • Gender
    Male
  • Location
    Wien Austria

Recent Profile Visitors

12,466 profile views
  1. My function was made to deal only with reh, not the other types because it adds complexity in the definition of the function and i just wanted to see where new iterations appears. Using other kind of rehearsal marks is possible manually or by defining a new function for that but i don’t have time for that actually. For my purposes, the simple function was sufficient.
  2. You just need to have rea-mark function evaluated somewhere . If it is in your extension, it’s fine. I added it to the file just to help people if someone don’t know where to put the function. But naturally, if you want to modify this function, you should take care and evaluate the one you modified. about the misalignment sometimes between marks and tempo changes, as i said before, the tempo changes are the master, so you can adjust things accordingly. It is also possible to add manually the rehearsal marks after the generation. But on Opusmodus side, rehearsal marks work’s fine. If you want, we can do a (free) zoom video meeting tomorrow together to discuss this score.
  3. Yes you are right, the tempo marking are the reference. Best Stephane
  4. Yes, that's look logical. My function was made to deal only with basic reh. Personnaly if I need more advanced edit of the marks, I do it in my score editor.
  5. In this Opusmodus score, the compositional process is structured around several key algorithmic techniques, designed to generate material for a large ensemble. Central to the coherence and complexity of this work are three significant elements: (1) the use of a shared pitch material (*gpmat*), (2) the manipulation of this pitch material through the pitch-rotate-vary-segment function, and (3) the rhythmic complexification achieved via the quantum function. These elements combine to produce a composition that balances harmonic unity with dynamic variation and rhythmic intricacy. Common Pitch Material: *gpmat* The foundation of the composition is a common pitch material (*gpmat*), which is generated at the beginning of the process using the rnd-row function. This function produces a random pitch set that is then stored as *gpmat*. Crucially, this pitch material serves as the starting point for all subsequent transformations throughout the piece. By using this same pitch matrix for all instruments across multiple iterations, the piece achieves a unified harmonic identity. The importance of this shared pitch material lies in its ability to provide harmonic coherence. Even as different instruments undergo transpositions, rotations, and rhythmic manipulations, they all draw from the same core pitch content, ensuring that the harmonic language remains consistent. This allows for the exploration of diverse textures and structures while maintaining a sense of harmonic unity, linking all sections of the composition together. Pitch Manipulation: The pitch-rotate-vary-segment Function The pitch-rotate-vary-segment function is a key mechanism for developing and varying the pitch material throughout the piece. It applies three types of transformations to the pitch material (pch-list, derived from *gpmat* 1. Transposition: A list of transpositions (list-transp) is applied to alter the harmonic space in which the pitch material exists. This creates variation across different sections while keeping the harmonic content within a controlled range. 2. Rotation: The pitch material is rotated by specific steps (list-rotat), effectively rearranging the order of pitches within the list. This rotation preserves the internal interval relationships of the pitch material but introduces new pitch sequences, creating variety without abandoning the harmonic basis. 3. Variation: The function can introduce variants (specified by the variant key) such as retrograde, inversion, and other transformation techniques, further diversifying the material while maintaining a connection to the original pitch structure. These operations are applied segmentally, as controlled by list-len, which defines the lengths of each pitch segment. This segmentation adds another layer of complexity, as different parts of the material can be treated independently, allowing for both local and global variation within the composition. The combination of these transformations ensures that while the composition constantly evolves, it remains anchored to the original pitch material (*gpmat*), maintaining harmonic coherence across sections. Rhythmic Complexification: The quantum Function The score also incorporates a technique of rhythmic complexification, primarily achieved through the use of the quantum function. This function is applied to certain sections of the composition, introducing intricate rhythmic patterns by subdividing the existing material into smaller rhythmic units. Quantum Rhythm Processing The quantum function operates by micro quantizing the durations of musical events according to a set of values . This function is used selectively to enhance the rhythmic complexity of particular sections, adding an additional layer of temporal variation. - Fractional Subdivision: A key parameter of the quantum function is :fraction, which specifies how much to subdivide the rhythmic values. For instance, in this score, frac 0.1 indicates that the existing rhythms will be subdivided to a tenth of their original value. This results in a dense, intricate rhythmic structure, particularly effective in creating contrasts and moments of heightened tension. - Selective Application: The quantum function is not applied uniformly across the entire piece but is used selectively. This means that certain instruments or sections experience heightened rhythmic activity, while others remain rhythmically simpler. This selective approach allows for a layered rhythmic texture, where complexity and simplicity coexist, creating a dynamic flow across the piece. Balancing Coherence and Complexity The integration of harmonic coherence (via *gpmat*) and rhythmic complexity (via quantum) results in a composition that is both structurally unified and rhythmically intricate. The pitch material remains consistent throughout the piece, providing a harmonic anchor that is manipulated in various ways through the pitch-rotate-vary-segment function. At the same time, the rhythmic structure is enhanced through the quantum function, which introduces temporal variation and complexity without disrupting the overall coherence of the work. This score exemplifies how algorithmic composition techniques can generate a balance between coherence and complexity. The shared pitch material (*gpmat*) serves as a harmonic foundation, while the pitch-rotate-vary-segment function dynamically evolves this material across different sections. Simultaneously, the quantum function introduces rhythmic complexity, ensuring that the composition remains rhythmically engaging. Together, these elements create a work that is harmonically integrated, rhythmically diverse, and structurally unified. ;;; ----------------------------------- ;;; -- SCORE 212 For large ensemble -- ;;; ----------------------------------- ;;; =================================== ;;; Stéphane Boussuge. Septembre 2024 ;;;==================================== ;;; Instrumentation: ;;; --------------- ;;; flûte, Hautbois, Clarinette, Basson, Contre Basson, ;;; Cor, Trompette, Trombone Basse, Mallets, ;;; Percussions, Harpe, Celesta, Piano, ;;; Violon1, Violon2, Violon Alto Violoncelle et Contrebasse. ;;; ========================================================= ;;; Fonctions utilitaires: (defun pitch-rotate-vary-segment (list-transp list-rotat list-len pch-list &key variant seed) (let (state) (setf state *init-seed*) (setf seed (rnd-seed seed)) (do-verbose ("pitch-rotate-vary-segment: ~s" seed) (let* ( (n-rep (length list-transp)) (rep (gen-repeat n-rep (list pch-list))) (trim (mapcar (lambda(x y) (gen-trim x y)) list-len rep)) (rot (loop for l in trim for r in (gen-trim n-rep list-rotat) collect (gen-rotate r l))) (trsp (pitch-transpose list-transp rot)) ) (init-state state) (if variant (pitch-variant trsp :variant variant :seed (seed)) trsp ))))) ;;; ========================================================= (setf *gseed* (rnd-round 1 1000000)) (init-seed *gseed*) (setf nb-iter 8) (setf *gpmat* (rnd-row :type :pitch :transpose (rndn 1 -6 6))) (setf tempo-list '()) (setf size-list '()) (setf process '(progn (setf *tempo* (rnd-round 48 134)) (setf *llegato* (rnd-pick '(t nil))) (setf *quantum* (rnd-pick '(t nil))) (setf *clst* (rnd-pick '(t nil))) (setf *prc* (rnd-pick '(t nil))) (setf *mlt* (rnd-pick '(t nil))) (setf *tpt* (rnd-pick '(t nil))) (setf pmat *gpmat*) ;;; NB Bars (setf s1.size (rnd-round 3 10)) ;;; Master dens ctrl (aussi utilise pour la transpo) (setf master-dens (vector-round 0.01 1.00 (gen-noise 8))) ;;; Global transposition parameter (setf g-transp (rnd-round -6 6)) ;;; Local transposition parameter for each instrument (setf l-transp1 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp2 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp3 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp4 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp5 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp6 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp7 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp8 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp9 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp10 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp11 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp12 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp13 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp14 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp15 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp16 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp17 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) (setf l-transp18 (vector-round -12 12 (gen-tendency s1.size master-dens :variance 0.5))) ;;; S1 PITCH ;;; ============= (setf var-list '(p r i d a ad p)) (setf s1-pch1 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch2 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch3 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch4 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch5 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch6 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch7 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch8 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch9 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch10 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch11 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch12 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch13 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch14 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch15 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch16 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch17 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) (setf s1-pch18 (interval-ambitus 6 (pitch-rotate-vary-segment (rnd-sample s1.size '(0)) (rndn s1.size 0 11) (rndn s1.size 12 18) pmat :variant (rnd-sample 8 var-list) ))) ;;; S1 LENGTH ;;; ============= (setf s1-mlen (list (rnd-pick '(s s s s e e q h)))) (setf s1-len1 (span s1-pch1 s1-mlen)) (setf s1-len2 (span s1-pch2 s1-mlen)) (setf s1-len3 (span s1-pch3 s1-mlen)) (setf s1-len4 (span s1-pch4 s1-mlen)) (setf s1-len5 (span s1-pch5 s1-mlen)) (setf s1-len6 (span s1-pch6 s1-mlen)) (setf s1-len7 (span s1-pch7 s1-mlen)) (setf s1-len8 (span s1-pch8 s1-mlen)) (setf s1-len9 (span s1-pch9 s1-mlen)) (setf s1-len10 (span s1-pch10 s1-mlen)) (setf s1-len11 (span s1-pch11 s1-mlen)) (setf s1-len12 (span s1-pch12 s1-mlen)) (setf s1-len13 (span s1-pch13 s1-mlen)) (setf s1-len14 (span s1-pch14 s1-mlen)) (setf s1-len15 (span s1-pch15 s1-mlen)) (setf s1-len16 (span s1-pch16 s1-mlen)) (setf s1-len17 (span s1-pch17 s1-mlen)) (setf s1-len18 (span s1-pch18 s1-mlen)) ;;; S1 OMN ASSY ;;; ============= (setf master-span (rnd-sample s1.size '(4/4 3/4 2/4 5/4 7/4))) (setf s1-o1 (length-span master-span (filter-tie (make-omn :pitch s1-pch1 :length s1-len1 :articulation '(def))))) (setf s1-o2 (length-span master-span (filter-tie (make-omn :pitch s1-pch2 :length s1-len2 :articulation '(def))))) (setf s1-o3 (length-span master-span (filter-tie (make-omn :pitch s1-pch3 :length s1-len3 :articulation '(def))))) (setf s1-o4 (length-span master-span (filter-tie (make-omn :pitch s1-pch4 :length s1-len4 :articulation '(def))))) (setf s1-o5 (length-span master-span (filter-tie (make-omn :pitch s1-pch5 :length s1-len5 :articulation '(def))))) (setf s1-o6 (length-span master-span (filter-tie (make-omn :pitch s1-pch6 :length s1-len6 :articulation '(def))))) (setf s1-o7 (length-span master-span (filter-tie (make-omn :pitch s1-pch7 :length s1-len7 :articulation '(def))))) (setf s1-o8 (length-span master-span (filter-tie (make-omn :pitch s1-pch8 :length s1-len8 :articulation '(def))))) (setf s1-o9 (length-span master-span (filter-tie (make-omn :pitch s1-pch9 :length s1-len9 :articulation '(def))))) (setf s1-o10 (length-span master-span (filter-tie (make-omn :pitch s1-pch10 :length s1-len10 :articulation '(def))))) (setf s1-o11 (length-span master-span (filter-tie (make-omn :pitch s1-pch11 :length s1-len11 :articulation '(def))))) (setf s1-o12 (length-span master-span (filter-tie (make-omn :pitch s1-pch12 :length s1-len12 :articulation '(def))))) (setf s1-o13 (length-span master-span (filter-tie (make-omn :pitch s1-pch13 :length s1-len13 :articulation '(def))))) (setf s1-o14 (length-span master-span (filter-tie (make-omn :pitch s1-pch14 :length s1-len14 :articulation '(def))))) (setf s1-o15 (length-span master-span (filter-tie (make-omn :pitch s1-pch15 :length s1-len15 :articulation '(def))))) (setf s1-o16 (length-span master-span (filter-tie (make-omn :pitch s1-pch16 :length s1-len16 :articulation '(def))))) (setf s1-o17 (length-span master-span (filter-tie (make-omn :pitch s1-pch17 :length s1-len17 :articulation '(def))))) (setf s1-o18 (length-span master-span (filter-tie (make-omn :pitch s1-pch18 :length s1-len18 :articulation '(def))))) ;;; GLOBAL & LOCAL TRANSP ;;; ===================== (setf s1-o1.t (pitch-transpose g-transp (pitch-transpose l-transp1 s1-o1))) (setf s1-o2.t (pitch-transpose g-transp (pitch-transpose l-transp2 s1-o2))) (setf s1-o3.t (pitch-transpose g-transp (pitch-transpose l-transp3 s1-o3))) (setf s1-o4.t (pitch-transpose g-transp (pitch-transpose l-transp4 s1-o4))) (setf s1-o5.t (pitch-transpose g-transp (pitch-transpose l-transp5 s1-o5))) (setf s1-o6.t (pitch-transpose g-transp (pitch-transpose l-transp6 s1-o6))) (setf s1-o7.t (pitch-transpose g-transp (pitch-transpose l-transp7 s1-o7))) (setf s1-o8.t (pitch-transpose g-transp (pitch-transpose l-transp8 s1-o8))) (setf s1-o9.t (pitch-transpose g-transp (pitch-transpose l-transp9 s1-o9))) (setf s1-o10.t (pitch-transpose g-transp (pitch-transpose l-transp10 s1-o10))) (setf s1-o11.t (pitch-transpose g-transp (pitch-transpose l-transp11 s1-o11))) (setf s1-o12.t (pitch-transpose g-transp (pitch-transpose l-transp12 s1-o12))) (setf s1-o13.t (pitch-transpose g-transp (pitch-transpose l-transp13 s1-o13))) (setf s1-o14.t (pitch-transpose g-transp (pitch-transpose l-transp14 s1-o14))) (setf s1-o15.t (pitch-transpose g-transp (pitch-transpose l-transp15 s1-o15))) (setf s1-o16.t (pitch-transpose g-transp (pitch-transpose l-transp16 s1-o16))) (setf s1-o17.t (pitch-transpose g-transp (pitch-transpose l-transp17 s1-o17))) (setf s1-o18.t (pitch-transpose g-transp (pitch-transpose l-transp18 s1-o18))) ;;; S1 Instrumentation (setf flt (ambitus '(b3 d7) (pitch-transpose 0 s1-o1.t))) (setf obo (ambitus '(bb3 f6) (pitch-transpose 0 s1-o2.t))) (setf clr (ambitus '(c3 e6) (pitch-transpose 0 s1-o3.t))) (setf bsn (ambitus '(as1 d5) (pitch-transpose 0 s1-o4.t))) (setf cbn (ambitus '(as0 as3)(pitch-transpose 0 s1-o5.t))) (setf hrn (ambitus '(g2 f5) (pitch-transpose 0 s1-o6.t))) (setf tpt (ambitus '(e3 c6) (pitch-transpose 0 s1-o7.t))) (setf btb (ambitus '(c1 e4) (pitch-transpose 0 s1-o8.t))) (setf mlt (ambitus '(ds3 g6) (pitch-transpose 0 s1-o9.t))) (setf prc (ambitus '(f2 c7) (pitch-transpose 0 s1-o10.t))) (setf hrp (ambitus '(c1 a7) (pitch-transpose 0 s1-o11.t))) (setf cls (ambitus '(c2 f7) (pitch-transpose 0 s1-o12.t))) (setf pno (ambitus '(a0 c8) (pitch-transpose 0 s1-o13.t))) (setf vn1 (ambitus '(g3 d7) (pitch-transpose 0 s1-o14.t))) (setf vn2 (ambitus '(g3 d7) (pitch-transpose 0 s1-o15.t))) (setf vla (ambitus '(c3 d6) (pitch-transpose 0 s1-o16.t))) (setf vlc (ambitus '(c2 a5) (pitch-transpose -24 s1-o17.t))) (setf ctb (ambitus '(c1 c4) (pitch-transpose -24 s1-o18.t))) ;;; Management de la densite avec rnd-rest (setf dens1 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens2 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens3 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens4 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens5 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens6 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens7 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens8 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens9 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens10 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens11 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens12 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens13 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens14 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens15 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens16 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens17 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (setf dens18 (vector-round 0.0 1.0 (gen-tendency s1.size master-dens))) (if *llegato* (progn (setf flt.d (length-legato (rnd-rest dens1 flt))) (setf obo.d (length-legato (rnd-rest dens2 obo))) (setf clr.d (length-legato (rnd-rest dens3 clr))) (setf bsn.d (length-legato (rnd-rest dens4 bsn))) (setf cbn.d (length-legato (rnd-rest dens5 cbn))) (setf hrn.d (length-legato (rnd-rest dens6 hrn))) (setf tpt.d (length-legato (rnd-rest dens7 tpt))) (setf btb.d (length-legato (rnd-rest dens8 btb))) (setf mlt.d (length-legato (rnd-rest dens9 mlt))) (setf prc.d (length-legato (rnd-rest dens10 prc))) (setf hrp.d (length-legato (rnd-rest dens11 hrp))) (setf cls.d (length-legato (rnd-rest dens12 cls))) (setf pno.d (length-legato (rnd-rest dens13 pno))) (setf vn1.d (length-legato (rnd-rest dens14 vn1))) (setf vn2.d (length-legato (rnd-rest dens15 vn2))) (setf vla.d (length-legato (rnd-rest dens16 vla))) (setf vlc.d (length-legato (rnd-rest dens17 vlc))) (setf ctb.d (length-legato (rnd-rest dens18 ctb))) ) (progn (setf flt.d (rnd-rest dens1 flt)) (setf obo.d (rnd-rest dens2 obo)) (setf clr.d (rnd-rest dens3 clr)) (setf bsn.d (rnd-rest dens4 bsn)) (setf cbn.d (rnd-rest dens5 cbn)) (setf hrn.d (rnd-rest dens6 hrn)) (setf tpt.d (rnd-rest dens7 tpt)) (setf btb.d (rnd-rest dens8 btb)) (setf mlt.d (rnd-rest dens9 mlt)) (setf prc.d (rnd-rest dens10 prc)) (setf hrp.d (rnd-rest dens11 hrp)) (setf cls.d (rnd-rest dens12 cls)) (setf pno.d (rnd-rest dens13 pno)) (setf vn1.d (rnd-rest dens14 vn1)) (setf vn2.d (rnd-rest dens15 vn2)) (setf vla.d (rnd-rest dens16 vla)) (setf vlc.d (rnd-rest dens17 vlc)) (setf ctb.d (rnd-rest dens18 ctb)) )) ;;; Rhythm complexification with quantum (if *quantum* (progn (setf frac 0.1) (setf qtz '(1 2 3 4 5 6 7 8)) (setf flt.q (length-span master-span (quantum flt.d :fraction frac :quantize qtz))) (setf obo.q (length-span master-span (quantum obo.d :fraction frac :quantize qtz))) (setf clr.q (length-span master-span (quantum clr.d :fraction frac :quantize qtz))) (setf bsn.q (length-span master-span (quantum bsn.d :fraction frac :quantize qtz))) (setf cbn.q (length-span master-span (quantum cbn.d :fraction frac :quantize qtz))) (setf hrn.q (length-span master-span (quantum hrn.d :fraction frac :quantize qtz))) (setf tpt.q (length-span master-span (quantum tpt.d :fraction frac :quantize qtz))) (setf btb.q (length-span master-span (quantum btb.d :fraction frac :quantize qtz))) (setf mlt.q (length-span master-span (quantum mlt.d :fraction frac :quantize qtz))) (setf prc.q (length-span master-span (quantum prc.d :fraction frac :quantize qtz))) (setf hrp.q (length-span master-span (quantum hrp.d :fraction frac :quantize qtz))) (setf cls.q (length-span master-span (quantum cls.d :fraction frac :quantize qtz))) (setf pno.q (length-span master-span (quantum pno.d :fraction frac :quantize qtz))) (setf vn1.q (length-span master-span (quantum vn1.d :fraction frac :quantize qtz))) (setf vn2.q (length-span master-span (quantum vn2.d :fraction frac :quantize qtz))) (setf vla.q (length-span master-span (quantum vla.d :fraction frac :quantize qtz))) (setf vlc.q (length-span master-span (quantum vlc.d :fraction frac :quantize qtz))) (setf ctb.q (length-span master-span (quantum ctb.d :fraction frac :quantize qtz))) ) (progn (setf flt.q (length-span master-span flt.d)) (setf obo.q (length-span master-span obo.d)) (setf clr.q (length-span master-span clr.d)) (setf bsn.q (length-span master-span bsn.d)) (setf cbn.q (length-span master-span cbn.d)) (setf hrn.q (length-span master-span hrn.d)) (setf tpt.q (length-span master-span tpt.d)) (setf btb.q (length-span master-span btb.d)) (setf mlt.q (length-span master-span mlt.d)) (setf prc.q (length-span master-span prc.d)) (setf hrp.q (length-span master-span hrp.d)) (setf cls.q (length-span master-span cls.d)) (setf pno.q (length-span master-span pno.d)) (setf vn1.q (length-span master-span vn1.d)) (setf vn2.q (length-span master-span vn2.d)) (setf vla.q (length-span master-span vla.d)) (setf vlc.q (length-span master-span vlc.d)) (setf ctb.q (length-span master-span ctb.d)) ) ) (do-timeline2 '(flt.q obo.q clr.q bsn.q cbn.q hrn.q tpt.q btb.q mlt.q prc.q hrp.q cls.q pno.q vn1.q vn2.q vla.q vlc.q ctb.q) (gen-loop 7 (rnd-sample s1.size '(0 1))) '(gen-pause x) :index 'pse ) ;;; Dynamiques globales (setf dmax (rnd-pick '(ff f mf mp))) (setf master-dyn (vector-to-velocity dmax 'pp (gen-tendency s1.size master-dens))) (setf gdyn (mclist master-dyn)) (setf pse1 (omn-replace :velocity gdyn pse1)) (setf pse2 (omn-replace :velocity gdyn pse2)) (setf pse3 (omn-replace :velocity gdyn pse3)) (setf pse4 (omn-replace :velocity gdyn pse4)) (setf pse5 (omn-replace :velocity gdyn pse5)) (setf pse6 (omn-replace :velocity gdyn pse6)) (setf pse7 (omn-replace :velocity gdyn pse7)) (setf pse8 (omn-replace :velocity gdyn pse8)) (setf pse9 (omn-replace :velocity gdyn pse9)) (setf pse10 (omn-replace :velocity gdyn pse10)) (setf pse11 (omn-replace :velocity gdyn pse11)) (setf pse12 (omn-replace :velocity gdyn pse12)) (setf pse13 (omn-replace :velocity gdyn pse13)) (setf pse14 (omn-replace :velocity gdyn pse14)) (setf pse15 (omn-replace :velocity gdyn pse15)) (setf pse16 (omn-replace :velocity gdyn pse16)) (setf pse17 (omn-replace :velocity gdyn pse17)) (setf pse18 (omn-replace :velocity gdyn pse18)) ;;; Articulations (setf amap '((s leg)(e leg)(w res)(h. res))) (setf pmap '(((e w) (def res)) ((e h.)(def res)) ((e h) (def def)) ((e q) (def def)) ((e q.)(def def)) ((e e.)(def def)) ((e s) (def def)) ((s w) (def def)) ((s h.)(def def)) ((s h) (def def)) ((s q) (def def)) ((s q.)(def def)) ((s e.)(def def)) ((s s) (def def)) )) (setf flute.o (pattern-map pmap (length-map amap pse1 :otherwise '(def)))) (setf oboe.o (pattern-map pmap (length-map amap pse2 :otherwise '(def)))) (setf clarinet.o (pattern-map pmap (length-map amap pse3 :otherwise '(def)))) (setf bassoon.o (pattern-map pmap (length-map amap pse4 :otherwise '(def)))) (setf contrabassoon.o (pattern-map pmap (length-map amap pse5 :otherwise '(def)))) (setf horn.o (pattern-map pmap (length-map amap pse6 :otherwise '(def)))) (setf trumpet.o (pattern-map pmap (length-map amap pse7 :otherwise '(def)))) (setf bass-trombone.o (pattern-map pmap (length-map amap pse8 :otherwise '(def)))) (setf mallets.o (pattern-map pmap (length-map amap pse9 :otherwise '(def)))) (setf percussions.o (pattern-map pmap (length-map amap pse10 :otherwise '(def)))) (setf harp.o (pattern-map pmap (length-map amap pse11 :otherwise '(def)))) (setf celesta.o (pattern-map pmap (length-map amap pse12 :otherwise '(def)))) (setf piano.o (pattern-map pmap (length-map amap pse13 :otherwise '(def)))) (setf violin1.o (pattern-map pmap (length-map amap pse14 :otherwise '(def)))) (setf violin2.o (pattern-map pmap (length-map amap pse15 :otherwise '(def)))) (setf viola.o (pattern-map pmap (length-map amap pse16 :otherwise '(def)))) (setf cello.o (pattern-map pmap (length-map amap pse17 :otherwise '(def)))) (setf contrabass.o (pattern-map pmap (length-map amap pse18 :otherwise '(def)))) ;;; Ajout du numero de section via la flute (setf flute.o (rea-mark flute.o)) ;;; Traitement des exceptions (pauses) (if *clst* (setf celesta.o celesta.o) (setf celesta.o (gen-pause celesta.o)) ) (if *prc* (setf percussions.o percussions.o) (setf percussions.o (gen-pause percussions.o)) ) (if *mlt* (setf mallets.o mallets.o) (setf mallets.o (gen-pause mallets.o)) ) (if *tpt* (setf trumpet.o trumpet.o) (setf trumpet.o (gen-pause trumpet.o)) ) ;;; Consolidation des mesures avec length-span (setf flute.o (length-span master-span flute.o)) (setf oboe.o (length-span master-span oboe.o)) (setf clarinet.o (length-span master-span clarinet.o)) (setf bassoon.o (length-span master-span bassoon.o)) (setf contrabassoon.o (length-span master-span contrabassoon.o)) (setf horn.o (length-span master-span horn.o)) (setf trumpet.o (length-span master-span trumpet.o)) (setf bass-trombone.o (length-span master-span bass-trombone.o)) (setf mallets.o (length-span master-span mallets.o)) (setf percussions.o (length-span master-span percussions.o)) (setf harp.o (length-span master-span harp.o)) (setf celesta.o (length-span master-span celesta.o)) (setf piano.o (length-span master-span piano.o)) (setf violin1.o (length-span master-span violin1.o)) (setf violin2.o (length-span master-span violin2.o)) (setf viola.o (length-span master-span viola.o)) (setf cello.o (length-span master-span cello.o)) (setf contrabass.o (length-span master-span contrabass.o)) (push *tempo* tempo-list) (setf ssize (length flute.o)) (push ssize size-list) (list flute.o oboe.o clarinet.o bassoon.o contrabassoon.o horn.o trumpet.o bass-trombone.o mallets.o percussions.o harp.o celesta.o piano.o violin1.o violin2.o viola.o cello.o contrabass.o) )) ;; Fin du process (setf seq (gen-eval nb-iter process)) (setf qvals '(1 2 3 4 5 6 7 8)) (setf flute (quantize (assemble-seq (loop for s in seq collect (nth 0 s))) qvals)) (setf oboe (quantize (assemble-seq (loop for s in seq collect (nth 1 s))) qvals)) (setf clarinet (quantize (assemble-seq (loop for s in seq collect (nth 2 s))) qvals)) (setf bassoon (quantize (assemble-seq (loop for s in seq collect (nth 3 s))) qvals)) (setf contrabassoon (quantize (assemble-seq (loop for s in seq collect (nth 4 s))) qvals)) (setf horn (quantize (assemble-seq (loop for s in seq collect (nth 5 s))) qvals)) (setf trumpet (quantize (assemble-seq (loop for s in seq collect (nth 6 s))) qvals)) (setf bass-trombone (quantize (assemble-seq (loop for s in seq collect (nth 7 s))) qvals)) (setf mallets (quantize (assemble-seq (loop for s in seq collect (nth 8 s))) qvals)) (setf percussions (quantize (assemble-seq (loop for s in seq collect (nth 9 s))) qvals)) (setf harp (quantize (assemble-seq (loop for s in seq collect (nth 10 s))) qvals)) (setf celesta (quantize (assemble-seq (loop for s in seq collect (nth 11 s))) qvals)) (setf piano (quantize (assemble-seq (loop for s in seq collect (nth 12 s))) qvals)) (setf violin1 (quantize (assemble-seq (loop for s in seq collect (nth 13 s))) qvals)) (setf violin2 (quantize (assemble-seq (loop for s in seq collect (nth 14 s))) qvals)) (setf viola (quantize (assemble-seq (loop for s in seq collect (nth 15 s))) qvals)) (setf violoncello (quantize (assemble-seq (loop for s in seq collect (nth 16 s))) qvals)) (setf contrabass (quantize (assemble-seq (loop for s in seq collect (nth 17 s))) qvals)) (setf sections-lengths (reverse size-list)) (setf rtemp (reverse tempo-list)) (setf tempo (loop for sl in sections-lengths for rtp in rtemp collect (list rtp sl))) ;;; Get time sig. (setf ts (get-time-signature flute)) (setf titre (concatenate 'string "Score212-" (stringify *gseed*))) ;;; Score definition ;;; ======================================= (def-score s212 (:title titre :composer "S.Boussuge" :copyright "Copyright © 2024 s.boussuge" :key-signature 'chromatic :time-signature ts :tempo tempo :layout (list (bracket-group (flute-layout 'flute) (oboe-layout 'oboe) (clarinet-layout 'clarinet) (bassoon-layout 'bassoon) (contrabassoon-layout 'contrabassoon) ) (bracket-group (horn-layout 'horn) (trumpet-layout 'trumpet) (bass-trombone-layout 'bass-trombone) ) (treble-layout 'mallets :name "Mallets" :abbr "Mlts.") (treble-layout 'percussions :name "Percussions" :abbr "Perc.") (harp-grand-layout 'harp) (grand-layout 'celesta :name "Celesta" :abbr "Clst.") (piano-grand-layout 'piano) (bracket-group (square-group (violin1-layout 'violin1) (violin2-layout 'violin2) ) (viola-layout 'viola) (violoncello-layout 'violoncello) (contrabass-layout 'contrabass)))) (flute :omn flute :velocity (remap-velocity flute) :port "bus 1" :channel 2 :sound 'svsl-flute :program '(def) ) (oboe :omn oboe :velocity (remap-velocity oboe) :port "bus 1" :channel 7 :sound 'svsl-oboe :program '(def) ) (clarinet :omn clarinet :velocity (remap-velocity clarinet) :port "bus 1" :channel 12 :sound 'svsl-clarinet :program '(def) ) (bassoon :omn bassoon :velocity (remap-velocity bassoon) :port "bus 2" :channel 1 :sound 'svsl-bassoon :program '(def) ) (contrabassoon :omn contrabassoon :velocity (remap-velocity contrabassoon) :port "bus 2" :channel 4 :sound 'SVSL-Contrabassoon :program '(def) ) (horn :omn horn :velocity (remap-velocity horn) :port "bus 2" :channel 11 :sound 'svsl-horn-vienna :program '(def) ) (trumpet :omn trumpet :velocity (remap-velocity trumpet) :port "bus 2" :channel 6 :sound 'svsl-trumpet :program '(def) ) (bass-trombone :omn bass-trombone :velocity (remap-velocity bass-trombone) :port "bus 3" :channel 5 :sound 'SVSL-Bass-Trombone :program '(def) ) (mallets :omn mallets :velocity (remap-velocity mallets) :port "bus 4" :channel 11 :sound 'vsl-mallets :program 'marimba ) (percussions :omn percussions :velocity (remap-velocity percussions) :port "bus 4" :channel 12 :sound 'vsl-percussions :program 'bowls ) (harp :omn harp :velocity (remap-velocity harp) :port "bus 5" :channel 15 :sound 'SVSL-Harp :program 0 ) (celesta :omn celesta :velocity (remap-velocity celesta) :port "bus 4" :channel 4 :sound 'svsl-celesta :program 0 ) (piano :omn piano :velocity (remap-velocity piano) :port "bus 6" :channel 1 :sound 'gm :program 0 ) (violin1 :omn violin1 :velocity (remap-velocity violin1) :port "bus 19" :channel 1 :sound ' SVSL-Chamber-Violins :program '(def) ) (violin2 :omn violin2 :velocity (remap-velocity violin2) :port "bus 19" :channel 2 :sound ' SVSL-Chamber-Violins :program '(def) ) (viola :omn viola :velocity (remap-velocity viola) :port "bus 19" :channel 3 :sound ' SVSL-Chamber-Violas :program '(def) ) (violoncello :omn violoncello :velocity (remap-velocity violoncello) :port "bus 19" :channel 4 :sound ' SVSL-Chamber-Celli :program '(def) ) (contrabass :omn contrabass :velocity (remap-velocity contrabass) :port "bus 19" :channel 5 :sound ' SVSL-Chamber-Doublebasses :program '(def) ) ) (init-seed nil) (pprint *gseed*) Score212-128527 - Score212-128527 [13].mp3
  6. Very interesting Robert. Thank you very much for sharing. Best Stéphane
  7. Doing the following test, I think maybe there's something wrong in rehearsal marks excepted "reh" who seems to be the only working one. We will check. (setf test '((q c4 mf reh d4 e4 f4) (q c4 mf reha d4 e4 f4) (q c4 mf reha-b d4 e4 f4) (q c4 mf rehn d4 e4 f4) (q c4 mf rehn-8 d4 e4 f4))) (ps 'gm :treble (list test))
  8. rnd-order is not on the right place. you have to apply it only to pitches, not to the full omn expression, if you do that , you will broke the omn expressions. Maybe something like: (setf alice.aligned (omn-to-time-signature (make-omn :pitch (rnd-order alice.pch) :length alice.rhy :swallow t)) '(4 4)))
  9. you can define controllers and controllers name in soundsets definition and use them in place of key switch to send informations to your VI.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy