Csound Csound-dev Csound-tekno Search About

PSOLA synthesis?

Date1999-02-24 06:25
FromSean Costello
SubjectPSOLA synthesis?
Hi Csounders:

I have a certain synthesis technique I would like to perform, but I am
not sure of the best way to do it.  What I would like to do is take a
single one-cycle sample of a vocal sound, and trigger that sample at a
certain rate.  The sample should not change pitch or duration as it is
triggered - for triggering rates below the frequency of the original
sample, there should be gaps between the triggered samples, while for
triggering rates above the frequency of the original sample, the samples
should overlap.  

How would I do this in Csound?  Obviously, simply loading the sound into
a table and using oscili or a phasor/tablei combination will not yield
the desired effect (this would change the pitch of the sample).
Convolving the sample with a pulse train would work, but would probably
take forever to compute.  Can any of the fof routines do this (i.e.
trigger a sample once, with the triggering controlled at an audio rate,
as opposed to cycling through the sample table and enveloping the
result)? Are there other techniques I am overlooking?

If I could get this to work, the results should be fairly nice - pitch
shifting without formant shifting, or formant shifting without pitch
shifting.  Of course, I could do this with LPC, but I would really like
to try the above technique.

Thanks,

Sean Costello

P.S. The "PSOLA" in the title refers to "Pitch Synchronous Overlap-Add,"
a form of timestretching/pitchshifting that the above synthesis