It looks like you're mixing up scheme ("set!") and CL ("run");
Here is a CL version:

(definstrument mult-combs (beg dur freq amp)
  (let* ((start (floor (* beg *srate*)))
         (end (+ start (floor (* dur *srate*))))
         (os (make-oscil freq))
         (combs (make-array 3))
         (sum 0.0))

     (setf (aref combs 0) (make-comb .10 600))
     (setf (aref combs 1) (make-comb .20 300))
     (setf (aref combs 2) (make-comb .30 100))

     (run
     (loop for k from start to end do
           (setf sum 0.0)
           (let ((x (oscil os)))
             (do ((i 0 (+ i 1))) 
                 ((= i 3))    
                 (setf sum (+ sum (comb (aref combs i) x)))))
           (outa k (* amp sum))
           (outb k (* amp sum))))))
       
; (with-sound (:channels 2 :srate 48000 :header-type mus-riff :data-format 
mus-lfloat :output 
"mytest.wav") (mult-combs 0 5 200 .1))


and a scheme version:

(definstrument (mult-combs beg dur freq amp)
  (let* ((start (floor (* beg *clm-srate*)))
         (end (+ start (floor (* dur *clm-srate*))))
         (os (make-oscil freq))
         (combs (make-vector 3))
         (sum 0.0))
     (set! (combs 0) (make-comb .10 600))
     (set! (combs 1) (make-comb .20 300))
     (set! (combs 2) (make-comb .30 100))

     (do ((k start (+ k 1)))
         ((= k end))
       (set! sum 0.0)
       (let ((x (oscil os)))
         (do ((i 0 (+ i 1))) 
             ((= i 3))    
           (set! sum (+ sum (comb (combs i) x))))
         (outa k (* amp sum))
         (outb k (* amp sum))))))
         ))))
       
; (with-sound (:channels 2 :srate 48000 :header-type mus-riff :output 
"mytest.wav") (mult-combs 0 5 
200 .1))



In CL, mus-riff output, you need to give a compatible data-format.   In both 
cases,
you need to make the array (or vector) before loading it.

_______________________________________________
Cmdist mailing list
[email protected]
http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist

Reply via email to