[CM] Sbcl and realtime cm

Rick Taube taube@uiuc.edu
Fri, 6 Oct 2006 06:07:52 -0500


the receive code for portmidi receiving is not stable. i think i have  
the correct sourcese now, but have not checked them into cvs because  
im waiting for roger dannenberg to make some updates to the portmidi  
lib itself.
i will  check in the fixes nonetheless and hope for the best.

will try the examples later today or tomorrow in sbcl as i find time.


On Oct 5, 2006, at 9:06 PM, Ken wrote:

> I'm having additional trouble with portmidi and rts.
>
> I have installed the latest cvs of the following:
> cm
> rts
> portmidi interface
> cffi-062925
>
> lisp:
> sbcl 0.9.17
>
> Sbcl loads everything fine including cffi, portmidi and rts.
> Going through the examples I get the following.
> Example 3 of the Portmidi entry:
>
> (define *pm* (portmidi-open :latency 0 :input 3 :output 0))
>
> (define myseq (new <cid:part1.06020304.00070202@earthlink.net> seq  
> <file:///home/nunativs/sound/cm/system/cm/doc/dict/seq-fn.html>))
>
> (portmidi-record! myseq)
>
> portmidi-record!: receiver already active.
>   [Condition of type SIMPLE-ERROR]
>
> Restarts:
>  0: [ABORT-REQUEST] Abort handling SLIME request.
>  1: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl- 
> thread" {AD40161}>)
>
> Backtrace:
>  0: (PORTMIDI-RECORD! #<seq {AF1A211}>)
>  1: (SB-INT:SIMPLE-EVAL-IN-LEXENV (PORTMIDI-RECORD! MYSEQ) #<NULL- 
> LEXENV>)
>  2: (SWANK::EVAL-REGION "(portmidi-record! myseq)
> " T)
>  3: ((LAMBDA NIL))
>  4: ((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-SYNTAX-HOOKS (T))  
> #<unused argument> #<unused argument> #<CLOSURE (LAMBDA NIL)  
> {B17E94D}>)
>  5: (SWANK::CALL-WITH-BUFFER-SYNTAX #<CLOSURE (LAMBDA NIL) {B17E94D}>)
>  6: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:LISTENER-EVAL "(portmidi- 
> record! myseq)
> ") #<NULL-LEXENV>)
>  7: ((LAMBDA NIL))
>  8: ((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK (T  
> T)) #<unused argument> #<unused argument> #<FUNCTION SWANK:SWANK- 
> DEBUGGER-HOOK> #<CLOSURE (LAMBDA NIL) {B17E26D}>)
>  9: ((LAMBDA NIL))
> 10: ((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK (T  
> T)) #<unused argument> #<unused argument> #<FUNCTION SWANK:SWANK- 
> DEBUGGER-HOOK> #<FUNCTION (LAMBDA NIL) {B58372D}>)
> 11: (SWANK::CALL-WITH-REDIRECTED-IO #<SWANK::CONNECTION {ABDD701}>  
> #<CLOSURE (LAMBDA NIL) {B17E11D}>)
> 12: (SWANK::CALL-WITH-CONNECTION #<SWANK::CONNECTION {ABDD701}>  
> #<FUNCTION (LAMBDA NIL) {B58372D}>)
> 13: (SWANK::HANDLE-REQUEST #<SWANK::CONNECTION {ABDD701}>)
> 14: ((LAMBDA NIL))
> 15: ((LAMBDA NIL))
> 16: ((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK (T  
> T)) #<unused argument> #<unused argument> #<FUNCTION SWANK:SWANK- 
> DEBUGGER-HOOK> #<CLOSURE (LAMBDA NIL) {AD540C5}>)
> 17: (SWANK::CALL-WITH-REDIRECTED-IO #<SWANK::CONNECTION {ABDD701}>  
> #<CLOSURE (LAMBDA NIL) {AD540D5}>)
> 18: (SWANK::CALL-WITH-CONNECTION #<SWANK::CONNECTION {ABDD701}>  
> #<CLOSURE (LAMBDA NIL) {AD540C5}>)
> 19: (SWANK::CALL-WITH-BINDINGS NIL #<CLOSURE (LAMBDA NIL) {AD540A5}>)
> 20: ((LAMBDA NIL))
> 21: ("foreign function: call_into_lisp")
> 22: ("foreign function: funcall0")
> 23: ("foreign function: new_thread_trampoline")
> 24: ("foreign function: #xB7FC8341")
>
> Example #2 of rts:
> (define fluff '(60 62 64 67 72 65 69 48 50))
>
> (define (endless-fluff num dur knums)
>  (process <cid:part2.00080903.08060003@earthlink.net> repeat num  
> for i from 0 	   output
>           (new <cid:part1.06020304.00070202@earthlink.net> midi  
> <cid:part4.09080208.07000506@earthlink.net> :time (now  
> <cid:part5.03050708.09080803@earthlink.net>)                :duration  
> (* 2 dur)
>                :amplitude .5
>                :keynum (pickl  
> <cid:part6.05060106.06040706@earthlink.net> fluff))
> 	   wait (pick <cid:part7.01060806.02030707@earthlink.net> dur (/  
> dur 2) (/ dur 4))
> 	   when (= i (1- num))
> 	   sprout (process <cid:part2.00080903.08060003@earthlink.net>  
> repeat 4
>                           output (new  
> <cid:part1.06020304.00070202@earthlink.net> midi  
> <cid:part4.09080208.07000506@earthlink.net> :time (now  
> <cid:part5.03050708.09080803@earthlink.net>)                           
>              :duration 5
>                                       :amplitude . 
> 5                                       :keynum (pickl  
> <cid:part6.05060106.06040706@earthlink.net> knums)))
> 	   and
> 	   sprout (endless-fluff 20 1 knums)))
>
> (rts *pm*)
>
> (sprout (endless-fluff 20 1 fluff))
>
>
> invalid number of arguments: 5
>   [Condition of type SB-INT:SIMPLE-PROGRAM-ERROR]
>
> Restarts:
>  0: [ABORT-REQUEST] Abort handling SLIME request.
>  1: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl- 
> thread" {AD43161}>)
>
> Backtrace:
>  0: (RTS-ENQUEUE 1 #<CLOSURE (LAMBDA NIL) {A6CB425}> 10.493859  
> 10.493859)
>  1: (SPROUT #<CLOSURE (LAMBDA NIL) {A6CB425}> :TO NIL :AT NIL)
>  2: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SPROUT (ENDLESS-FLUFF 20 1  
> FLUFF)) #<NULL-LEXENV>)
>  3: (SWANK::EVAL-REGION "(sprout (endless-fluff 20 1 fluff))
> " T)
>  4: ((LAMBDA NIL))
>  5: ((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-SYNTAX-HOOKS (T))  
> #<unused argument> #<unused argument> #<CLOSURE (LAMBDA NIL)  
> {A696DC5}>)
>  6: (SWANK::CALL-WITH-BUFFER-SYNTAX #<CLOSURE (LAMBDA NIL) {A696DC5}>)
>  7: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:LISTENER-EVAL "(sprout  
> (endless-fluff 20 1 fluff))
> ") #<NULL-LEXENV>)
>  8: ((LAMBDA NIL))
>  9: ((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK (T  
> T)) #<unused argument> #<unused argument> #<FUNCTION SWANK:SWANK- 
> DEBUGGER-HOOK> #<CLOSURE (LAMBDA NIL) {A6966E5}>)
> 10: ((LAMBDA NIL))
> 11: ((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK (T  
> T)) #<unused argument> #<unused argument> #<FUNCTION SWANK:SWANK- 
> DEBUGGER-HOOK> #<FUNCTION (LAMBDA NIL) {B58A72D}>)
> 12: (SWANK::CALL-WITH-REDIRECTED-IO #<SWANK::CONNECTION {ABDF701}>  
> #<CLOSURE (LAMBDA NIL) {A696595}>)
> 13: (SWANK::CALL-WITH-CONNECTION #<SWANK::CONNECTION {ABDF701}>  
> #<FUNCTION (LAMBDA NIL) {B58A72D}>)
> 14: (SWANK::HANDLE-REQUEST #<SWANK::CONNECTION {ABDF701}>)
> 15: ((LAMBDA NIL))
> 16: ((LAMBDA NIL))
> 17: ((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK (T  
> T)) #<unused argument> #<unused argument> #<FUNCTION SWANK:SWANK- 
> DEBUGGER-HOOK> #<CLOSURE (LAMBDA NIL) {AD520C5}>)
> 18: (SWANK::CALL-WITH-REDIRECTED-IO #<SWANK::CONNECTION {ABDF701}>  
> #<CLOSURE (LAMBDA NIL) {AD520D5}>)
> 19: (SWANK::CALL-WITH-CONNECTION #<SWANK::CONNECTION {ABDF701}>  
> #<CLOSURE (LAMBDA NIL) {AD520C5}>)
> 20: (SWANK::CALL-WITH-BINDINGS NIL #<CLOSURE (LAMBDA NIL) {AD520A5}>)
> 21: ((LAMBDA NIL))
> 22: ("foreign function: call_into_lisp")
> 23: ("foreign function: funcall0")
> 24: ("foreign function: new_thread_trampoline")
> 25: ("foreign function: #xB7FC8341")
>
>
> I notice that almost all the rts examples give errors, nor can i  
> get a usb midi keyboard to function as an input.
> I am able to get portmidi to spit out midi processes, but the  
> timing will get screwed up or the notes will not all come out.
> I am shooting for realtime midi in and out at some point, so any  
> pointers on which direction to pursue are greatly appreciated.
> Thanks,
> Ken
>
> _______________________________________________
> Cmdist mailing list
> Cmdist@ccrma.stanford.edu
> http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist