Jump to content
Sign in to follow this  
JulioHerrlein

Help needed Binary Length values

Recommended Posts

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))))

 

 

Share this post


Link to post
Share on other sites

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)

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×