Hi, I'm still pondering how best to accomplish this. I tried a couple of exs below, one adding filters.
I thought bandpass was best to try but couldn't get good high cutoff results with just one filter so I went to two overlapping bandpass filters. But I've buggered the freqs by an octave somehow. That could have been in using hz->radians as cutoffs. I think my experiments still sound too glissy overall. I'm wondering if there are other suggestions? Thank you, Jim ;no portamento. (definstrument (noport start-time duration frequency (amp-env '(0 0 1 1 2 1 3 0)) sampling-rate) (let* ((beg (floor (* start-time sampling-rate))) (end (+ beg (floor (* duration sampling-rate)))) (sine-wave (make-oscil :frequency frequency)) (ampf (make-env amp-env :duration duration :scaler 1.0)) ) (do ((i beg (+ i 1))) ((= i end)) (outa i (* (env ampf) (oscil sine-wave ))) (outb i (* (env ampf) (oscil sine-wave ))) ))) ;portamento. no filter. (definstrument (myport start-time duration frequency start-freq end-freq (amp-env '(0 0 1 1 2 1 3 0)) sampling-rate) (let* ((beg (floor (* start-time sampling-rate))) (end (+ beg (floor (* duration sampling-rate)))) (sine-wave (make-oscil :frequency frequency)) (ampf (make-env amp-env :duration duration :scaler 1.0)) (frqf (make-env '(0 0 1 1) :scaler (hz->radians (- end-freq start-freq)) :duration duration :base 0.67)) ) (do ((i beg (+ i 1))) ((= i end)) (outa i (* (env ampf) (oscil sine-wave (env frqf) ))) (outb i (* (env ampf) (oscil sine-wave (env frqf) ))) ))) (with-sound (:srate 48000 :channels 2 :header-type mus-riff :play #t) (myport 0 1 300 300 400 '(0 .3 .5 .1 1 .09) 48000) (noport 1.1 .9 400 '(0 .01 1 .1) 48000) (myport 2 1 400 400 500 '(0 .2 .5 .1 1 .09) 48000) (noport 3.1 .9 500 '(0 .01 1 .1) 48000) (noport 4 .3 500 '(0 .19 .3 .001) 48000) (myport 4.2 .6 500 500 300 '(0 .001 .5 .1 1 .3) 48000) (noport 5 1 300 '(0 .08 .3 .001) 48000) ) ;portamento adding filters. (definstrument (myportfilt start-time duration frequency start-freq end-freq (glissamp-env '(0 0 1 1 2 0)) (amp-env '(0 0 1 1 2 1 3 0)) sampling-rate order1 flow1 fhigh1 order2 flow2 fhigh2) (let* ((beg (floor (* start-time sampling-rate))) (end (+ beg (floor (* duration sampling-rate)))) (sine-wave (make-oscil :frequency frequency)) ;sine osc (ampf (make-env amp-env :duration duration :scaler 1.0)) ;overall amp env (frqf (make-env '(0 0 1 1) :scaler (hz->radians (- end-freq start-freq)) :duration duration :base 0.67)) ;gliss (gliss_amp (make-env glissamp-env :duration duration :scaler 1.0)) ;another amp env for the gliss (flt1 (make-butterworth-bandpass order1 (hz->radians flow1) (hz->radians fhigh1))) (flt2 (make-butterworth-bandpass order2 (hz->radians flow2) (hz->radians fhigh2))) ) (do ((i beg (+ i 1))) ((= i end)) (outa i (* (env ampf) (+ (* (env gliss_amp)(flt1 (oscil sine-wave (env frqf)))) (* (env gliss_amp)(flt2 (oscil sine-wave (env frqf))))))) (outb i (* (env ampf) (+ (* (env gliss_amp)(flt1 (oscil sine-wave (env frqf)))) (* (env gliss_amp)(flt2 (oscil sine-wave (env frqf))))))) ))) (with-sound (:srate 48000 :channels 2 :header-type mus-riff :play #t) (noport 0 .55 400 '(0 .03 1 .01) 48000) (myportfilt .5 .4 200 200 400 '(0 .3 .4 .1) '(0 0.03 .9 0.06) 48000 8 100 150 8 100 200) (noport .5 .5 800 '(0 .01 1 .01) 48000) (noport 1 .55 800 '(0 .03 1 .01) 48000) (myportfilt 1.5 .4 400 400 200 '(0 .3 .4 .01) '(0 0.03 .9 0.06) 48000 8 100 150 8 100 200) (noport 1.5 .5 400 '(0 .01 1 .01) 48000) (noport 3 1.1 400 '(0 .03 1 .01) 48000) (myportfilt 4 .9 200 200 400 '(0 .3 .9 .1) '(0 0.03 .9 0.06) 48000 8 100 150 8 100 200) (noport 5 1 800 '(0 .02 1 .1) 48000) )
_______________________________________________ Cmdist mailing list Cmdist@ccrma.stanford.edu https://cm-mail.stanford.edu/mailman/listinfo/cmdist