# How to replace length with rest?

## Recommended Posts

I have a OMN. I want to replace one of the lengths with rest, randomly. Is there a function to do this?

Suppose I have a list of lengths either in the form '(1/4 1/4 1/4 1/4) or '(q q q q), is it correct to replace one of the elements randomly with '- to mean rest?

Regards,

Rangarajan

##### Share on other sites

you could do it like this on "pure-LISP-level"

```(setf lengths '(1/4 2/8 3/8 4/4))

(loop for i in lengths
with repl = (random (length lengths))
for cnt = 0 then (incf cnt)
when (= cnt repl) collect (* i -1)  else collect i)```

best wishes

andré

##### Share on other sites

Andre,

Nice code, Thank you.

I am looking for a function that works on a OMN, not just a list of lengths.

Also, lengths can be represented in the format '(q q e e q s) instead of the corresponding numeric fractions. In such cases, the loop will not work (you can't multiply 'q by -1).

Regards,

Rangarajan

##### Share on other sites

okay, i understand... i'm "not working" with '(q e q...), i'm always working with NUMBERS (with pitches too). it's easier to write/handle the values, easier to do my own specific code (and multipy, add... whatever) - only on "def-score" i'm changing the representation by generating OMN...

regards,

andré

##### Share on other sites

hi,

have a look to the LENGTH-WEIGHT documentation.

SB.

##### Share on other sites

The LENGTH-WEIGHT functions is a good solution.

##### Share on other sites

Thanks, Will check this function.

-Rangarajan

##### Share on other sites

The OMN decode and encode functions (not documented):

```(omn-encode '(s q e = = - -))
=> (1/16 1/4 1/8 1/8 1/8 -1/8 -1/8)

(omn-encode '(c4 = = =))
=> (c4 c4 c4 c4)

(omn-decode '(1/16 1/4 1/8 1/8 1/8 -1/8 -1/8))
=> (s q e = = - -)```

What we need is a documentation of predicates etc... functions used in Opusmodus for developers and programmers.

I hope we can add this part to our system with version 2.0

##### Share on other sites

Thanks. Definitely useful.

-Rangarajan

## 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.

×
×

• Lessons