Jump to content

JulioHerrlein

Members
  • Posts

    806
  • Joined

  • Last visited

Everything posted by JulioHerrlein

  1. Thank you, Torsten. I have a physical copy of Reina's book. Best, Julio
  2. Thank you, Torsten ! It worked ! I like the Carnatic Stuff. Best, Julio
  3. Dear Torsten, Thank you. Now I understand that this command is done inside Opusmodus. Unfortunately, I got some errors... ;Compiling "/Users/acme/common-lisp/string-tools/make-package.lisp"... ;Compiling "/Users/acme/common-lisp/string-tools/string-tools.lisp"... ;Compiling "/Users/acme/common-lisp/string-tools/export.lisp"... ;Compiling "/Users/acme/common-lisp/ta-utilities/make-package.lisp"... ;Compiling "/Users/acme/common-lisp/ta-utilities/my-utilities.lisp"... ;Compiling "/Users/acme/common-lisp/ta-utilities/export.lisp"... ;Compiling "/Users/acme/common-lisp/fenv/sources/make-package.lisp"... ;Compiling "/Users/acme/common-lisp/fenv/sources/macros.lisp"... ;Compiling "/Users/acme/common-lisp/fenv/sources/fenv.lisp"... ;Compiling "/Users/acme/common-lisp/fenv/sources/export.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/package.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/from-studio-flat.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/01.domain.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/02.engine.lisp"... ;Compiler warnings for "home:common-lisp;cluster-engine;sources;02.engine.lisp.newest" : ; In poly-engine: type declaration for unknown variable master-index ; In poly-engine: Undeclared free variable *debug-count-backtrack* ; In an anonymous lambda form at position 22432: Duplicate definitions of assign-pitches-for-motif, in this file ; In an anonymous lambda form at position 23073: Duplicate definitions of assign-pitches-for-nth-motif, in this file ; In fail: Undeclared free variable *debug-count-backtrack* (2 references) ; In an anonymous lambda form at position 36784: Duplicate definitions of backjump-engine, in this file ; Warning: Lisp compilation failed while compiling #<cl-source-file "cluster-engine" "sources/02.engine"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ; Warning: Lisp compilation had style-warnings while compiling #<cl-source-file "cluster-engine" "sources/02.engine"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/03.Fwd-rules.lisp"... ; In fwd-rule-indep: type declaration for unknown variable length-metric-engin ; In fwd-rule2: type declaration for unknown variable length-metric-engin ; In fwd-rule3: type declaration for unknown variable length-metric-engin ; In fwd-rule4: type declaration for unknown variable length-metric-engin ; In fwd-rule5: type declaration for unknown variable length-metric-engin ; In fwd-rule6: type declaration for unknown variable length-metric-engin ; In fwd-rule6b: type declaration for unknown variable length-metric-engin ; Warning: Lisp compilation failed while compiling #<cl-source-file "cluster-engine" "sources/03.Fwd-rules"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ; Warning: Lisp compilation had style-warnings while compiling #<cl-source-file "cluster-engine" "sources/03.Fwd-rules"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/04.Backtrack-rules.lisp"... ; In backtrack-rule2: type declaration for unknown variable highest-index ; Warning: Lisp compilation failed while compiling #<cl-source-file "cluster-engine" "sources/04.Backtrack-rules"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ; Warning: Lisp compilation had style-warnings while compiling #<cl-source-file "cluster-engine" "sources/04.Backtrack-rules"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/05.rules-interface.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/05a.rules-interface-1engine.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/05b.rules-interface-2engines.lisp"... ;Compiler warnings for "home:common-lisp;cluster-engine;sources;05b.rules-interface-2engines.lisp.newest" : ; In get-start-nth-pointer-durations: type declaration for unknown variable rhythmseq ; In get-end-nth-pointer-durations: type declaration for unknown variable rhythmseq ; Warning: Lisp compilation failed while compiling #<cl-source-file "cluster-engine" "sources/05b.rules-interface-2engines"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ; Warning: Lisp compilation had style-warnings while compiling #<cl-source-file "cluster-engine" "sources/05b.rules-interface-2engines"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/05c.rules-interface-2engines.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/05d.rules-interface-2engines.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/05e.rules-interface-2engines.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/05f.rules-interface-3engines.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/05g.rules-interface-any-n-engines.lisp"... ;Compiler warnings for "home:common-lisp;cluster-engine;sources;05g.rules-interface-any-n-engines.lisp.newest" : ; In get-pitches-for-slices-of-notecounts: type declaration for unknown variable notecount ; In get-pitches-for-slices-of-notecounts: type declaration for unknown variable voicenr ; In get-pitches-for-slices-of-notecounts: type declaration for unknown variable notecount-slice ; In replace-notecount-by-timepoint: type declaration for unknown variable timepoint ; In replace-notecount-by-timepoint: type declaration for unknown variable notecountgroups ; In get-durations-for-slices-of-notecounts: type declaration for unknown variable notecount ; In get-durations-for-slices-of-notecounts: type declaration for unknown variable voicenr ; In get-durations-for-slices-of-notecounts: type declaration for unknown variable notecount-slice ; In get-timepoints-for-slices-of-notecounts: type declaration for unknown variable notecount ; In get-timepoints-for-slices-of-notecounts: type declaration for unknown variable voicenr ; In get-timepoints-for-slices-of-notecounts: type declaration for unknown variable notecount-slice ; Warning: Lisp compilation failed while compiling #<cl-source-file "cluster-engine" "sources/05g.rules-interface-any-n-engines"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ; Warning: Lisp compilation had style-warnings while compiling #<cl-source-file "cluster-engine" "sources/05g.rules-interface-any-n-engines"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/05h.rules-higher-level.lisp"... ;Compiler warnings for "home:common-lisp;cluster-engine;sources;05h.rules-higher-level.lisp.newest" : ; In an anonymous lambda form at position 453: Duplicate definitions of melodic-statement-for-dur, in this file ; Warning: Lisp compilation failed while compiling #<cl-source-file "cluster-engine" "sources/05h.rules-higher-level"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ; Warning: Lisp compilation had style-warnings while compiling #<cl-source-file "cluster-engine" "sources/05h.rules-higher-level"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/05i.rules-stop-search.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/05n.rules-interface-nn-engines.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/06.heuristic-rules-interface.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/06a.heuristic-rules-interface-1engine.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/06b.heuristic-rules-interface-2engines.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/06c.heuristic-rules-interface-2engines.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/06d.heuristic-rules-interface-2engines.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/06e.heuristic-rules-interface-2engines.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/06f.heuristic-rules-interface-3engines.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/06g.heuristic-rules-interface-any-n-engines.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/07.backjumping.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/08.decode.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/09.utilities.lisp"... ;Compiler warnings for "home:common-lisp;cluster-engine;sources;09.utilities.lisp.newest" : ; In get-nr-for-engine-with-highest-index: type declaration for unknown variable engine ; In remove-list-before-startpoint: type declaration for unknown variable endpoint ; In get-durations-at-notecounts: type declaration for unknown variable notecount ; In get-durations-at-notecounts: type declaration for unknown variable voicenr ; In get-durations-at-notecounts: type declaration for unknown variable notecounts ; In get-timepoints-at-notecounts: type declaration for unknown variable notecount ; In get-timepoints-at-notecounts: type declaration for unknown variable voicenr ; In get-timepoints-at-notecounts: type declaration for unknown variable notecounts ; In get-timepoints-at-notecounts-one-voice: type declaration for unknown variable notecount ; In get-timepoints-at-notecounts-one-voice: type declaration for unknown variable notecounts-all-voice ; In get-timepoints-at-notecounts-one-voice: type declaration for unknown variable list-voicenrs ; In remove-rests-and-gracenotes-from-durationlist: type declaration for unknown variable timepoints ; In get-timepoints-from-any-timepoint-minus-nsteps-ignor-rests-and-gracenotes: type declaration for unknown variable vsolution ; In get-events-from-any-timepoint-minus-nsteps-ignor-rests-and-gracenotes: type declaration for unknown variable vsolution ; In get-notecounts-from-any-timepoint-minus-nsteps-ignor-rests-and-gracenotes: type declaration for unknown variable vsolution ; In get-timepoints-from-any-timepoint-minus-nsteps-ignor-rests: type declaration for unknown variable vsolution ; In get-events-from-any-timepoint-minus-nsteps-ignor-rests: type declaration for unknown variable vsolution ; In get-notecounts-from-any-timepoint-minus-nsteps-ignor-rests: type declaration for unknown variable vsolution ; In get-timepoints-from-any-timepoint-minus-nsteps-ignor-rests-simplify-gracenotes: type declaration for unknown variable vsolution ; In get-timepoints-from-any-timepoint-minus-nsteps: type declaration for unknown variable vsolution ; In get-notecounts-from-any-timepoint-minus-nsteps: type declaration for unknown variable all-events ; In get-timepoints-from-any-timepoint-minus-nsteps-ignor-gracenotes: type declaration for unknown variable vsolution ; In get-events-from-any-timepoint-minus-nsteps-ignor-gracenotes: type declaration for unknown variable vsolution ; In get-timepoints-from-before-any-timepoint-minus-nsteps-ignor-gracenotes: type declaration for unknown variable all-onsets-no-gracenote-no-rest ; In an anonymous lambda form at position 106661: Duplicate definitions of remove-rests-and-return-notecountlist, in this file ; In matrix-trans: type declaration for unknown variable row ; Warning: Lisp compilation failed while compiling #<cl-source-file "cluster-engine" "sources/09.utilities"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ; Warning: Lisp compilation had style-warnings while compiling #<cl-source-file "cluster-engine" "sources/09.utilities"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/09b.markov-tools.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/09c.cluster-energy-profile.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/12.debug-tools.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/13.convert-pmc-rules.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/_000.main-interface.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-engine/sources/export.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-rules/sources/package.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-rules/sources/utils.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-rules/sources/rhythm-rules.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-rules/sources/melody-rules.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-rules/sources/harmony-rules.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-rules/sources/counterpoint-rules.lisp"... ;Compiling "/Users/acme/common-lisp/cluster-rules/sources/export.lisp"... ;Compiling "/Users/acme/common-lisp/tot/sources/slippery-chicken.lisp"... ;Compiling "/Users/acme/common-lisp/tot/sources/utils.lisp"... ;Compiling "/Users/acme/common-lisp/tot/sources/OMN-utils.lisp"... ;Compiling "/Users/acme/common-lisp/tot/sources/score.lisp"... ;Compiling "/Users/acme/common-lisp/tot/sources/rhythm.lisp"... ;Compiler warnings for "home:common-lisp;tot;sources;rhythm.lisp.newest" : ; In an anonymous lambda form at position 65555: Duplicate definitions of total-duration, in this file and in "home:common-lisp;tot;sources;OMN-utils.lisp.newest" ; Warning: Lisp compilation failed while compiling #<cl-source-file "tot" "sources/rhythm"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ; Warning: Lisp compilation had style-warnings while compiling #<cl-source-file "tot" "sources/rhythm"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ;Compiling "/Users/acme/common-lisp/tot/sources/pitch.lisp"... ;Compiler warnings for "home:common-lisp;tot;sources;pitch.lisp.newest" : ; In stretch-pitches: Undeclared free variable chord ; Warning: Lisp compilation failed while compiling #<cl-source-file "tot" "sources/pitch"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ; Warning: Lisp compilation had style-warnings while compiling #<cl-source-file "tot" "sources/pitch"> ; While executing: uiop/lisp-build:check-lisp-compile-warnings, in process Listener-1(7). ;Compiling "/Users/acme/common-lisp/tot/sources/velocity.lisp"... ;Compiling "/Users/acme/common-lisp/tot/sources/articulations.lisp"... ;Compiling "/Users/acme/common-lisp/tot/sources/PWGL.lisp"... ;Compiling "/Users/acme/common-lisp/tot/sources/constraints.lisp"... ;Compiling "/Users/acme/common-lisp/tot/sources/form.lisp"... ;Compiling "/Users/acme/common-lisp/tot/sources/orchestration.lisp"... :tot nil 89 > :tot nil 89 >
  4. Thanks, Torsten ! Very nice. I want to try it. I did the Git terminal stuff I don't know how to to this part... ASFD is something I have to install ? ??? Best, Julio USAGE part (???) This library is an ASDF system (ASDF is the de facto standard for building Common Lisp software), and you can load it into your Lisp compiler as follows. All dependency libraries are loaded automatically as well. (require :tot) For most convenient use within Opusmodus, you can drag and drop the whole folder of this library in the browser of an Opusmodus project. Then, visit the HTML documentation of this library from within Opusmodus: open the tot, and then its doc folder and click on an HTML file, say index.html. You can now browse the reference documentation of the library, which explains its individual definitions. Most importantly, you can directly run all example code in the documentation from within Opusmodus (thanks, Janusz Podrazik). added 1 minute later Second question : When I update to next Opusmodus release, do I have to reinstall it ? Best, Julio
  5. Dear Stephane, Thanks a lot for this insigthful answer ! There are so many beautiful hidden secrets in Opusmodus. I was searching for row, 12-tone, series, but never ocurred to me searching "air". There's a need for some historical music-oriented tutorials. All the best ! Julio
  6. Dear Friends, I need some help on functions related to more control over 12-tone rows, specially the interval content. For example, below there are Berg's Lyric Suite 12-tone Row. This is an example of all interval series, a combination of every interval. Please, check this: https://en.wikipedia.org/wiki/All-interval_twelve-tone_row This All interval series are very interesting harmonically, since it produces very consonant trichords. 1) I'd like to control the building of the 12-tone rows, in relation to it's properties to get more control over the harmonic output. What are the methods and fuctions related to it ? (setf berglyric '(f4 e4 c4 a4 g4 d4 ab4 db4 eb4 gb4 bb4 b4)) (pitch-to-interval berglyric) (respell (gen-chord2 20 '(3 3 3) no012row)) (respell (gen-chord2 40 '(3 3 3 1) berglyric)) 2) How to retrieve the notes of the series for genarating chords in different ways and matrices, like in sequence or every other note. For example Hypothetical ROW (0 1 2 3 4 5 6 7 8 9 10 11) How to retrieve: 0 2 4 6 8 10 (skipping every one note) or 0 3 6 9 OR HARMONIC MATRICES, Like Trichords (0 1 2) (3 4 5) (6 7 eight) (9 10 11) OR (0 4 (1 5 9) (2 6 10) (3 7 11) Any help is welcome ! Best, Julio
  7. Dear Friends, I'm setting some 12-tone examples for classroom. I just want to show some rows with motives, in the example below. I'd like to force this omn expression to make a snippet in 4/4 only or 2/4, without having to use def score. Is it possible ? It's easier for faster classroom purposes. Best, Julio (setf clodorow '(a4 gs5 c5 d5 bb4 b4 fs5 f5 cs5 g5 ds5 e5)) (setf serierit '(q.. s -s s s s -s e._q -s s -s s_q)) (make-omn :length serierit :pitch clodorow :velocity '(pp sfz p < f pp mf mf mp mp) :length-symbols t) It's genarating a 7/4 snippet. I would prefer it in 2/4 or 4/4... Any help ? Best, Julio
  8. The crop function is SOLVED (binary-map (butlast (row-rotation 1 (gen-binary-row 12 (pcs '3-11b)))7)1/16) It's the number 7 as a parameter for the butlast lisp function, after the three parentheses. HERE for the complementary set of the Rhythm (binary-invert) (binary-map (butlast (binary-invert (row-rotation 1 (gen-binary-row 12 (pcs '3-11b))))4) 1/16) Best, Julio
  9. Dear Janusz, Hope it can be useful. It will be great to have this new function ! Thank you ! With a dedicated function, all this can be more elegant, for sure ! An easier workflow. All the code below can be embbeded in only one code: (binary-map (row-rotation -7 (gen-binary-row 12 (pcs '3-11)))1/16) all this can be something like (pcs-to-rhythm (pcs '3-11) 1/16) with optional arguments, like :rotation - rotation of the series wrapping around itself. :displace - put a rest of, for ex, 1/16 before the set ;legato - t, for full value or nil (default) for normal operation (each value equals the quantization (pcs-to-rhythm (pcs '3-11) 1/16) (pcs-to-rhythm (pcs '3-11) 1/16 :legato t) only the rhtyhm (without the notes) :mod - defalt is the 12 time point cycle, but optionally, any cycle rotation, like 16, for example. :crop - assuming 12 time points as the default cycle, the crop option let you take portions of the sets to use. It's easy, just make something to cut the last parts of the binary result. (pcs-to-rhythm (pcs '3-11) 1/16 :crop 8 ) will result in: (pcs-to-rhythm (pcs '3-11) 1/16 :crop 8 :displace 1) (pcs-to-rhythm (pcs '3-11) 1/16 :crop 8 :rotate 1) The crop option helps using portions of the Rhythmic Sets, by truncating some of them, like this: In the preceeding example, only parts of the 2 sets are used (9 time points out of 12 in the first and 8 time points out of 12 in the second). Best ! Julio
  10. This is the EASIEST Method to achieve the result !!! FINALLY !! Without the need of Meier's Functions !! (binary-map (row-rotation 0 (gen-binary-row 12 (pcs '3-11)))1/16) YEEEEESSSSS !!! added 10 minutes later (binary-map (row-rotation 1 (gen-binary-row 12 (pcs '3-11)))1/16) (binary-map (row-rotation 0 (gen-binary-row 12 (pcs '3-11)))1/16) (binary-map (row-rotation -1 (gen-binary-row 12 (pcs '3-11)))1/16) (binary-map (row-rotation -2 (gen-binary-row 12 (pcs '3-11)))1/16) (binary-map (row-rotation -3 (gen-binary-row 12 (pcs '3-11)))1/16) (binary-map (row-rotation -4 (gen-binary-row 12 (pcs '3-11)))1/16) (binary-map (row-rotation -5 (gen-binary-row 12 (pcs '3-11)))1/16) (binary-map (row-rotation -6 (gen-binary-row 12 (pcs '3-11)))1/16) (binary-map (row-rotation -7 (gen-binary-row 12 (pcs '3-11)))1/16) (binary-map (row-rotation -8 (gen-binary-row 12 (pcs '3-11)))1/16) (binary-map (row-rotation -9 (gen-binary-row 12 (pcs '3-11)))1/16) (binary-map (row-rotation -10 (gen-binary-row 12 (pcs '3-11)))1/16) AND FINALLY, back to que original (binary-map (row-rotation -11 (gen-binary-row 12 (pcs '3-11)))1/16) It works !
  11. MY effort, version 2 (setf pcsrhy1 (flatten (omn :length (length-staccato 1/16 (time-point-system (pcs '3-11b :pitch)'s))))) ;; here you adjust the rotation of the rhythm: (1) is the original, 0 is one 16th note ahead (-1) is 2 16th notes ahead and so on (setf pcsrot1 (row-rotation 1 (length-to-binary pcsrhy1 1/16))) (binary-map pcsrot1 1/16) The aforementioned Meier's functions are necessary... Best, Julio
  12. This is my best effort, using two André Maier functions (THANKS ANDRÉ !!!) (binary-map (row-rotation 7 (length-to-binary (flatten (omn :length (length-staccato 1/16 (time-point-system (pitch-rotate 0 (pcs '3-11b :pitch))'s :start 0) )))1/16))1/16) Here are the Andre Meier Functions invoked in the code above: ;EXTRA FUNCTIONS ;;;LENGTH-LEGATO (ANDRE MEIER) (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)))) ;;LENGHT TO BINARY ANDRE MEIER (defun length-to-binary (lengthlist n) (let ((newlist (loop for i in (omn :length lengthlist) collect (/ i n)))) (loop for x in newlist when (> x 0) append (append (list 1) (gen-repeat (1- x) '0)) else append (gen-repeat (abs x) '0)))) (length-to-binary '(-e -s s q e) 1/16) (length-to-binary '(-1/16 1/16 -1/8) 1/16) => (0 0 0 0 1 0 0 0 1 0) (length-to-binary '(-q s s q e) 1/16) => (0 0 0 0 1 1 1 0 0 0 1 0)
  13. Dear Janusz, This function will deal with the cyclic and rotational aspect of the rhythm, conceived as a necklace: The pitch class set is conceived as a modular space and converted to rhythms with rotation inside the modulo. The figure above shows a module 8 rhythm. In my catalog, every rhythm is module 12, but you can :CROP (possible parameter of the function) the rhythm in a shorter module or cycle, or you can concatenate many sets to form a longer rhythm. HERE IS THE POINT (what time-point-system don't do) There's a difference between que time-point-system function and the idea I'm talking about. I'll try to explain: THIS CODE: (time-point-system (pcs '3-11b :pitch)'s :start 0) Results in And This (time-point-system (pcs '3-11b :pitch)'s :start 4) Results in But, in this case, when the start parameter exceeds 4, like with this code: (time-point-system (pcs '3-11b :pitch)'s :start 5) The rhythm cross to the next bar. So, the rhythm is NOT working like a necklace, it's exceeding the 12 time-points... In my hypothetical Function, let's say the "pcs-to-rhythm" function the result would be like the upper staff below, Pseudo-code (pcs-to-rhythm (pcs '3-11b :pitch)'s :rotation 5 :mod 12) i.e, the note that is going to next bar is actually rotated back to the begining of the same bar, like rotation, wrapping around the modulo 12. Possible parameters would be: :mod - The modulo of the rhythm (explained below) :rotation - the range would be 1 > (mod - 1) :crop the range would be x < mod Let me know if I made the point clear. Best, Julio
  14. Thanks a lot, André !!! Exactly. That's great ! Julio
  15. In my Dissertation, I worked a way to convert every chord and set in a modulo 12 rhythm, so the entire catalog of FORTE are converted to rhythms, following the steps of Babitt: As a hardcore serialist, Babbitt was interested in converting 12-tone rows to rhythms, in a kind of 12-tone rhythm theory. Below, Wuorinen show one example of a typical Babbitt idea: For the sake of explaining my idea of function, it's important to have in mind that for Babbitt, the order of the row is very important and lead to different results in the pitch to rhythm conversion. Take a look in the example below: In the preceeding figure, the order of the C major triad generate different rhythms. In the example (0 4 7) have a different result from (4 0 7) or (7 0 4). In the system I developed in my Dissertation, the order does NOT matter, since (0 4 7), (7 0 4) or (4 0 7) will result in exactly the same rhythm, as you can see below: In my system, the transposition equals rotation (as well as in Babbitt) And every chord symbol can be transformed in a rhythm: Even voicings can be converted in longer Rhythms (the more spread the voicing, the longer the rhythm): So I did every FORTE SET in the catalog, in this way: Below, you can see the example of the rhythm of the major triad (Forte number 3-11b). In the 1st bar there is the prime form (0 4 7). In each subsequent bar there is a rotation of the first set by 16th note increments. HERE IS THE POINT, for the sake of the new function ! The note C (that I call Rhythmic Fundamental, the "root" of the rhythm) is being displaced, as you can see in the circled notes. THE SET WRAP AROUND ITSELF, always forming 12 time-points (always twelve 16th notes), in a different way from Babbit, where the order of the sets generates longer rhythms. THIS WAY IS MORE INTERESTING For Popular and Minimalist Repetition Music, as well as 12 tone music. In the bottom staff, there are the complementary rhythm of the 3-11b set, i.e., the 9-11a set. In the catalog, every set is presented alongside its complementary set and every set is presented in 3/4 (16th notes) and in 12-8 (with the 8th note as the base value for the increments and rotations). So the function needed would be the one that mirror exacty this kind of conversion, not the tradicional time-point-system conversion, so I could use my catolog inside Opusmodus, connecting the diferent sets, like this: Or even using portions of the Rhythmic Sets, by truncating some of them, like this: In the preceeding example, only parts of the 2 sets are used (9 time points out of 12 in the first and 8 time points out of 12 in the second). So, I hope someone could help me to find a way of implementing this. Maybe Janusz or Stephane could find interesting to develop this kind of idea inside the software. All the best ! Julio Herrlein
  16. Dear Friends, 1) How to convert a given length series in a binary series ? For example: ((1/16 -3/16 1/16 -1/8 1/16 -1/4)) with 1/16 as a base could be transformed in binary like: (1 0 0 0 1 0 0 1 0 0 0 0) and/or 2) How to convert a length 3/16 in 1/16 -1/16 -1/16, i.e. a kind of length conversion based on quantize. 3/16 could be converted in 1/16 -1/16 -1/16 or 1/32 -1/32 -1/32 -1/32 -1/32 -1/32 depending on the value regarded as the reference (1/16 in the first case or 1/32 in the second) Thanks ! Julio Code example (setf ccpa1 (omn :length (length-staccato 1/16 (time-point-system (pitch-rotate 0 (pcs '3-11b :pitch))'s :start 0)))) ;EXTRA FUNCTION NEEDED ;;;LENGTH-LEGATO (by ANDRE MEIER) (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))))
  17. Sometime ago, I was searching for a function that would be the exact opposite function of length-legato. Lenght-legato turns this: onto this: I wanted exactly the reverse: Changing this: to this: In the ocasion, Andre Meier came with this code below: Janusz, do you think a good idea to include a function like this in the library ? Or there is also something similar that I dont know ? I still need it in a easy way... Best, Julio (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)))
  18. Nice to hear It from You, Loopyc ! Hope it can be inspiring ! Best, Julio added 0 minutes later Thank You, Janusz !
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy