-
Posts
727 -
Joined
-
Last visited
Content Type
Forums
Events
Store
Tutorials
Videos
Everything posted by JulioHerrlein
-
Thanks, Janusz !
-
Possible workaround: (remove-duplicates (sort-asc (combination 3 (pcs '6-1))) :test #'equal)
-
I need a function to filter the Permutations. For example: (gen-divide 2 (flatten (permute (pcs '4-1)))) Will result in: ((0 1) (2 3) (0 1) (3 2) (0 2) (1 3) (0 2) (3 1) (0 3) (1 2) (0 3) (2 1) (1 0) (2 3) (1 0) (3 2) (1 2) (0 3) (1 2) (3 0) (1 3) (0 2) (1 3) (2 0) (2 0) (1 3) (2 0) (3 1) (2 1) (0 3) (2 1) (3 0) (2 3) (0 1) (2 3) (1 0) (3 0) (1 2) (3 0) (2 1) (3 1) (0 2) (3 1) (2 0) (3 2) (0 1) (3 2) (1 0)) But I don't mind with the order, since I'll make chords out of it, so ((0 1) (2 3) or (0 1) (3 2) or (1 0) (2 3) will result in the same chord. How to filter the list onto a list where the order does not matter ? Best, Julio
-
Janusz suggested a different way for the expression: (setf voices 3) (setf chordstovl2 '(b3eb5g3 cs6e7gs3 b4f5g6 f7e5c2 d4f7e4 gs7e2a8)) (setf chordmelo (pitch-melodize chordstovl2)) (setf intervals (integer-to-interval (modus (pitch-to-midi chordmelo)))) (setf map (replace-map '((-11 1) (-10 2) (-9 3) (-8 4) (-7 5) (7 -5) (8 -4) (9 -3) (10 -2) (11 -1)) intervals)) (setf vlfinal (integer-to-pitch (modus (interval-to-pitch map :start (car chordmelo))))) (setf chordized (mclist (chordize-list (gen-divide voices vlfinal)))) (chord-closest-path (car chordized) chordized)
- 23 replies
-
- voice-leading
- parsimonious voice leading
-
(and 1 more)
Tagged with:
-
Parsimonious Voice Leading (again): attempts to provide an algorithm In a previous post I deleted, I was trying to find a good way to ensure the minimal parsimonious Voice-Leading (VL) between a sequence of chords. In this post I will try to explain my second attempt. Let's take a look at a sequence of chords, spreaded out almost in a random way, with no VL (setf chordstovl2 '(b3eb5g3 cs6e7gs3 b4f5g6 f7e5c2 d4f7e4 gs7e2a8) Let's specify and evaluate a variable for the number of voices used: (setf voices 3) Let's try to think the best way to connect this pitches with minimal movement. I will apply the following expression to ensure a better and less ambiguous result when applying the CHORD-CLOSEST-PATH function. Evaluate voices before (setf voices 3) Then (setf chordized (mclist (chordize-list (gen-divide voices (setf vlfinal (integer-to-pitch (modus (interval-to-pitch (replace-map '((-11 1) (-10 2) (-9 3) (-8 4) (-7 5) (7 -5) (8 -4) (9 -3)(10 -2)(11 -1)) (integer-to-interval (modus (pitch-to-midi (setf chordmelo (pitch-melodize chordstovl2)))))) :start (car chordmelo))))))))) Please note the use of the replace-map function ensuring that no movement will be greater than a tritone away. This means that a movement like "C to G" (7 semitones) will be convertet in a G to C (5 semitones). This ensure a modulo 12 (octave constraint) reduction of all the material and also a constraint in terms of the size of the movements that will not exceed 6 semitones. Finally, I will apply the CHORD-CLOSEST-PATH function (chord-closest-path (car chordized) (chordize-list (gen-divide voices vlfinal))) Hope it help some VL efforts. Best, Julio Herrlein
- 23 replies
-
- voice-leading
- parsimonious voice leading
-
(and 1 more)
Tagged with:
-
Great !!! New Year Version!! BEst ! Julio
-
Thanks, Didier ! I'm looking forward for the new Opusmodus version. It willl be better for dealing with sets. Best ! Happy New Year ! Julio
-
modus OK !!!
-
Dear Friends, I'm struggling to find a modulo 12 function Something like this: (mod12 '(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 24 48)) returns >> (0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 0 0) Any Hint ? Best, Julio
-
implemented Quantisation?
JulioHerrlein replied to torstenanders's topic in Support & Troubleshooting
Congrats, Janusz! Looks Great! Merry Xmas!. Best Julio -
implemented Quantisation?
JulioHerrlein replied to torstenanders's topic in Support & Troubleshooting
Looks interesting ! Looking forward ! Best. Merry Xmas, Janusz ! -
Neo-Riemannian approach (Tonnetz, etc.)
JulioHerrlein replied to Wim Dijkgraaf's topic in Function Examples
Dear Wim I found your model very interesting and useful. It worked for me. Best ! Julio -
How to extend the system with your own functions
JulioHerrlein replied to opmo's topic in User Extensions Source Code
Here is the answer for my last question. Best Julio -
Dear Janusz, I presume that under each function there is a code that is hidden for the sake of elegance and for practical reasons. Actually, when using Opusmodus built-in functions we are working in a "pseudo-code". For example, last week André Meier wrote the code below, for tweaking lenghts. This could be transformed in a OM built-inl function, in a way that we could not see the entire code, only the call of the function. I'm asking where can I see the entire lisp code of the built in functions in order to learn to code my own functions, like André and Torsten. Best, Julio André Meier Function "lenght-staccato" (defun length-staccato (n alist) (let ((newlengths) (new-omn (omn-merge-ties (flatten alist))) (time-sign (get-time-signature alist))) (progn (setf newlengths (loop for i in (omn :length new-omn) when (> i 0) append (if (= n i) (list i) (list n (* -1 (abs (- i n))))) else collect i)) (if (omn-formp alist) (omn-to-time-signature (make-omn :length newlengths :pitch (omn :pitch new-omn) :velocity (omn :velocity new-omn) :articulation (omn :articulation new-omn)) time-sign) newlengths)))) (length-staccato 1/16 '(q -q q q)) (length-staccato 1/16 '(q e4 mp q tasto q -q q q)) (length-staccato 1/16 '((e. c4 eb4 fs4 a4 tie) (s a4 e. cs4 e4 g4 e bb4 tie) (e bb4 e. d4 f4 gs4 s b4)))
-
Dear Torsten/Janusz Is there a way to see the Lisp Code underneath the existing functions of Opusmodus in order to learn ? Best, Julio
-
Pcs: how to retrieve inverted forms from this function ?
JulioHerrlein replied to JulioHerrlein's topic in Function Examples
Thank you, Iviklund! Best Julio -
Pcs: how to retrieve inverted forms from this function ?
JulioHerrlein replied to JulioHerrlein's topic in Function Examples
Hey, Stephane! Thank you! Hope you like it. What a lovely combination! I feel very honored with this picture! Best! Julio added 2 minutes later Thank you, LOOPYC! It's really cool to have a physical book. Best regards and happy xmas to you! Best Julio -
Pcs: how to retrieve inverted forms from this function ?
JulioHerrlein replied to JulioHerrlein's topic in Function Examples
Thanks a lot LOOPYC! Hope you like it! Best Julio -
Tested !!! It works !! No XML bug and works w/ sublists. Thanks André !! You rock ! Best, Julio
-
Yes, Hope he read throught this. Always amazing ideas coming. Best Julio
-
Thanks a lot, Ole! Best, Julio
-
Thanks a lot, Ole ! I noticed that problem. I got a strange musicXML result when evaluating this: (length-staccato-lists 1/16 '((e. c4 eb4 fs4 a4 tie) (s a4 e. cs4 e4 g4 e bb4 tie) (e bb4 e. d4 f4 gs4 s b4))) In the screen it appears somewhat buggy and in the XML, the result is unaltered (no staccato at all) Best ! Julio bugxml_lengthfunction2.xml
-
Dear Andre, Thank you! Very nice example. I will study this. Best Julio
-
Dear Friends, What is the exact opposite function of length-legato ? Lenght-legato turns this: onto this: I want exactly the reverse: Changing this: to this: Thanks for help ! Best ! Julio