Jump to content

Score 212 - for large ensemble


Recommended Posts

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*)

 

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

Terms of Use Privacy Policy