Hi there,
I am trying to alter a series of similar waveforms (let’s say 2 different people singing “ah”) at the approximately the same pitch. I’m trying to alter a waveform (destructive DSP) by forcing it to be the exact same frequency over time as the “source” waveform. The syncing can be by Zero Crossing or crests or whatever works best. OR…. maybe there is another way to achieve this by 100% tuning each sound file so there is no phase when overlapped. I think the former would sound more natural though…. keeping the human tuning.:
Maybe one way would be to do a pitch tracker (using autocorrelation or something more advanced) and then use a time-domain technique like PSOLA (pitch-synchronous overlap-add) to recombine snippets of the target waveform. Another way would be to do it in the frequency-domain using a phase vocoder. If the pitches are pretty similar to begin with, PSOLA would probably be the simplest.
It might be possible to skip the pitch-tracking step altogether, except maybe to estimate the reasonable range. It sounds like this could be a possibility:
- For each major pitch peak in the source waveform, find the nearest peak in the target waveform
- Window it with something like a Hanning window
- Overlap-add it to where it was in the source waveform
- Do whatever PSOLA does to make this work out right - I forget the details
Do any of IRCAM’s software packages offer something that could help me with this?
Thanks for any help.