[CM] run (guile) type declarations
Bill Schottstaedt
bil at ccrma.Stanford.EDU
Sat Sep 16 11:20:26 PDT 2006
Here's one way:
(definstrument (add beg dur freq amp)
(let* ((start (seconds->samples beg))
(end (+ start (seconds->samples dur)))
(vec (make-vector 20))
(env 0))
(do ((i 0 (1+ i))) ((= i 20))
(vector-set! vec i (make-oscil (* (1+ i) 100))))
(run
(lambda ()
(declare env float)
(do ((i start (1+ i)))
((= i end))
(let ((sum 0.0))
(do ((j 0 (1+ j)))
((= j 20))
(set! sum (+ sum (* (sin env) (oscil (vector-ref vec j)))))
(set! env (+ env (/ pi 20.))))
(outa i (* amp .05 sum) *output*)))))))
but it seems perverse -- I'll look into making the optimizer's type checker smarter
about this sort of case.
More information about the Cmdist
mailing list