# Get-Time-Signature to Length-Span

## Recommended Posts

Dear All,

One interesting conversion would be the one for transforming the get-time-signature result to

length-span time signature format. This would be useful to rephrase rhythmically one rhythm with another´s rhythm time-signature structure.

For example:

; Take this rhythm

(setf ritmos (gen-repeat 4 (gen-length '((1 2 1 2 1 1) (1 1 1 1 1 2 1) (1 -3 1 -3 2 -2 4) (-3 1 -1 1 1 1)) '(16))))

Here is the bar structure for this

(get-time-signature ritmos)

This is the output

((2 4 2) (4 4 1) (2 4 3) (4 4 1) (2 4 3) (4 4 1) (2 4 3) (4 4 1) (2 4 1))

If I want to use this result as a time signature template in the length-span I have to convert it to

(2/4 2/4 1 2/4 2/4 2/4 1 2/4 2/4 2/4 1 2/4 2/4 2/4 1 2/4)

in order to use the time-signature order it in the length-span function

Is there some function that performs this ?

Best !

Julio

I did this extravagant coding , but I need it with the slashes ( " / " ) and the repetitions, like converting (2 4 3) into (2/4 2/4 2/4)...

(setf timesig-to-length-span
(flatten
(matrix-transpose
(list
(lake-everyother
(get-count (get-count (get-time-signature ritmos))) ; how many
0 3  (flatten (get-time-signature ritmos)))
(lake-everyother
(get-count (get-count (get-time-signature ritmos))) ; how many
1 3  (flatten (get-time-signature ritmos)))
)
))
)

;;(2 4 4 4 2 4)

I love lake-everyother

##### Share on other sites

Hi Julio.

Maybe something like this will work.

Jesper

(setf tst '((2 4 2) (4 4 1) (2 4 3) (4 4 1) (2 4 3) (4 4 1) (2 4 3) (4 4 1) (2 4 1)))

(defun foo (lst)
(flatten (loop for x in lst collect (make-list (caddr x) :initial-element (/ (car x) (cadr x)))))
)

(foo tst)

->(1/2 1/2 1 1/2 1/2 1/2 1 1/2 1/2 1/2 1 1/2 1/2 1/2 1 1/2)

##### Share on other sites

Hi Julio,

you can use get-span function:

(setf ritmos (gen-repeat 4 (gen-length '((1 2 1 2 1 1) (1 1 1 1 1 2 1) (1 -3 1 -3 2 -2 4) (-3 1 -1 1 1 1)) '(16))))

(get-span ritmos)

=> (1/2 1/2 1 1/2 1/2 1/2 1 1/2 1/2 1/2 1 1/2 1/2 1/2 1 1/2)

S.

##### Share on other sites

Yup, that avoids one step, Stephane.

I have to study the built-in functions some more.

Jesper

##### Share on other sites

Or

(mapcar (lambda (x) (sum (mapcar 'abs x))) ritmos)

Jesper

##### Share on other sites

Thanks a lot Stephane and Jesper !

Best !

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
• #### Browser

• Video Gallery

• Lessons