JulioHerrlein Posted July 21, 2018 Posted July 21, 2018 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)))) Quote
AM Posted July 21, 2018 Posted July 21, 2018 something like that? (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 '(-q q e) 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) JulioHerrlein 1 Quote
JulioHerrlein Posted July 21, 2018 Author Posted July 21, 2018 Thanks a lot, André !!! Exactly. That's great ! Julio 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.