Rangarajan Posted April 18, 2016 Share Posted April 18, 2016 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 Quote Link to comment Share on other sites More sharing options...
AM Posted April 18, 2016 Share Posted April 18, 2016 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é Quote Link to comment Share on other sites More sharing options...
Rangarajan Posted April 18, 2016 Author Share Posted April 18, 2016 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 Quote Link to comment Share on other sites More sharing options...
AM Posted April 18, 2016 Share Posted April 18, 2016 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é Quote Link to comment Share on other sites More sharing options...
Stephane Boussuge Posted April 18, 2016 Share Posted April 18, 2016 hi, have a look to the LENGTH-WEIGHT documentation. SB. Quote Link to comment Share on other sites More sharing options...
opmo Posted April 18, 2016 Share Posted April 18, 2016 The LENGTH-WEIGHT functions is a good solution. Quote Link to comment Share on other sites More sharing options...
Rangarajan Posted April 18, 2016 Author Share Posted April 18, 2016 Thanks, Will check this function. -Rangarajan Quote Link to comment Share on other sites More sharing options...
opmo Posted April 18, 2016 Share Posted April 18, 2016 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 Quote Link to comment Share on other sites More sharing options...
Rangarajan Posted April 19, 2016 Author Share Posted April 19, 2016 Thanks. Definitely useful. -Rangarajan 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.