# JulioHerrlein

Members

757

1. ## resolved Ploting Graphs for 12 tone properties

Dear All, I´m looking for a way to plot some graphs like these, showing 12 tone row ordering: I think that a function like this would be easy to program and adapt from the library. I don´t if there exist already something similar... It´s useful to show properties of 12 tone sets, like Tropes, simmetry relations, geometric operations. Best ! Julio How Rare Is Symmetry in Musical 12-Tone Rows? on JSTOR WWW.JSTOR.ORG David J. Hunter, Paul T. von Hippel, How Rare Is Symmetry in Musical 12-Tone Rows?, The American Mathematical Monthly, Vol. 110, No. 2 (Feb., 2003), pp. 124-132 HERE !!! FOUND !! (circle-pitch-plot '(0 2 6 0 3 7 0 4 8) :sort nil :point-radius 6)

Thank you !
3. ## Snippet watermark

Dear Friends, Is there some way to configure the snippets without the watermark "opusmodus" in it ? Sometimes it can be useful. Best, Julio
4. ## Harmony from white noise

Very nice, Stephane !! One question: since you wrote just one rhythmic line, how there are 2 independent rhythms going on ? Best ! Julio
5. ## Simple Tuplet Question

Thanks ! Best !
6. ## Simple Tuplet Question

Dear All, Simple question How to make this kind of tuplet ? (4h. 4h. 4h. 4h.) won´t work in this context... Best ! Julio
7. ## Composing a piano piece with counterpoint function

Very nice, Stephane !! Thank you ! Watching now ! Best !!
8. ## Replace Stream - Amazing Tool !!!!

Dear Janusz, Thanks for the explanation. I found my way to use it !!! Finally !!! It will be VERY USEFUL (thanks a lot) Here is my way to use it: SCORE BEFORE RE-PITCH ;;; BEFORE REPITCH (progn (setf rv1 '((1/8) (1/8 3/4 1/8 1/8 3/4) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/4 1/16 -3/8 1/8 1/4 -1/8 1/8 1/2) (1/4) (1/8 1/2 1/8 1/4 1/12 1/12 1/12 3/16 1/4 1/16) (-3/8 1/8) (1/4 -1/8 1/8 3/4 1/8 1/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8) (1/4) (-1/8 1/8 1/2 1/4 1/8 1/2 1/8) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/8 3/8) (1/2) (1/8 3/8) (1/8) (1/8 3/4 1/8 1/8 3/4) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/4 1/16 -3/8 1/8 1/4 -1/8 1/8 1/2) (1/4) (1/8 1/2 1/8 1/4 1/12 1/12 1/12 3/16 1/4 1/16) (-3/8 1/8) (1/4 -1/8 1/8 3/4 1/8 1/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8) (1/4) (-1/8 1/8 1/2 1/4 1/8 1/2 1/8) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/8 3/8) (1/2) (1/8 3/8) (1/8) (1/8 3/4 1/8 1/8 3/4) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/4 1/16 -3/8 1/8 1/4 -1/8 1/8 1/2) (1/4) (1/8 1/2 1/8 1/4 1/12 1/12 1/12 3/16 1/4 1/16) (-3/8 1/8) (1/4 -1/8 1/8 3/4 1/8 1/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8) (1/4) (-1/8 1/8 1/2 1/4 1/8 1/2 1/8) (1/4) (1/12 1/12 1/12 3/16 1/4 1/16 -3/8 1/8 1/4 -1/8 1/8) (3/4) (1/8 1/8 1/2 1/8 3/8) (1/2) (1/8 3/8))) (setf rv2 '((-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8) (-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8) (-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8))) (setf rv3 '((-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8) (-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8) (-1/4 -1/8 1/8) (1/2 -1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/8 1/8 1/4) (1/2) (-1/2 -1/8 1/8 1/4 1/12 1/12 1/12 3/16 1/16) (1/4) (-1/8 1/8 1/2 -1/8 1/8 3/4) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/4 1/16 -1/8 1/8) (1/2) (-1/8 1/8 1/4 1/2) (-1/2 -1/8 1/8) (1/4 1/12 1/12 1/12 3/16 1/16 1/4 -1/8 1/8 1/2) (-1/8 1/8) (3/4 -1/2 -1/8 1/8 1/4) (1/12) (1/12 1/12 3/16 1/4 1/16 -1/8 1/8 1/2 -1/4 -1/8 1/8) (1/2) (-1/4 -1/8 1/8))) (setf rv4 '((-1/4 -1/4 -1/8 1/8) (1/4 -1/4 -1/4 -1/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4 1/8 3/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/2 1/8) (1/4) (-3/8 1/8 1/4 1/8 7/8) (1/4) (1/12 1/12 1/12 3/16 1/16 1/8 1/8 3/4) (-1/4 -1/8 1/8) (1/4 1/8 3/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/16 1/8 1/2 1/8 1/4 -3/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4) (-1/4 -1/4 -1/8 1/8) (1/4) (-1/4 -1/4) (-1/4 -1/4 -1/8 1/8) (1/4 -1/4 -1/4 -1/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4 1/8 3/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/2 1/8) (1/4) (-3/8 1/8 1/4 1/8 7/8) (1/4) (1/12 1/12 1/12 3/16 1/16 1/8 1/8 3/4) (-1/4 -1/8 1/8) (1/4 1/8 3/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/16 1/8 1/2 1/8 1/4 -3/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4) (-1/4 -1/4 -1/8 1/8) (1/4) (-1/4 -1/4) (-1/4 -1/4 -1/8 1/8) (1/4 -1/4 -1/4 -1/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4 1/8 3/8) (1/2) (1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/2 1/8) (1/4) (-3/8 1/8 1/4 1/8 7/8) (1/4) (1/12 1/12 1/12 3/16 1/16 1/8 1/8 3/4) (-1/4 -1/8 1/8) (1/4 1/8 3/8 1/2 1/4 1/12 1/12 1/12) (3/16) (1/16 1/8 1/2 1/8 1/4 -3/8 1/8 1/4) (1/8) (7/8 1/4 1/12 1/12 1/12 3/16 1/16 1/8 1/8) (3/4) (-1/4 -1/8 1/8 1/4) (-1/4 -1/4 -1/8 1/8) (1/4) (-1/4 -1/4))) (setf v1pit '(f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5 e5 f5)) (setf v2pit '(c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4 d4 c4)) (setf v3pit '(bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3 bb3 gs3)) (setf v4pit '(bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2)) (setf len-map1 '((e (stacc)) (s (ord)) (h (long)) (h. (long)) (w (long)))) (setf len-map2 '((e (list (rnd-pick '(mf f)))) (s (mf)) (e. (mf)) (h (p<f)) (h. (p<f)) (w (P<f>p))(wq (P<f>p))(wh (P<f>p))(wh. (P<f>p))(ww (P<f>p)))) (setf v1mat-a (make-omn :length rv1 :pitch (span rv1 v1pit) ;to gen-divide = 1 use v1dtc, instead of v1dtb :span :length :velocity (length-map len-map2 rv1 :otherwise '(mf) :repeat t) :articulation (length-map len-map1 rv1 :otherwise '(ord) :repeat t))) (setf v2mat-a (make-omn :length rv2 :pitch (span rv2 v2pit) :span :length :velocity (length-map len-map2 rv2 :otherwise '(mf) :repeat t) :articulation (length-map len-map1 rv2 :otherwise '(ord) :repeat t))) (setf v3mat-a (make-omn :length rv3 :pitch (span rv3 v3pit) :span :length :velocity (length-map len-map2 rv3 :otherwise '(mf) :repeat t) :articulation (length-map len-map1 rv3 :otherwise '(ord) :repeat t))) (setf v4mat-a (make-omn :length rv4 :pitch (span rv4 v4pit) :span :length :velocity (length-map len-map2 rv4 :otherwise '(mf) :repeat t) :articulation (length-map len-map1 rv4 :otherwise '(ord) :repeat t))) (ps 'gm :sq (list (pitch-transpose 0 (ambitus 'violin v1mat-a )) (pitch-transpose 0 (ambitus 'violin v2mat-a)) (pitch-transpose 0 (ambitus 'viola v3mat-a)) (pitch-transpose 0 (ambitus 'cello v4mat-a)) ) :key-signature 'atonal :time-signature '(4 4) ;:tempo 90 :flexible-clef nil :title "Quartet BEFORE RE-PITCH - JULIO HERRLEIN" :display :window) ) My solution is to use one distribute-stream per voice. In this way, I can just put exactly what I want in each voice. ;;; QUARTET AFTER REPITCH PROCESS USING One instance of Distribute-Stream for each voice (progn (setf repitch1 '(f5 e5 d5 c5 f5 e5 d5 c5 f5 e5 d5 c5 f5 e5 d5 c5 f5 e5)) (setf repitch2 '(c4 cs4 d4 eb4 e4 f4 fs4 g4 gs4 a4 bb4 c5 cs5 d5 eb5 e5)) (setf repitch3 '(c4 b3 bb3 a3 gs3 g3 fs3 f3 e3 eb3 d3 cs3 c3 b2 bb2 a2)) (setf repitch4 '(cs2 g2 cs2 g2 cs2 g2 cs2 g2 cs2 g2 cs2 g2 cs2 g2 cs2 g2)) (setf v1-new (distribute-stream repitch1 (list v1mat-a))) (setf v2-new (distribute-stream repitch2 (list v2mat-a))) (setf v3-new (distribute-stream repitch3 (list v3mat-a))) (setf v4-new (distribute-stream repitch4 (list v4mat-a))) (setf in1 (make-omn :length v1mat-a :pitch (1~ v1-new))) (setf in2 (make-omn :length v2mat-a :pitch (1~ v2-new))) (setf in3 (make-omn :length v3mat-a :pitch (1~ v3-new))) (setf in4 (make-omn :length v4mat-a :pitch (1~ v4-new))) (ps 'gm :sq (list (pitch-transpose 0 (ambitus 'violin in1)) (pitch-transpose 0 (ambitus 'violin in2)) (pitch-transpose 0 (ambitus 'viola in3)) (pitch-transpose 0 (ambitus 'cello in4)) ) :key-signature 'atonal :time-signature '(4 4) ;:tempo 90 :flexible-clef nil :title "Quartet RE-PITCH - JULIO HERRLEIN" :display :window) ) All the best !! Julio
9. ## Replace Stream - Amazing Tool !!!!

If the restream function could collect the notes horizontally from the source score and place the same way in the destination score it would be nice. Below, I suggest using one restream for each voice. It works like a charm. Another possibility would be having the :harmony keyword in the Counterpoint function working with the exact notes you put, without messing the octaves (side effect of the embedded harmonic path). So the method for composing would be: 1) Do whatever patterns you like ( don´t think about the notes, just the rhythmic texture of the Counterpoint) 2) Put the notes you like (in the exact octave you want) in the :harmony keyword 3) Let the counterpoint do the span (according with the longest pattern or specify spans for each measure 4) Be happy !! For my purposes, the counterpoint is still what is "almost there". Best, Julio
10. ## Replace Stream - Amazing Tool !!!!

Thanks a lot, Janusz.
11. ## Replace Stream - Amazing Tool !!!!

Dear Friends, Please check this replace-stream function !! This is what I was searching for and trying to achieve for a long time !! It really worth to upgrade. I have some questions regarding this new tool: Here is the code, similar to the documentation. First, we have the Bach Chorale. Second, there are some original material that looks like this: V1 plays only E and F pitch classes V2 plays only C and D pitch classes VLA plays only Bb and G# pitch classes CELLO plays only Bb and Eb pitch classes For easy understanding of the point When I do the replace-stream, I.E., using the new pitch classes to the old Bach Chorale, I get this My new notes are traversing the instruments vertically and not horizontally (voice by voice) I´d like to keep the same pitch classes in each instrument, just with the new rhythms of the Bach Chorale, I.E., the VL1 plays only E and F, the VL2, only C and D, as I had in the original music. It´s just like an inverted axis... (or maybe the distribution is related with the length...) There is some solution ? I hope so, because this sounds AMAZING ! It´s just what I need ! I was trying to do this with the counterpoint function (in the previous post, with the :harmony keyword, but getting some noise in between, because of the nature of embedded harmonic path inside the Counterpoint function. Best ! Julio ;;;FORUM QUESTION ;;--------------------------------------------------------- ;; Bach, BWV 0004 (progn (setf soprano '((-h. q b4) (q as4 e b4 cs5 q d5 e5) (q d5 cs5 b4 fermata b4) (q g4 a4 b4 e a4 g4) (e fs4 e4 q fs4 e4 fermata b4) (q as4 e b4 cs5 q d5 e5) (q d5 cs5 b4 fermata b4) (q g4 a4 b4 e a4 g4) (e fs4 e4 q fs4 e4 fermata -q) (e e4 fs4 q g4 a4 e e4 fs4) (q g4 a4 b4 fermata b4) (q e5 ds5 e5 e fs5 e5) (q d5 cs5 b4 fermata cs5) (q d5 e b4 cs5 q d5 a4) (q g4 fs4 h e4 fermata) (q b4 a4 h g4) (h fs4 e4 fermata)) alto '((-h. q g4) (q fs4 fs4 fs4 fs4) (q fs4 e fs4 e4 q ds4 fermata fs4) (q e4 d4 e d4 ds4 q e4 tie) (q e4 ds4 b3 fermata g4) (q fs4 fs4 fs4 fs4) (q fs4 e fs4 e4 q ds4 fermata fs4) (q e4 d4 e d4 ds4 q e4 tie) (q e4 ds4 b3 fermata -q) (q b3 e4 q. e4 e ds4) (q e4 d4 d4 fermata e g4 a4) (q b4 a4 b4 fs4) (q fs4 e fs4 e4 q d4 fermata e4) (q fs4 d4 g4 fs4) (e fs4 e4 e4 ds4 h e4 fermata) (e d4 e4 q. fs4 e ds4 q e4 tie) (q e4 ds4 h b3 fermata)) tenor '((-h. e e4 d4) (q cs4 e d4 as3 q b3 cs4) (q b3 as3 fs3 fermata b3) (e b3 c4 b3 a3 g3 a3 q b3) (q c4 e fs3 a3 q g3 fermata e e4 d4) (q cs4 e d4 as3 q b3 cs4) (q b3 as3 fs3 fermata b3) (e b3 c4 b3 a3 g3 a3 q b3) (q c4 e fs3 a3 q g3 fermata -q) (e g3 a3 q b3 e a3 b3 q c4) (q b3 a3 g3 fermata d4) (q g4 fs4 e e4 d4 q cs4) (q b3 as3 fs3 fermata g3) (q a3 g3 g3 e d4 c4) (q b3 a3 h g3 fermata) (q g3 e fs3 b3 q b3 c4 tie) (q c4 e b3 a3 h gs3 fermata)) bass '((-h. q e3) (e fs3 e3 d3 cs3 q b2 as2) (q b2 fs2 b2 fermata ds3) (q e3 fs3 e g3 fs3 q e3) (e a2 s b2 c3 q b2 e2 fermata e3) (e fs3 e3 d3 cs3 q b2 as2) (q b2 fs2 b2 fermata ds3) (q e3 fs3 e g3 fs3 q e3) (e a2 s b2 c3 q b2 e2 fermata -q) (q. e3 e d3 c3 b2 q a2) (q e3 fs3 g3 e g3 fermata fs3) (q e3 fs3 gs3 as3) (q b3 fs3 b2 fermata e3) (q d3 g3 e b2 c3 q d3) (q e3 b2 h c3 fermata) (q g3 ds3 e3 c3) (q a2 b2 h e2 fermata))) (def-score bach-bwv-0004 ( :title "Bach, BWV-0004" :composer "J.S. Bach" :key-signature '(e min) :time-signature '(4 4) :tempo 88 :layout (choir-satb-layout 'soprano 'alto 'tenor 'bass) ) (soprano :omn soprano :channel 1 :sound 'gm :program 0) (alto :omn alto :channel 2) (tenor :omn tenor :channel 3) (bass :omn bass :channel 4) ) ) ;;; ORIGINAL MATERIAL (4 voices) ;; EACH VOICE USES DIFFERENT PITCH CLASSES FOR DEBUG ;;; this voice uses only pcs E and F (setf v1mat-a '((e f5 stacc) (e e5 stacc h. f5 p<f long e e5 mf stacc f5 stacc h. e5 p<f long) (q f5 mf ord) (3q e5 ord f5 ord e5 ord e. f5 ord q e5 ord s f5 ord -q. e e5 stacc q f5 ord -e e5 stacc))) ;;; this voice uses only pcs C and D (setf v2mat-a '((-q -e c4 f stacc) (h d4 p<f long -q -e c4 f stacc h d4 p<f long) (-e c4 f stacc) (h. d4 p<f long -h -e c4 f stacc q d4 mf ord) (3q c4 ord) (3q d4 ord c4 ord e. d4 ord q c4 ord s d4 ord -e c4 f stacc h d4 p<f long -e c4 f stacc q d4 mf ord))) ;;; this voice uses only pcs Bb and G# (setf v3mat-a '((-q -e bb3 stacc) (h gs3 p<f long -q -e bb3 mf stacc h gs3 p<f long) (-e bb3 mf stacc) (h. gs3 p<f long -h -e bb3 mf stacc q gs3 ord) (3q bb3 ord))) ;;; this voice uses only pcs Bb and Eb (setf v4mat-a '((-q - -e bb2 stacc) (q eb2 ord - - -e bb2 stacc q eb2 ord) (e bb2 stacc) (h.. eb2 ord q bb2 ord 3q eb2 ord bb2 ord eb2 ord e. bb2 ord s eb2 ord e bb2 stacc eb2 stacc))) ;;; PREVIEW ORIGINAL MATERIAL (ps 'gm :sq (list (pitch-transpose 0 (ambitus 'violin v1mat-a )) (pitch-transpose 0 (ambitus 'violin v2mat-a)) (pitch-transpose 0 (ambitus 'viola v3mat-a)) (pitch-transpose 0 (ambitus 'cello v4mat-a)) ) :key-signature 'atonal :time-signature '(4 4) ;:tempo 90 :flexible-clef nil :title "replace stream" :display :window) (setf original-pitches (list v1mat-a v2mat-a v3mat-a v4mat-a)) (setf stream (collect-stream :pitch original-pitches)) (setf bach (collect-score-instruments 'bach-bwv-0004)) (replace-stream stream bach :index 'v :articulation nil :rest-articulation nil) (ps 'gm :sq (list v1 v2 v3 v4) :time-signature '(3 4) :tempo tempo )
12. ## Gen-Choralis: How to bypass voice leading ?

Dear All, From the example below I suppose that choralis function applyes some voice-leading in the progression provided. Maybe to generate some more singable sequence ? (maybe not...) For example, here I provide my classic test-debuggin harmony: (setf chords2 (gen-trim 31 '(a3b3e4gs4 gs3eb4g4bb4 cs3a3b3e4 gs2f3bb3d4 gs2e3b3eb4 eb3b3cs4fs4 a2e3eb4b4 fs2cs3c4gs4 d3gs3b3g4 b3e4fs4a4 fs3cs4f4c5 b3cs4fs4bb4 g2d3cs4a4 g2fs3b3cs4 e2fs3g3d4 f2eb3bb3d4 b2g3a3d4 bb2gs3eb4g4 e3c4g4d5 cs3a3e4b4 gs3bb3eb4g4 fs3gs3cs4f4 fs2e3b3eb4 cs3a3b3e4 b2gs3cs4f4 eb3a3d4fs4 d3bb3f4c5 e3eb4gs4bb4 f3cs4gs4eb5 b2fs3f4cs5 eb3b3cs4fs4 eb3gs3b3g4 e3g3d4fs4 a2bb3eb4g4 d3b3e4gs4 eb3cs4e4a4 c4g4b4d5 a3e4gs4b4 f3c4e4g4 g3d4fs4a4 bb2c4f4a4))) (setf lengths (gen-prob 31 '((h .4) (q .2) (h. .4) (q .3) (-h .2) (-q .3) (w .5)) :seed 441896)) (setf velocity (gen-prob 31 '((p .4) (mp .4) (mf .3) (f .2)) :seed 435)) (setf chords (gen-choralis lengths chords2 :velocity velocity)) (choralis chords :index 'v :seed 653886 :methods '(:soprano dyn :alto dyn :tenor dyn :bass dyn)) (ps 'gm :sq (list (pitch-transpose 0 (ambitus 'violin v1)) (pitch-transpose 0 (ambitus 'violin v2)) (pitch-transpose 0 (ambitus 'viola v3)) (pitch-transpose 0 (ambitus 'cello v4)) ) :key-signature 'atonal ;:time-signature timesig :tempo 90 :flexible-clef nil :title "Choralis study" :display :window) But in the processed score, given in the example below, the initial harmony is probably processed with some undesired voice-leading. Is possible to use choralis without the voice-leading, i.e., outputting LITERALLY the initial harmony ? Some keyword ? The chords at the gen-choralis stage looks to be rigth, but the Choralis splitting itself make some undesirable (for my specific purpose) closest-path voice-leading. Best ! Julio
13. ## Counterpoint Question - use of variable for harmony keyword

Thanks, Janusz ! Best ! Julio
14. ## Counterpoint Question - use of variable for harmony keyword

Thanks again, Stephane ! Yes, this is the way I was thinking: preparing the notes beforehand and use the counterpoint function to have a more flexible way to control the harmony. I was doing everything manually, using mechanisms and processes to control the things, but this way can be easier. For harmony control is just a matter of distributing the chord tones on the harmony lists. The rest is finding appropriate textures. Stephane, if you permit, I have one more question: How the :global-methods "dyn" works (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)) I see expressions like that in counterpoint examples, but I don´t how "dyn" is defined. I found something like this, in example 4 (setf globals '((q12345 dyn fl) (q12345 dyn ob) (q12345 t-12 dyn bcl) (q12345 dyn hp))) Thanks a lot ! Julio
15. ## Counterpoint Question - use of variable for harmony keyword

Thanks a lot, Stephane ! This is interesting ! I´m trying to just provide some general countour in a series of patterns and then manipulate the pitches using this harmony keyword. Sometimes., looks like providing just the general contour in the motives in the patters (or even the rhythms with repeated notes) is enough, because the notes are rounded to the harmony proovided. I just wanted to know how the notes of the patterns are rounded to the harmonic-path in the counterpoint. It´s rounded around the closest path ? Best and thanks again ! PS Maybe this is the best way for composing stuff in Opusmodus (specially longer and structured music). Julio
16. ## Counterpoint Question - use of variable for harmony keyword

Thanks, Stephane !! That´s a hidden secret !! All the best !
17. ## Counterpoint Question - use of variable for harmony keyword

Hello, Friends I´m exploring this interesting counterpoint function. When I write the parameter for the keyword :harmony note for note everything works fine, but when I substitute the chords of the :harmony keyword with the content of the variable setf harmony 2 it won´t work, giving the following error: > Error: (harmony2) is not a tonality or a chord. > While executing: %make-tonality, in process Listener-1(7). > Type cmd-. to abort, cmd-\ for a list of available restarts. > Type :? for other options. I´d like to use the :harmony keyword in a way that I can process the chords in other place (by MIDI Entry or generating arrays or pitch-demixing a chorale, etc) and just changing the variable harmony2 to applying different harmonies to the same contrapuntal texture or different texture to the same harmony, etc. Best, Julio Here is the whole thing, for easy debugging (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) )
18. ## PS stave display and play

Good idea ! Thanks
19. ## PS stave display and play

Dear All, Is there some way to play a score in "preview score" (ps) function with all 4-instruments playing (sounding), but displaying in the score just one (or just a few) chosen instruments ? This can be good for pedagogic purpose or for "debugging" a composition. Best, Julio
20. ## How to Evaluate a separate file from inside an opmo document ?

Thanks a lot ! Best !
21. ## How to Evaluate a separate file from inside an opmo document ?

Dear All, Sometimes you are working on a very cluttered file with many setf variables that you need to evalate before starting. Is there a way to put a shortcut inside and .opmo score to evaluate a set of code in a different .opmo score, without having to move to the other document to evaluate it ? Best, Julio
22. ## Recursive Function for finding complementary set of notes in Chord/Scale relationship

Thanks, Janusz This could implemented as a native function, like FILTER-SET A general function to filter sets out of sets. Best, Julio
23. ## Recursive Function for finding complementary set of notes in Chord/Scale relationship

Hey, people ! I´m doing a function to extract the complementary set of notes. For example: 1) Specify a set of notes, like a chord, Dm7 (setf note-list '(d5 f5 a5 c6)) Specify a tonality, like Cmajor or D dorian (same notes) (expand-tonality '(c5 major)) Now, I want a function that gives me all the other available notes from the mode, except the chord tones (the first set of notes). So, this function gives me exactly what I need (for ONE tonality at a time and ONE chord at a time): (let ((rem (expand-tonality '(c5 major))) (super (ambitus '(c5 b5) note-list))) (loop for i in super do (setf rem (remove i rem)) finally (return rem))) Ok, this give me the right result, I.E., the complementary set of notes of C major in relation to Dm7 => (e5 g5 b5) The question is simple: How can I do it for a list with many tonalities and many chords. How to do this recursively in nested lists, like (setf note-list '((d5 f5 a5 c6)(eb4 gb4 bb4 db4)(fs4 as4 cs4))) to sucessive tonalities, like: (expand-tonality '((c5 major) (db4 major) (gb4 major))) Since this WON´T work (let ((rem (ambitus '(c5 b5) (expand-tonality '((c5 major) (db5 major) (gb5 major))))) (super (ambitus '(c5 b5) '((d5 f5 a5 c6)(eb4 gb4 bb4 db4)(fs4 as4 cs4))))) (loop for i in super do (setf rem (remove i rem)) finally (return rem))) The expected result, if the above worked would be: ((e5 g5 b5) (f5 ab5 c5) (gs4 cb5 ds5)) Thanks in advance !! Best ! Julio
24. ## Function to count positive rhythm values of an OMN list

Thanks a lot, Stephane ! This is interesting for getting lists ordered ! Best ! Julio
25. ## A.S. MAILBOX (three serial miniatures for string quartet) - Julio HERRLEIN

Thanks a lot, Stephane ! I just get vaccinated yesterday ! Very happy ! All the best ! Julio
×

• Lessons