Jump to content

Stephane Boussuge

Moderators
  • Posts

    778
  • Joined

  • Last visited

Everything posted by Stephane Boussuge

  1. do a right click on the file and select open, you will get almost the same message but with the possibility to open it anyway. Best SB.
  2. A short example showing the basics of counterpoint function.
  3. I agree, an horizontal replacement possibility would be very useful. Best ! SB.
  4. The notes in patterns are not really rounded, they are the harmonic path itself, they are played sequentially in order from the notes given to :harmony parameter , so if you want to use closest path or any voices leading technique, you need to prepare your :harmony sequence of pitches right to be what you need. This :harmony could be also useful for serial or pitch-class composers who want to play the pitches from some row/Pcs in order, kind of horizontal distribution of pitches for motivic design. For vertical distribution across voices, I would probably prefer to use the distribute-seq function or a similar approach. It is also possible to use tonality-map function after the counterpoint but it would be nice to be able to use it also directly into counterpoint dictum like the :harmony keyword, something like :tonality keyword. Janusz ? Best ! Stf
  5. Please, note that harmony in counterpoint is the application of the harmonic-path function, who allow you to keep voice leading in chords as I showed several times in my lessons, and it is very different than tonality-map function. Btw, if you use scale in :harmony parameter you will get scalar motive in counterpoint but if you use chords with well defined voices leading from chord to chord, the result could become much interesting in terms of harmonic control and voice leading control SB.
  6. Try this : (progn ;; Global SEED (init-seed 15342) ;; Patterns (setf ;p1 '((-s c1 p g2 cs3) (3q fs3 - bb3) (-3q eb4 mf a4) (-s b4 d5 f5) ; (-5q gs5 e6 c1 mp g2) (-3q cs3 fs3 mf) (s bb3 - eb4 p a4) (s b4 mp d5 f5 -)) ;p2 '((5q bb2 mf g3 c4 e3 a3) (5q d4 mp fs4 gs4 b4 p cs5) (s f5 eb6 bb3 g3)) ;p3 '((5q fs4 p - bb3 f3 e4) (-3q g4 c5) (s eb5 a5 mf cs6 gs6) ; (5q gs6 pp cs6 mf a5 eb5 -) (-s c5 g4 e4)) ;p4 '((5q bb3 p a4 c6 cs6 cs6) (s g7 mp a6 c6 e5 - d4 cs4 g3 3h fs3 eb3 -) ; (-3q b6 pp a6 5q c6 - d5 bb4 b3 -s gs3 f1 eb3)) p5 '((5q c2 mf g2 e2 a2 b2) (5q fs5 p gs5 bb5 b5 cs5 mp) (s f5 eb6 c6 p g6)) p6 '(s a4 p e b5 s gs3 3h f3 3q e2 5h eb4 5q g5 fs2 f4) p7 '(5q cs5 mf d5 5h eb5 5q f5 fs5 gs5 5h a5 f 5q bb5 5h b5 5q cs6 5h) p8 '(t bb4 mp cs6 c5 b5 bb4 cs6 a3 gs2 3q a2 gs5 fs4) ) (setf p1 '(e d7 d7 d7 d7 d7 d7 d7 d7 s d6 d6 d6 d6 d6 d6 d6 d6 h)) (setf p2 '(e d5 d5 d5 d5 d5 d5 d5 d5 s d4 d4 d4 d4 d4 d4 d4 d4 h)) (setf p3 '(e d4 d4 d4 d4 d4 d4 d4 d4 s s s s s s s s h d3)) (setf p4 '(e d2 d2 d2 d2 d2 d2 d2 d2 s s s s s s s s h d1)) ;(pitch-transpose 2 p4) (setf patterns (list p1 p2 p3 p4 p5 p6 p7 p8)) (setf harmony2 '((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4))) (setf dictum-a `(((1 2 3 4) :harmony ,harmony2 :tempo 72) ((1 2 3 4) :harmony ((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4)) :tempo 72) ((2 1 3 4) :harmony ((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4)):methods (- ri - -) :tempo 72) ((3 2 1 4) :harmony ((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4)):methods (a d2 r -) :tempo 72) ((4 3 2 1) :harmony ((a3b3e4gs4) (b3e4gs4a3) (e4gs4a3b3)(gs4a3b3e4)) :tempo 72) ((4 2 1 4):harmony a3b3e4gs4) ((2 3 1 4):harmony a3b3e4gs4) ((3 2 1 4):harmony a3b3e4gs4) ((- - - -) :span 1/4 :harmony a3b3e4gs4)) dictum-b '(((- 5 2 -) :span 3/4 :methods (- ri - -) :tempo 64) ((- 2 2 6) :span 3/4 :methods (- d d3 -) :tempo (:rit 80 56 1/64)) ((4 6 6 8) :span 2/4 :methods (a d2 r -) :tempo 88) ((- - - -) :span 1/4)) dictum-c '(((7 4 - 5) :methods (a d i ?) :extend (s - s -) :tempo 64) ((1 2 2 3) :methods (a d i -) :extend (s - s -))) dictum-d '(((- 3 - -) :methods (- - - -) :tempo 80) ((- 2 - -) :methods (- - - -)) ((- 4 - -) :methods (< - - -)) ;((1 1 1 1) :methods (da ad (r d5) (i d2)) :polyphony (7 o) :tempo 72) ) ) ;; Sections (setf sec-a (counterpoint patterns dictum-a :global-methods '((dyn fl) - - -))) (setf sec-b (counterpoint patterns dictum-b :global-methods '((dyn fl) (dyn cl) (t-12 dyn hn) (t-12 dyn vc)) :global-polyphony '((10 p) (1 13)) :iterate t)) (setf sec-c (counterpoint patterns dictum-c :global-methods '((dyn fl) (dyn cl) (t-12 dyn hn) (t-12 dyn vc)) :global-polyphony '((7 p) (1 13)) :iterate t)) (setf sec-d (counterpoint patterns dictum-d :global-methods '((dyn fl) (dyn cl) (dyn hn) (dyn vc)))) ;; Assemble Voices (assemble-voices 'voice sec-a sec-b sec-c sec-d) (ps 'gm :sq ;(list (pitch-transpose 12 vh1-2) vh2-2 vh3-2 vh4-2) (list (pitch-transpose 0 voice1) (pitch-transpose 0 voice2) (pitch-transpose 0 voice3) (pitch-transpose 0 voice4) #| (pitch-transpose 0 (ambitus 'violin voice1)) (pitch-transpose 0 (ambitus 'violin voice2)) (pitch-transpose 0 (ambitus 'viola voice3)) (pitch-transpose -12 (ambitus 'cello voice4)) |# ) :key-signature 'atonal ;;;obs:it´s possible to bypass the time signature we did before opening the time signature here ;;time-signature timesig-proc are processed lists of time-signatures ;:time-signature timesig ;:tempo 90 :flexible-clef nil :title ;:flexible-clef nil "Quartet Harmony Control - JULIO HERRLEIN" :display :window) ;; Global SEED back to NIL (init-seed nil) ) SB The trick is here with backquote: `(((1 2 3 4) :harmony ,harmony2 :tempo 72)
  7. You can do it like that: (setf len '((1/8 7/8) (1/8 7/8) (1/4 1/12 1/12 1/12 3/16 5/16) (-3/8 1/8 1/4 -1/8 1/8))) (setf count (mapcar (lambda(x) (count-item 1 x)) (length-to-binary len))) But you are right, we could simply do it with GET-COUNT: (get-count len :length :note ) Best ! Stéphane
  8. One possible way among the infinity of possibility : ;;; Creating random notes that are played ;;; in clusters over random time periods ;; Create random notes (setf notes (rnd-sample 512 (make-scale 'c2 48))) ;; Create chords (setf chords (gen-chord 24 4 8 -6 6 notes)) ;; Create binary time periods (setf bin (gen-binary-rnd 24 16 1 8)) ;; Create rhythm from binary (setf ry (binary-map bin 's)) ;; Create random dynamics (setf dyn (rnd-sample (length chords) '(pp p mp mf f ff))) ;; Full OMN Assembly (setf rnd-chords (make-omn :pitch chords :length ry :velocity dyn ;:span :pitch )) (ps 'gm :pg (list rnd-chords) :tempo 64) SB.
  9. All fine Julio, thanks, no worries ! It's finish now. Best Stéphane
  10. Nothing to do during my Covid period and a bit of fever, so... stephaneboussuge · Covid - For - String - Quartet Covid-forStringQuartet.opmo
  11. The narrator is IBM AI " Watson". Best Stéphane
  12. Opusmodus file used for this video attached here. Enjoy. SB. LiveCodingDemo0521.opmo
  13. Hi Julio, i will be very interesting to see your way to control harmony. Best S.
  14. New piece made with OM: stephaneboussuge · Traces For Ensemble SB.
  15. Perfect, so if we write (q c4 ped -), the pedal will stop at the end of the quarter c4 as it has to be but if we want it goes on the rest we will write (q c4 ped - ped) ? That’s will be very cool and elegant solution. Or ( ped (q c4 -)) ? Also nice ... s.
  16. Yes, that's useful indeed but also we need to be able to stop it precisely if needed... SB.
  17. Hi Julio, Staffpad was used ONLY for the sound rendering. The piece was composed in OM and edited in Sibelius then exported to Musicxml to Staffpad. About Staffpad, I am very impressed by the quality of sound of the sound libs you can buy separately to it (Berlin first chairs Strings, woods etc..). I'm using it like the most efficient and simple midi rendering tool I ever seen with great output sound quality without any editing. And yes, it's on iPad but staffed exist also for Windows tablet. Best, S.
  18. Hi folks, Here's a work in progress made with the fantastic COUNTERPOINT function. S.
  19. i've experimented a bit with pitch alignment for controlling harmony, here's what I tried. Hope it could help. ;;; Pich alignment with binaries ;;; Proof of concept (progn (setf lvl (rnd-sample 8 '(8 12 16))) (setf len1 (euclidean-rhythm lvl 1 12 's)) (setf len2 (euclidean-rhythm lvl 1 12 's)) (setf len3 (euclidean-rhythm lvl 1 12 's)) (setf bin1 (length-to-binary len1)) (setf bin2 (length-to-binary len2)) (setf bin3 (length-to-binary len3)) (setf pch '(c4 d4 e4 f4 g4 a4 b4 c5 b4 a4 g4 f4 e4 d4 c4)) (setf pch1 (binary-map bin1 pch)) (setf pch2 (binary-map bin2 pch)) (setf pch3 (binary-map bin3 pch)) (setf omn1 (make-omn :pitch pch1 :length len1)) (setf omn2 (make-omn :pitch pch2 :length len2)) (setf omn3 (make-omn :pitch pch3 :length len3)) (ps 'gm :fl (list omn1) :fl (list omn2) :fl (list omn3)) ) ;;; Now with intervals (progn (setf lvl (rnd-sample 8 '(8 12 16))) (setf len1 (euclidean-rhythm lvl 1 12 's)) (setf len2 (euclidean-rhythm lvl 1 12 's)) (setf len3 (euclidean-rhythm lvl 1 12 's)) (setf bin1 (length-to-binary len1)) (setf bin2 (length-to-binary len2)) (setf bin3 (length-to-binary len3)) (setf pch '(c4 d4 e4 f4 g4 a4 b4 c5 b4 a4 g4 f4 e4 d4 c4)) (setf pch1 (binary-map bin1 pch)) (setf pch2 (binary-map bin2 (pitch-transpose-n '(-4 -3 -7) pch1))) (setf pch3 (binary-map bin3 (pitch-transpose-n '(-17 -20 -19) pch1))) (setf omn1 (make-omn :pitch pch1 :length len1)) (setf omn2 (make-omn :pitch pch2 :length len2)) (setf omn3 (make-omn :pitch pch3 :length len3)) (ps 'gm :fl (list omn1) :cl (list omn2) :bn (list omn3)) ) ;;; Pitch generation from choral with 7th chords (progn (setf lvl (rnd-sample 8 '(8 12 16))) (setf len1 (euclidean-rhythm lvl 1 12 's)) (setf len2 (euclidean-rhythm lvl 1 12 's)) (setf len3 (euclidean-rhythm lvl 1 12 's)) (setf bin1 (length-to-binary len1)) (setf bin2 (length-to-binary len2)) (setf bin3 (length-to-binary len3)) (setf chords (gen-chord3 '(d3 f3 e3 a3) '((10 16)))) (setf cpch1 (pitch-demix 1 chords)) (setf cpch2 (pitch-demix 2 chords)) (setf cpch3 (pitch-demix 3 chords)) (setf pch1 (binary-map bin1 cpch1)) (setf pch2 (binary-map bin2 cpch2)) (setf pch3 (binary-map bin3 cpch3)) (setf omn1 (make-omn :pitch pch1 :length len1)) (setf omn2 (make-omn :pitch pch2 :length len2)) (setf omn3 (make-omn :pitch pch3 :length len3)) (ps 'gm :fl (list omn1) :cl (list omn2) :bn (list omn3)) ) ;;; Same as above but with chord change only on every bar (progn (setf lvl (rnd-sample 8 '(8 12 16))) (setf len1 (euclidean-rhythm lvl 1 12 's)) (setf len2 (euclidean-rhythm lvl 1 12 's)) (setf len3 (euclidean-rhythm lvl 1 12 's)) (setf bin1 (length-to-binary len1)) (setf bin2 (length-to-binary len2)) (setf bin3 (length-to-binary len3)) (setf chords (gen-chord3 '(d3 f3 e3 a3) '((10 16)))) (setf cpch1 (mclist (pitch-demix 1 chords))) (setf cpch2 (mclist (pitch-demix 2 chords))) (setf cpch3 (mclist (pitch-demix 3 chords))) (setf pch1 (binary-map bin1 cpch1)) (setf pch2 (binary-map bin2 cpch2)) (setf pch3 (binary-map bin3 cpch3)) (setf omn1 (make-omn :pitch pch1 :length len1)) (setf omn2 (make-omn :pitch pch2 :length len2)) (setf omn3 (make-omn :pitch pch3 :length len3)) (ps 'gm :fl (list omn1) :cl (list omn2) :bn (list omn3)) ) SB.
  20. Only Janusz can do such a function but indeed I think something like that could be useful for controlling vertical intervalic harmony between multiple voices coming from and already generated chord canevas and extracted with pitch-demix or similar function. S.
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy