(require rsc3/rsc3 rsc3-interface/rsc3-interface rsc3-ctl/rsc3-ctl rsc3-ctl/rsc3-ctl-view) ;; To use rsc-interface, rsc must be running under MrEd. ;; Set the Emacs variable 'rsc-interpreter'. (define s (open-udp* "127.0.0.1" 57110)) (define c (make-ctls* s 64)) (ctls-view c 2 8 0) (ctl-setup (c 0) "freq" (make-spec* 220 660 'exponential) 260 4) ;; The value can be fetched from the SC3 server by pressing the ;; value view. The update is not synchronous. (-> s (/c_set 0 250)) ;; Reset ctls (begin (ctl-setup (c 0) "X" (make-spec* 0.0 1 'linear) 0.5 4) (ctl-setup (c 1) "Y" (make-spec* 0.0 1 'linear) 0.5 4) (ctl-setup (c 2) "S" (make-spec* 0.5 5 'linear) 2.0 4)) ;; An alternate interface, the existing interface will, of course, ;; reflect changes. (let ((w (make-window "ctls.help"))) (make-dots w 400 400 1 (lambda (n x y) (edit-ctl-value (c 0) x) (edit-ctl-value (c 1) y))) (window-show w)) ;; This control data can be sent to any server that understands /c_set ;; messages - for example an image synthesis server. (let ((p (open-udp* "127.0.0.1" 57147))) (define (sender index spec value state) (-> p (/c_set index value))) (ctl-recv-add (c 0) sender) (ctl-recv-add (c 1) sender) (ctl-recv-add (c 2) sender))