Re: [CM] make-pvocoder

2017-05-25 Thread bil

Your instrument fills all the vocoder arrays
with noise, so you get noise as the output.
Are you trying to do additive synthesis?

___
Cmdist mailing list
Cmdist@ccrma.stanford.edu
https://cm-mail.stanford.edu/mailman/listinfo/cmdist



[CM] make-pvocoder

2017-05-25 Thread James Hearon
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