Hi,
I had written about a scheme method to do something similar to CLM's with-mix for larger compositional structures using multiple instruments and Bill had replied... "If you want to concatenate several with-sounds into one, just concatenate the instrument calls, with some variable holding the section's start time." I tried several ways to concatenate definstrument calls and place those with the body of with-sound, but nothing seems to work. It seems like ws.scm just wants a direct call to a definstrument in the body part. I gave up and tried concatenating with-sound blocks instead, and it works after a fashion but the creation of separate audio files means those still have to be stitched together at some point. At least this is getting closer to what I was after. regards, Jim (load "/opt/snd-16/CM_patterns.scm") (define (round-off z n) (let ((power (expt 10 n))) (/ (round (* power z)) power))) (definstrument (examp1 start-time duration frequency amplitude) (let* ((beg (seconds->samples start-time)) (end (+ beg (seconds->samples duration))) (sine-wave (make-oscil :frequency frequency))) (do ((i beg (+ i 1))) ((= i end)) (let ((x (* amplitude (oscil sine-wave)))) (outa i x) (outb i x))))) (definstrument (examp2 start-time duration frequency amplitude) (let* ((beg (seconds->samples start-time)) (end (+ beg (seconds->samples duration))) (gen (make-polywave :frequency frequency :partials '(1 1.69 3 5)))) (do ((i beg (+ i 1))) ((= i end)) (let ((x (* amplitude (polywave gen)))) (outa i x) (outb i x) )))) (let ((var '()) (aaa (make-heap '(360 800.345 1200 600))) ;freq (bbb (make-cycle '(1 1 .75 .25 .20 .15 .10 .10 .10 .10))) ;dur (ccc (make-heap '(241 840.345 1000 960 500))) ;freq (ddd (make-cycle '(.2 1.25 .75 .25 .20 .15 .10 .10 .50 .10 .50))) ;dur ) (set! var (cons (with-sound (:reverb nrev :output "Test1.wav" :srate 48000 :channels 2 :header-type mus-riff :statistics #t :play #t) (let ((i 0)) (do ((k 0 (+ k 1))) ((>= k 25)) (let ((v (next bbb))) (examp1 i v (next aaa) .3) (set! i (+ (round-off i 2) v)) )))) ;;end of with-sound (with-sound (:output "Test2.wav" :srate 48000 :channels 2 :header-type mus-riff :statistics #t :play #t) (let ((j 1)) (do ((k 0 (+ k 1))) ((>= k 25)) (let ((v (next ddd))) (examp2 j v (next ccc) .1) (set! j (+ (round-off j 2) v)) )))) ;;end of with-sound ) ;end var ) ;end set! var ) ;end let
_______________________________________________ Cmdist mailing list Cmdist@ccrma.stanford.edu https://cm-mail.stanford.edu/mailman/listinfo/cmdist