I coded a quick Matlab script to do a pitch shift
using the first method that came to mind and which
I'm guessing is the first method that comes to
everyone's mind when they first think about this
I took the time samples divided them into overlapped
frames, took the DFT of each frame, pitch shifted,
and took the IDFT, etc.
By pitch shifting the DFT I mean: (SHIFT < 1)
for i=1: N/2-1
new_dft_bin[i * SHIFT] += old_dft_bin[i]
and the rest of new_dft_bin is set to the appropriate conjugate of above
such that the IFFT is real.
Suprisingly, it sounded pretty good for a wide range of shifts,e.g. SHIFT=0.5,
The worst artifact is that a significant
reverb effect is introduced.
Does anyone know the theoretical reason of why reverb is introduced?
If I run all the processing except the actual DFT pitch shift, the output
sounds fine with no reverb; this is true even if I change the
phases of each DFT bin to zero.
Reply by Stephan M. Bernsee●September 19, 20042004-09-19