JulioHerrlein Posted July 21, 2018 Share 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 Link to comment Share on other sites More sharing options...
AM Posted July 21, 2018 Share 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 Link to comment Share on other sites More sharing options...
JulioHerrlein Posted July 21, 2018 Author Share Posted July 21, 2018 Thanks a lot, André !!! Exactly. That's great ! Julio Quote Link to comment Share on other sites More sharing options...
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.