see the attached patch.
I now think it is impossible to compensate for the delay of a variable
delay pitch shifter. Just because it's variable :) Anyway, this is
Miller's clear explanation:
http://msp.ucsd.edu/techniques/latest/book-html/node115.html
best, Hans
On 11/24/20 2:59 PM, Maximiliano Estudies wrote:
Hi Hans,
how are you measuring the delays?
Cheers,
Maxi
El vie, 20 nov 2020 a las 15:25, [email protected]
<mailto:[email protected]> (<[email protected]
<mailto:[email protected]>>) escribió:
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
--
_______________________________________________
[email protected] <mailto:[email protected]> mailing list
UNSUBSCRIBE and account-management ->
https://lists.puredata.info/listinfo/pd-list
--
Maximiliano Estudies
/VDT Referat Beschallung/
+49 176 36784771
omslo.com <http://omslo.com>
maxiestudies.com <http://maxiestudies.com>
--
#N canvas 574 82 482 292 12;
#N canvas 1 58 450 258 one-sample-burst 0;
#X obj 174 199 outlet~;
#N canvas 595 92 466 478 crackle 0;
#X obj 116 152 / 44.1;
#X obj 108 399 vline~;
#X obj 108 426 outlet~;
#X obj 174 94 samplerate~;
#X obj 137 68 t f b;
#X obj 51 244 f;
#X text 131 9 aantal samples;
#X obj 95 280 t b f b;
#X msg 143 326 1;
#X msg 88 340 0;
#X obj 90 312 del;
#X obj 158 123 * 0.001;
#X obj 246 14 loadbang;
#X obj 246 39 5;
#X obj 137 30 r 1-craslen;
#X obj 42 126 inlet bang;
#X connect 0 0 5 1;
#X connect 1 0 2 0;
#X connect 3 0 11 0;
#X connect 4 0 0 0;
#X connect 4 1 3 0;
#X connect 5 0 7 0;
#X connect 7 0 10 0;
#X connect 7 1 10 1;
#X connect 7 2 8 0;
#X connect 8 0 1 0;
#X connect 9 0 1 0;
#X connect 10 0 9 0;
#X connect 11 0 0 1;
#X connect 12 0 13 0;
#X connect 13 0 4 0;
#X connect 14 0 4 0;
#X connect 15 0 5 0;
#X restore 176 113 pd crackle;
#X obj 175 160 *~ 0.5;
#X obj 170 47 inlet;
#X connect 1 0 2 0;
#X connect 2 0 0 0;
#X connect 3 0 1 0;
#X restore 159 83 pd one-sample-burst;
#N canvas 1 58 450 300 record2channels 0;
#X obj 99 42 inlet~;
#X obj 187 45 inlet~;
#X restore 38 198 pd record2channels;
#N canvas 1 58 450 300 pitchshifter 0;
#X obj 187 45 inlet~;
#X obj 159 262 outlet~;
#X restore 160 141 pd pitchshifter;
#X obj 159 43 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 124 169 dac~;
#X text 37 230 ...and compare both audio channels in an audio editor.
;
#X text 277 139 <- put your variable delay pitchshifter in here, f
26;
#X connect 0 0 2 0;
#X connect 0 0 1 0;
#X connect 0 0 4 0;
#X connect 2 0 1 1;
#X connect 2 0 4 1;
#X connect 3 0 0 0;
_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management ->
https://lists.puredata.info/listinfo/pd-list