Stephane Boussuge Posted September 26, 2020 Share Posted September 26, 2020 Hi folks, Here's the files from this session showing my process for a work in progress " Extrapolation" for Pierrot Ensemble. You will find also exceptionally the video recording. All this material is shared here for study purpose naturally, please, don't use it "as this" but use this material as an example to inspire yourself and help you to construct your own workflow and algorithms. All the best and happy Opusmodus-ing Stéphane Part1-Basic-idea.opmo Part2-Main-Process.opmo Part3-Looping-Process.opmo Part4-ScoreOutput.opmo pitch-rotate-vary-segment.lisp Stephane-Video-ZoomOM2609-20.zip lviklund, JulioHerrlein and opmo 1 2 Quote Link to comment Share on other sites More sharing options...
rkylberg Posted September 26, 2020 Share Posted September 26, 2020 Thank you Stephane for these sessions and resources. We each have our individual composition goals and OpusModus is a great tool to help address our challenges. Understanding how to effectively apply OpusModus to take on our challenges requires insight and experience and your generosity to share your process is invaluable. We can glean so much from this lesson. Thank you for including the recordings of the session. opmo and Stephane Boussuge 2 Quote Link to comment Share on other sites More sharing options...
Nikos Posted September 28, 2020 Share Posted September 28, 2020 Thank you very much Stephane, your sessions are a valuable source of Opusmodus and music composition material. Stephane Boussuge 1 Quote Link to comment Share on other sites More sharing options...
NagyMusic Posted November 17, 2020 Share Posted November 17, 2020 Thanks, Stephane. This session is very educational! I have a quick question about the first "simplified" process-example you introduced and discussed in the video. I understand that there're eight measures set by the size variable. And that each of the eight measures introduces new material generated by make-omn. What would be the easiest way to adjust the code below so that each new measure is repeated a set number of times, either a fixed number of repetitions or changing (controlled)? I tried using the gen-repeat function, after gen-loop but it didn't seem to work. Thank you! (setf size 8) (setf ph1 (ambitus '(g3 g6) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd4 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 4 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) Quote Link to comment Share on other sites More sharing options...
opmo Posted November 17, 2020 Share Posted November 17, 2020 Is this what you are looking for: (setf ph1 (ambitus '(g3 g6) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd4 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 4 '(s -s)))) :velocity (rnd-sample 12 '((pp)(p)(mp)(mf)(f))) :span :pitch )))) By default the span in length. If you wan't pitch to be the master then :span :pitch will do the trick. NagyMusic 1 Quote Link to comment Share on other sites More sharing options...
Stephane Boussuge Posted November 17, 2020 Author Share Posted November 17, 2020 (setf size 8) (setf ph1 (ambitus '(g3 g6) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd4 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 4 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) ;;; Controled repetitions of ph1 with vector-map (with index numbers) (setf reps1 (vector-map ph1 '(0 0 1 3 3 3 2 3 4 3 2 4 5 6 6 7 7 7))) ;;; Apply variations to this repetitions with unfold: (setf reps1.proc (unfold 'om '((ld23 (4 5 6 12 16))(ld24 (2 8 13 16))(t4 (1 3 5 7))) reps1)) NagyMusic 1 Quote Link to comment Share on other sites More sharing options...
NagyMusic Posted November 18, 2020 Share Posted November 18, 2020 Thank you both of you! This is very helpful. Quote Link to comment Share on other sites More sharing options...
NagyMusic Posted November 18, 2020 Share Posted November 18, 2020 Stéphane, Might you be willing to share the add-interval-if-length function required for your Extrapolation example, or point out where to look for it? Thank you once again, Zvony Quote Link to comment Share on other sites More sharing options...
Stephane Boussuge Posted November 18, 2020 Author Share Posted November 18, 2020 Hi, here it is: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; ADD-INTERVAL-IF-LENGTH ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (in-package :Opusmodus) ;;; USAGE #| (setf seq '((e c4 p stacc d4 stacc e4 stacc f4 stacc q g4 g3) (q c4 mf e c6 b5 a5 g5 f5 d5) (s e4 f4 e4 d4 q g4 b4 d5) (q g5 ff marc g4 marc h c5 ))) ; with default parameters (add-interval-if-length '(1/4 c4 d4 e4 1/8 e4 f4)) (add-interval-if-length seq) ; with specified condition (add-interval-if-length seq :condition '<) (add-interval-if-length seq :condition '=) ; with specifird conditions en length value specification (add-interval-if-length seq :condition '= :length-val '1/4) |# ;;; VERSION REVISEE PAR TORSTEN ;;; ============================================== ;;; UTILITY FUNCTIONS ;;; (defun add-interval-if-length-aux (omn &key (test #'>) (length-val 1/8) (interval-list '(4 3 4 7 4 3 5 4 7 3))) (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 (chord-interval-add (list i) (list (second e))) e) else append e))) ;(add-interval-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '(10 11)) ;;; ============================= ;;; MAIN FUNCTION (defun add-interval-if-length (omn &key (test #'>) (length-val 1/8) (interval-list '(4 3 4 7 4 3 5 4 7 3))) (do-verbose ("add-interval-if-length") (let ((test-fn (case test (> #'>) (< #'<) (= #'=) (otherwise test)))) (if (listp (car omn)) (mapcar #'(lambda (x) (add-interval-if-length-aux x :test test-fn :length-val (omn-encode length-val) :interval-list interval-list)) omn) (add-interval-if-length-aux omn :test test-fn :length-val (omn-encode length-val) :interval-list interval-list))))) ;(add-interval-if-length '((q c4 d4 e4 f4 e g4 a4) (e f4 e4 q d4 c4 a4 g4 f4)) :interval-list '(10 11)) ;(add-interval-if-length '((q c4 d4 e4 f4 e g4 a4) (e f4 e4 q d4 c4 a4 g4 h f4)) :interval-list '(3 4) :test #'>= :length-val 'q) NagyMusic 1 Quote Link to comment Share on other sites More sharing options...
NagyMusic Posted November 20, 2020 Share Posted November 20, 2020 Stéphane, Sorry for another question. I'm experimenting with several ideas - very inspiring session! Instead of white noise vectors for dens-tend, I tried using a pitch row instead (see psets) to control various parameters in the piece. I used pitch-to-integer to get the numerical representation of pitches. The code below works most of the time: (setf size (car (rnd-number 1 12 32))) (setf psets '(c4 fs4 g4 e4 gs4 f4 a4 cs5 ds5 as4 d5 b4)) ;;; RHYTHM (setf dens-tend (pitch-to-integer psets)) (setf dens1 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens2 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens3 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens4 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens5 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens6 (vector-round 0 100 (gen-tendency size dens-tend))) However, occasionally when evaluating dens1 - dens 6 produces an error message: > Error: 0.0 is not a greater than zero number. > While executing: (:internal rnd-variance1 rnd-variance), in process Listener-1(7). Any reason why this happens? Again, it occurs only sometimes. Thank you! Quote Link to comment Share on other sites More sharing options...
Stephane Boussuge Posted November 20, 2020 Author Share Posted November 20, 2020 Hi, The values for density control has to be between something greater than 0, for example 0.01, and 1.00. Here's a better code: (setf size (car (rnd-number 1 12 32))) (setf psets '(c4 fs4 g4 e4 gs4 f4 a4 cs5 ds5 as4 d5 b4)) ;;; RHYTHM (setf dens-tend (vector-round 0.01 1.00 (pitch-to-integer psets))) (setf dens1 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens2 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens3 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens4 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens5 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens6 (vector-round 0 100 (gen-tendency size dens-tend))) SB. NagyMusic 1 Quote Link to comment Share on other sites More sharing options...
NagyMusic Posted December 30, 2020 Share Posted December 30, 2020 Stéphane, Thanks again for answering my questions about Session 17. I have one more inquiry related to Part1-Basic-Idea part of your presentation. Looking at the Looping the Process section, it seems like the basic process (algorithm) is evaluated only once, generating pitches, rhythms, and velocities, which are then repeated 12 times using gen-loop function and filtered with do-timeline2. What would it take to adjust the code so that the process is evaluated each of the 12 repeated times differently, resulting in different set of rhythms, pitches, and velocities each time? I include below the code of this section if it's easier to see what I'm referring to. My apologies if I'm misreading or mis-compiling the code. Thank you! - Zvony ;;; Looping the process ;;; ============================ (setf seq (gen-loop 12 ;; nb d'itération du process (progn ;; process (setf size 8) (setf ph1 (ambitus '(g3 g6) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd4 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) (setf ph2 (ambitus '(c3 g5) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd3 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) (setf ph3 (ambitus '(c2 e4) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd2 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) ;;; Mute/play (do-timeline2 '(ph1 ph2 ph3) (binary-invert (matrix-transpose (gen-group (rnd-sample 7 '(0 1)) :size size))) '(gen-pause x) ) ))) (setf vn (assemble-seq (loop for s in seq collect (nth 0 s)))) (setf va (assemble-seq (loop for s in seq collect (nth 1 s)))) (setf vc (assemble-seq (loop for s in seq collect (nth 2 s)))) (ps 'vsl :svn (list vn) :sva (list va) :svc (list vc) :tempo 88 ) Quote Link to comment Share on other sites More sharing options...
Stephane Boussuge Posted December 30, 2020 Author Share Posted December 30, 2020 Hi, it is not repeated because gen-loop repeat the process itself, it mean a new output for each iteration of the loop. Best. S. Quote Link to comment Share on other sites More sharing options...
NagyMusic Posted December 30, 2020 Share Posted December 30, 2020 Thanks, Stephane, for your quick reply. I meant to ask why the code above doesn't produce new output with each iteration of the gen-loop. I understand that gen-loop should repeat the process itself, which should, in turn, generate 12 different iterations of pitches, rhythms, and velocities. I tested this with other pitches, and it appears that the process is iterated only once, producing one set of material, which is then repeated 12 times. For instance, one can see this by observing the velocities, which are only generated once at the outset, instead of 12 consecutive times. Again, I apologize if I'm not seeing this right. And thank you again for your insight and patience! Quote Link to comment Share on other sites More sharing options...
NagyMusic Posted December 31, 2020 Share Posted December 31, 2020 So I tried again by reducing the number of iterations (gen-loop) and number of measures (setf size) for testing purposes. It turns out that the pitches output is different in each of the two iterations (almost; they're the same in the third eval), but the rhythms remain the same at both iterations (4 + 4 measures of the same rhythms). I attached the screenshots of the evaluated setf vn, va, vc below. Thank you once again! (setf seq (gen-loop 2 (progn (setf size 4) (setf ph1 (ambitus '(g3 g6) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd4 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) (setf ph2 (ambitus '(c3 g5) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd3 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) (setf ph3 (ambitus '(c2 e4) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd2 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) ;;; Mute/play (do-timeline2 '(ph1 ph2 ph3) (binary-invert (matrix-transpose (gen-group (rnd-sample 7 '(0 1)) :size size))) '(gen-pause x) ) ))) (setf vn (assemble-seq (loop for s in seq collect (nth 0 s)))) (setf va (assemble-seq (loop for s in seq collect (nth 1 s)))) (setf vc (assemble-seq (loop for s in seq collect (nth 2 s)))) Quote Link to comment Share on other sites More sharing options...
Stephane Boussuge Posted December 31, 2020 Author Share Posted December 31, 2020 HI, here's the fixed version, I've missed a list function in the previous one. Thank you for pointing out ! Best Stephane ;;; Looping the process ;;; ============================ (setf seq (gen-loop 4 ;; nb d'itération du process (progn ;; process (setf size 4) (list (setf ph1 (ambitus '(g3 g6) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd4 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) (setf ph2 (ambitus '(c3 g5) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd3 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) (setf ph3 (ambitus '(c2 e4) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd2 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) )))) (setf vn (assemble-seq (loop for s in seq collect (nth 0 s)))) (setf va (assemble-seq (loop for s in seq collect (nth 1 s)))) (setf vc (assemble-seq (loop for s in seq collect (nth 2 s)))) (ps 'gm :vn (list vn) :va (list va) :vc (list vc) :tempo 88 ) ;;; THE SAME PROCESS WITH ADDED MUTE/PLAY SYSTEM ;;; Looping the process ;;; ============================ (setf seq (gen-loop 4 ;; nb d'itération du process (progn ;; process (setf size 4) (list (setf ph1 (ambitus '(g3 g6) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd4 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) (setf ph2 (ambitus '(c3 g5) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd3 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) (setf ph3 (ambitus '(c2 e4) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd2 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) ) ;;; Mute/play (do-timeline2 '(ph1 ph2 ph3) (binary-invert (matrix-transpose (gen-group (rnd-sample 7 '(0 1)) :size size))) '(gen-pause x) ) ))) (setf vn (assemble-seq (loop for s in seq collect (nth 0 s)))) (setf va (assemble-seq (loop for s in seq collect (nth 1 s)))) (setf vc (assemble-seq (loop for s in seq collect (nth 2 s)))) (ps 'gm :vn (list vn) :va (list va) :vc (list vc) :tempo 88 ) NagyMusic 1 Quote Link to comment Share on other sites More sharing options...
NagyMusic Posted December 31, 2020 Share Posted December 31, 2020 (edited) Thanks, Stephane. One can really learn a lot from this session! I compiled the code you posted, and I still get four repeated measures of the same material. My understanding is that I should get four iterations of a completely different set of measures. Yet, from what I can tell, each time, the process continues to produce four measures of new material that is repeated (looped) four times. I restarted Opusmodus and tried again, but still got the same result. I also tried using gen-eval instead of gen-loop, but that didn't seem to work. Here's a screenshot of the viola part: For what it's worth, I'm providing some additional information. I'm afraid it could be something going on my end. Here's what I get in the Listener when compile the setf seq segment: 2 > gen-loop :seed 958822 gen-loop :seed 958822 gen-loop :seed 958822 gen-loop :seed 958822 gen-loop :seed 958822 gen-loop :seed 958822 gen-loop :seed 958822 ;Compiler warnings for "/Users/zvony/Dropbox/CREATE/Opusmodus/Zvony/zvony/ZoomOM/Session 17/looping-process.opmo" : ; In an anonymous lambda form at position 89: Undeclared free variable ph1 ;Compiler warnings for "/Users/zvony/Dropbox/CREATE/Opusmodus/Zvony/zvony/ZoomOM/Session 17/looping-process.opmo" : ; In an anonymous lambda form at position 432: Undeclared free variable ph2 ;Compiler warnings for "/Users/zvony/Dropbox/CREATE/Opusmodus/Zvony/zvony/ZoomOM/Session 17/looping-process.opmo" : ; In an anonymous lambda form at position 987: Undeclared free variable size (7 references) ;Compiler warnings for "/Users/zvony/Dropbox/CREATE/Opusmodus/Zvony/zvony/ZoomOM/Session 17/looping-process.opmo" : ; In an anonymous lambda form at position 775: Undeclared free variable ph3 And here's the corresponding omn notation: ((((e gs4 pp e. d4 e4 q d4 tie) (s d4 pp e4 d4 e. bb3 s b3 d4 bb3 f4 b3 bb3) (s d4 pp f4 d4 b3 e. gs3 b3 s e4 f4) (-s e. d4 pp e4 q d4 s bb3)) ((e d3 pp f3 s d3 e. b3 q gs3) (e d3 pp s e3 e. d3 s bb3 d3 bb3 d3 e3 b3) (s e4 pp d4 bb3 b3 e. d4 e bb3 s f3 b3 bb3) (-s e f3 pp s d3 e. b3 q gs3 s b3)) ((e d2 pp e. f2 q.. d2 tie) (e d2 pp q e2 tie s s d2 bb2 d2 bb2 d2) (s e3 pp d3 bb2 q b2 d3 tie s) (-s e. f2 pp h d2))) (((e d4 pp f4 s d4 e. b3 q gs3) (e d4 pp s e4 e. d4 s bb3 d4 bb3 d4 e4 b3) (s e5 pp d5 bb4 b4 e. d5 e bb4 s f4 b3 bb3) (-s e f4 pp s d4 e. b3 q gs3 s b3)) ((e d3 pp f3 s d3 e. b3 q gs3) (e d3 pp s e3 e. d3 s bb3 d3 bb3 d3 e3 b3) (s e4 pp d4 bb3 b3 e. d4 e bb3 s f3 b3 bb3) (-s e f3 pp s d3 e. b3 q gs3 s b3)) ((e d2 pp e. f2 q.. d2 tie) (e d2 pp q e2 tie s s d2 bb2 d2 bb2 d2) (s e3 pp d3 bb2 q b2 d3 tie s) (-s e. f2 pp h d2))) (((e d4 pp f4 s d4 e. b3 q gs3) (e d4 pp s e4 e. d4 s bb3 d4 bb3 d4 e4 b3) (s e5 pp d5 bb4 b4 e. d5 e bb4 s f4 b3 bb3) (-s e f4 pp s d4 e. b3 q gs3 s b3)) ((e d3 pp f3 s d3 e. b3 q gs3) (e d3 pp s e3 e. d3 s bb3 d3 bb3 d3 e3 b3) (s e4 pp d4 bb3 b3 e. d4 e bb3 s f3 b3 bb3) (-s e f3 pp s d3 e. b3 q gs3 s b3)) ((e d2 pp e. f2 q.. d2 tie) (e d2 pp q e2 tie s s d2 bb2 d2 bb2 d2) (s e3 pp d3 bb2 q b2 d3 tie s) (-s e. f2 pp h d2))) (((e d4 pp f4 s d4 e. b3 q gs3) (e d4 pp s e4 e. d4 s bb3 d4 bb3 d4 e4 b3) (s e5 pp d5 bb4 b4 e. d5 e bb4 s f4 b3 bb3) (-s e f4 pp s d4 e. b3 q gs3 s b3)) ((e d3 pp f3 s d3 e. b3 q gs3) (e d3 pp s e3 e. d3 s bb3 d3 bb3 d3 e3 b3) (s e4 pp d4 bb3 b3 e. d4 e bb3 s f3 b3 bb3) (-s e f3 pp s d3 e. b3 q gs3 s b3)) ((e d2 pp e. f2 q.. d2 tie) (e d2 pp q e2 tie s s d2 bb2 d2 bb2 d2) (s e3 pp d3 bb2 q b2 d3 tie s) (-s e. f2 pp h d2)))) And here's what I get when I evaluate/audition one of the instruments: 2 > audition-musicxml-omn-snippet ;Compiler warnings for "/Users/zvony/Dropbox/CREATE/Opusmodus/Zvony/zvony/ZoomOM/Session 17/looping-process.opmo" : ; In an anonymous lambda form at position 10: Undeclared free variable seq Edited December 31, 2020 by NagyMusic Further comments and questions. Quote Link to comment Share on other sites More sharing options...
Stephane Boussuge Posted December 31, 2020 Author Share Posted December 31, 2020 Thanks, I will have a look. S. Quote Link to comment Share on other sites More sharing options...
opmo Posted December 31, 2020 Share Posted December 31, 2020 (setf res '(progn (setf size 4) (list (setf ph1 (ambitus '(g3 g6) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd4 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) (setf ph2 (ambitus '(c3 g5) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd3 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) (setf ph3 (ambitus '(c2 e4) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd2 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 12 '(s -s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) ))))))) (setf seq (gen-loop 4 (eval res))) Stephane Boussuge and NagyMusic 1 1 Quote Link to comment Share on other sites More sharing options...
NagyMusic Posted December 31, 2020 Share Posted December 31, 2020 Thanks, everyone. I didn't mean to cause you much trouble with this, but one can learn a lot from this session. Thanks to Stephane's efforts to share such informative sessions with the community! It's all clear now. Creating the process first and then looping it # times make sense. Happy New Year! Quote Link to comment Share on other sites More sharing options...
Stephane Boussuge Posted December 31, 2020 Author Share Posted December 31, 2020 Thanks Janusz. s. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.