Hello,
Hopefully people with more knowledge of audio processing can
answer the following questions. Background: I make patches in
which the microphone input is modified by different kinds of
pitch-shifting, I would like to compensate the delays caused by
these pitch-shifts and thus avoid artefacts.
1) How much delay does a pitch-shifter based on a variable delay
(the classic rotating-tape-head style) produce? as in
G09.pitchshift.pd in the audio.examples folder. I did a quick test
with a one-sample-audio-trigger going immediately to the first
channel of a recording patch in Pd and simultaneously going to a
variable delay pitchshift (pp.pitchshift~ from AudioLab), routed
into the second channel of the recorder. The delays are quite
large and vary between 30 and 80 milliseconds, there seems to be
no relation with the amount of pitch-shift. In the pitch-shifting
patch I also notice that the delay varies between zero and the
window size. Is there a way/patch to calculate and compensate for
this delay? (for example, if you want to combine the original with
the pitch-shifted signal in a patch). Or is this impossible
because the delay is variable...
2) I'd like to know the delay in ms with FFT processing if you
have a 1024 sample window with overlap factor of 4, for example,
in a pitch-shifting vocoder? I found this info on a MAx/MSP
mailing list, is it correct?: "The I/ O delay is equal to the
window size minus the hop size (e.g., for a 1024-sample FFT window
with an overlap factor of 4, the hop size is equal to 256, and the
overall delay from input to output is 768 samples)"; at 44100
sampling rate this is around 17ms delay (for a window of 1024
samples, overlap 4).
3) Conclusion: any pitch-shifting technique introduces tens of milliseconds delay? (Pitch-shifting based on granular synthesis is not a solution, I think it also requires a buffer of at least 50ms.)
Hans