hi,<br>ever since i learned that multiple processes can be run in parallel within a defined cm function, i.e.<br>(define bla...<br> (list<br> (process bla ..<br> (process bla ..<br> )<br>i've been using such definitions happily and frequently.
<br><br>i just discovered something, however, which may be a downside to doing things this way (or maybe just a misunderstanding on my part): when i try to schedule such a defined list of processes within a list i.e.:(events (list (etc... , lisp throws an error (or at least sbcl does).
<br><br>;;examples (freely adapted from cm docs):<br>(defun test (len knum rhy)<br> (list<br> (process repeat len<br> output (new midi :time (now) :channel 0 <br> :keynum (between knum (+ knum 12))<br>
:duration dur)<br> wait rhy)<br> (process repeat len<br> output (new midi :time (now) :channel 1<br> :keynum (between (- knum 12) knum)<br> :duration dur)<br> wait rhy)))
<br><br>(events (list (test 30 80 .1)<br> (test 20 60 .1)<br> (test 10 40 .1))<br> "/tmp/test.mid"<br> '(0 1 2))<br>;;error:<br>invalid number of arguments: 4<br> [Condition of type SB-INT:SIMPLE-PROGRAM-ERROR]
<br><br>Restarts:<br> 0: [ABORT] Return to SLIME's top level.<br> 1: [ABORT] Exit debugger, returning to top level.<br><br>Backtrace:<br> 0: ((LAMBDA (SB-PCL::.ARG0. SB-PCL::.ARG1. #1="#<...>" . #1#))
<br> #<CLOSURE (LAMBDA #) {CF22CFD}><br> 0<br> 0)<br> 1: ((SB-PCL::FAST-METHOD SCHEDULE-OBJECT (CONS T T))<br> #<unavailable argument><br> #<unavailable argument><br> (#<CLOSURE # {CF22CFD}> #<CLOSURE # {CF22D25}>)
<br> 0<br> :EVENTS)<br><br>am i infact doing something wrong here, and if not, is it possible in some future cm version to make scheduling of these kind of processes possible?<br><br>thanks,<br>bill sack<br><br>