Posted April 18, 20169 yr 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
April 18, 20169 yr 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é
April 18, 20169 yr Author 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
April 18, 20169 yr 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é
April 18, 20169 yr 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
Create an account or sign in to comment