born Posted May 16, 2023 Posted May 16, 2023 Hi all, is there a function/ method to merge several rhythms into one which is displaying all the onsets of these rhythms. Here the first two systems are merged into the third. Thanks for help. Achim Quote
erka Posted May 17, 2023 Posted May 17, 2023 There is a merge-voices function. (setf r1 '(q e e 3q 3q 3q -e. s)) (setf r2 '(e e e. s -e e s -s s -s)) (setf r3 (merge-voices r1 r2)) => '(z^q c4 e e z^e e^e. s^e s 3q 3e^3q 3e^e 3q s - c4 c4) (omn :length r3) The output looks different from what you expect. The z^ is not really documented in the omn-language-description but has to do with the :duration in make-omn. You see it in the merge-voices doc. Merge-voices is for omn-lists. It will add a c4 as default if only length are in the list. With: (omn :length r3) you get this: (0 1/8 1/8 0 1/8 1/16 1/16 1/12 1/24 1/24 1/12 1/16 -1/16 1/16 1/16) What the 0 means I don't know. AM 1 Quote
AndreOktave Posted May 18, 2023 Posted May 18, 2023 Hi born, AM from this Forum wrote the following function: (under the topic Rhythmic Resultants) (progn (defun gen-resultant** (r) (difference (remove-duplicates (sort-asc (flatten (loop for i in r append (cons 0 (gen-accumulate i)))))))) (setf rha '(1/4 1/8 1/8 1/12 1/12 1/12 -3/16 1/16)) (setf rhb '(1/8 1/8 3/16 1/16 -1/8 1/8 1/16 -1/16 1/16 -1/16)) (setf rr2 (gen-resultant** (list rha rhb))) (ps 'gm :rhy (list rha) :rhy (list rhb) :rhy (list rr2) :time-signature '(4 4 1) ) ) When putting your 2 rhythms into the function, the last beat is not correct, I don´t know why, perhaps this helps to find a solution for rhythmic resultants (Schillinger u.a.) in OM, what would be very to have I think. best wishes AO Quote
opmo Posted May 29, 2023 Posted May 29, 2023 The new function UNIFY-RHYTHMS will solve your problem - 3.0.28916 Examples: (setf l1 '(q e e 3q 3q 3q -e. s)) (setf l2 '(e e e. s -e e s -s s -s)) (list l1 l2) ; select and press cmd-2 (unify-rhythms l1 l2) (setf r1 (rhythm-series 6 5 3/8 :length '(q. e. e s 3q))) (setf r2 (rhythm-series 6 4 1/2 :length '(q. e. e s 3q))) (setf r3 (rhythm-series 6 3 1/2 :length '(q. e. e s 3q))) (list r1 r2 r3) ; select and press cmd-2 Now we merge all three voices to form a single entity: (unify-rhythms r1 r2 r3) AM, Stephane Boussuge and JulioHerrlein 3 Quote
AM Posted May 29, 2023 Posted May 29, 2023 great! (progn (setf r1 (gen-length '(11 13 7 17 13 11 17 23 19 2 17 5) 1/20)) (setf r2 (gen-length '(11 13 7 17 13 11) 1/8)) (unify-rhythms r1 r2)) Stephane Boussuge and opmo 2 Quote
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.