"(define pd-num-inlets 1)\n" "(define pd-num-outlets 0)\n" "(define (pd-legaloutlet outlet-num)\n" " (if (and (< outlet-num pd-num-outlets) (>= outlet-num 0))\n" " #t\n" " (begin\n" " (pd-display \"outlet-num out of range\")\n" " #f)))\n" "(define (pd-legalinlet inlet-num)\n" " (if (and (< inlet-num pd-num-inlets) (>= inlet-num 0))\n" " #t\n" " (begin\n" " (pd-display \"inlet-num out of range\")\n" " #f)))\n" "(define pd-inlet-vector (make-vector 1 '()))\n" "(define pd-inlet-anyvector (make-vector 1 '()))\n" "(define (pd-inlet-func inlet-num symbol args)\n" " (let ((inlet-func (assq symbol \n" " (vector-ref pd-inlet-vector\n" " inlet-num))))\n" " (if (not inlet-func)\n" " (begin\n" " (set! inlet-func (assq 'any\n" " (vector-ref pd-inlet-vector inlet-num)))\n" " (set! args (cons symbol args))))\n" " (if inlet-func\n" " (apply (cadr inlet-func) args)\n" " (pd-display \"No function defined for handling \\'\" symbol \" to inlet \" inlet-num))))\n" "(define (pd-inlet inlet-num symbol func)\n" " (if (not (procedure? func))\n" " (pd-display \"Wrong argument to pd-inlet: \" func \" is not a procedure\")\n" " (if (and (pd-check-number inlet-num \"pd-inlet\")\n" " (pd-legalinlet inlet-num))\n" " (let ((inlet-funcs (vector-ref (if (eq? symbol 'any)\n" " pd-inlet-anyvector\n" " pd-inlet-vector)\n" " inlet-num)))\n" " (vector-set! pd-inlet-vector \n" " inlet-num\n" " (cons (list symbol func)\n" " inlet-funcs))))))\n" "(define (pd-inlets new-num-inlets)\n" " (let ((num-inlets (if (pd-c-inited? pd-instance)\n" " (pd-c-get-num-inlets pd-instance)\n" " new-num-inlets)))\n" " (if (pd-check-number num-inlets \"pd-inlets\")\n" " (if (<= num-inlets 0)\n" " (pd-display \"num-inlets must be greater than 0, not \" num-inlets)\n" " (begin\n" " (set! pd-num-inlets num-inlets)\n" " (set! pd-inlet-vector (make-vector num-inlets '()))\n" " (pd-c-inlets pd-instance num-inlets))))))\n" "(define (pd-outlets new-num-outlets)\n" " (let ((num-outlets (if (pd-c-inited? pd-instance)\n" " (pd-c-get-num-outlets pd-instance)\n" " new-num-outlets)))\n" " (if (pd-check-number num-outlets \"pd-outlets\")\n" " (if (<= num-outlets 0)\n" " (pd-display \"num-outlets must be greater than 0, not \" num-outlets)\n" " (begin\n" " (set! pd-num-outlets num-outlets)\n" " (pd-c-outlets pd-instance num-outlets))))))\n" "(define (pd-outlet outlet-num firstarg . args)\n" " (if (pd-legaloutlet outlet-num)\n" " (cond ((> (length args) 0) (pd-c-outlet-list pd-instance outlet-num issymbol (cons firstarg args)))\n" " ((list? firstarg) (pd-c-outlet-list pd-instance outlet-num firstarg))\n" " ((number? firstarg) (pd-c-outlet-number pd-instance outlet-num firstarg))\n" " ((string? firstarg) (pd-c-outlet-string pd-instance outlet-num firstarg))\n" " ((eq? 'bang firstarg) (pd-c-outlet-bang pd-instance outlet-num))\n" " ((symbol? firstarg) (pd-c-outlet-symbol pd-instance outlet-num firstarg))\n" " (else\n" " (pd-display \"Unknown argument to pd-outlet-or-send:\" firstarg)))))\n" "(define pd-local-bindings '())\n" "(define (pd-bind symbol func)\n" " (set! pd-local-bindings (pd-bind-do symbol func pd-local-bindings)))\n" "(define (pd-unbind symbol)\n" " (set! pd-local-bindings (pd-unbind-do symbol pd-local-bindings)))\n" "(define (pd-unbind-all)\n" " (if (not (null? pd-local-bindings))\n" " (begin\n" " (pd-unbind (car (car pd-local-bindings)))\n" " (pd-unbind-all))))\n" "(define pd-destroy-func #f)\n" "(define (pd-set-destroy-func thunk)\n" " (if (not (procedure? thunk))\n" " (pd-display \"Wrong argument to pd-set-destroy-func: \" thunk \" is not a procedure.\")\n" " (set! pd-destroy-func thunk)))\n" "(define (pd-cleanup-func)\n" " (if pd-destroy-func\n" " (begin\n" " (pd-destroy-func)\n" " (set! pd-destroy-func #f)))\n" " (pd-unbind-all))\n"