Hi, I'm working thru snd make-pvocoder, clm make-phase-vocoder trying to find more info on the analyze, edit, and synthesize methods, such as the one below the manual which shows a lambda func for the synthesis or resynthesis method. Most of what I've been able to find is based on a gen from readin of a file or input samples to access spectral data. I know this is a bit odd, but I was trying to create designer spectra, by filling empty vectors with various numbers etc, as opposed to getting the data from a readin generator. So far mine just sounds like noise, so I don't have it quite right. I'm wondering if I'm on the right track by using original vectors in the analyze, edit, and synthesize methods. Or maybe I should just be creating sound files using something like infinite sums, for example, and sticking with the readin generator to analyze those sounds? I've looked at at the moving-spectrum and pins insts too.
Thank you, Jim (with-sound (:srate 22050 :statistics #t) (let ((pv (make-phase-vocoder (make-readin "oboe.snd") 512 4 128 1.0 #f ; no change to analysis method #f ; no change to spectrum (lambda (gen) ; resynthesis function (float-vector-add! (phase-vocoder-amps gen) (phase-vocoder-amp-increments gen)) (float-vector-add! (phase-vocoder-phase-increments gen) (phase-vocoder-freqs gen)) (float-vector-add! (phase-vocoder-phases gen) (phase-vocoder-phase-increments gen)) (let ((sum 0.0) (n (length (phase-vocoder-amps gen)))) (do ((k 0 (+ k 1))) ((= k n)) (set! sum (+ sum (* (float-vector-ref (phase-vocoder-amps gen) k) (sin (* 0.5 (float-vector-ref (phase-vocoder-phases gen) k))))))) sum))))) (do ((i 0 (+ i 1))) ((= i 44100)) (outa i (phase-vocoder pv))))) -------------------- (with-sound (:reverb nrev :srate 48000 :channels 2 :header-type mus-riff :statistics #t :output "/myTest.wav" :play #t ) (let* ((samps (* 2 (mus-sound-framples "/Sample1.wav"))) (hop 512) (jsampvec (make-float-vector hop)) ;create empty vectors (jsampincvec (make-float-vector hop)) (jsfreqvec (make-float-vector hop)) (jsphasevec (make-float-vector hop)) (jsphaseincvec (make-float-vector hop)) (pv (make-phase-vocoder (make-readin "/Sample1.wav") 512 4 128 1.75 ;fft-size, overlap, interp, pitch #f ; no change to analysis #f ; no change to edit (lambda (gen) ; *attempt resynthesis function* (do ((i 0 (+ i 1))) ((= i hop)) (set! (jsampvec i) (mus-random .02) ) ;fill vectors with numbers (set! (jsampincvec i) (mus-random .05) ) (set! (jsfreqvec i) (mus-random 500) ) (set! (jsphasevec i) (mus-random 360) ) (set! (jsphaseincvec i) (mus-random .02) ) ) ;end do (float-vector-add! jsampvec jsampincvec) ;add the vectors (float-vector-add! jsphaseincvec jsfreqvec) (float-vector-add! jsphasevec jsphaseincvec) (let ((sum 0.0) (n hop)) (do ((k 0 (+ k 1))) ((= k n)) (set! sum (+ sum (* (jsampvec k)(sin (* 0.5 (jsphasevec k)))))) ;create waveform ) sum) ))) (do ((i 0 (+ i 1))) ((= i samps)) (outa i (* 4 (phase-vocoder pv))) (outb i (* 4 (phase-vocoder pv))) )))
_______________________________________________ Cmdist mailing list Cmdist@ccrma.stanford.edu https://cm-mail.stanford.edu/mailman/listinfo/cmdist