On Fri, 14 May 2004, Roman Haefeli wrote:
i had a discussion with a teacher today. the topic was the smallest delay-time possible. in his opinion one sample is the atom of signal and cannot be divided anymore. in my opinion it should be possible to get shorter delays than 1 samples with interpolation. my argument was: it should be possible to set the values of each sample so, that the resulting signal would be similar to a digitized analogue signal with a shorter than 1 sample delay.
Suppose you have a signal at exactly the Nyquist frequency and RMS=sqrt(2). Then its data is like +1,-1,+1,-1,...
Delaying the signal by 0.5 positions, using linear interpolation, yields:
(+1-1)/2,(-1+1)/2,... = 0,0,0,0,... so your signal got mangled down to complete silence.
Delaying the signal by 0.5 positions, using fourier interpolation, goes like: [fft~] finds a single peak, at Nyquist frequency. Then given a turn = 2*pi radians = 2 samples at Nyquist, then a 0.5 sample delay is a pi/2 phase shift to the Nyquist bin, so you do [ifft~] on sqrt(-1)*pi/2 times the Nyquist bin and then it depends on how [ifft~] is implemented.
The big problem is that, at Nyquist freq, if you want to preserve Parseval's identity ("the RMS of the signal = the RMS of its spectrum"), then there are only two possibilities of phase: 0 and pi. All the others inevitably reduce the RMS. So if [ifft~] rounds the phase towards the nearest of two values, you have a delay of either 0 or 1 sample, and if it doesn't round, then it doesn't support Parseval's identity.
Proof: the signal has period of 2 samples. So it alternates between two values, call them A and B. If A+B is nonzero, then the signal has a DC component, but we said it only has a Nyquist component, so B=-A. We supposed RMS=sqrt(2). RMS is computable as A^2+B^2=RMS^2 (Pythagoras' Theorem ;-]) In this case it's also A^2+(-A)^2=sqrt(2)^2, so 2*A^2=2, so A^2=1, so A=+1 or A=-1. so phase is either 0 or pi.
is there anything still unclear?
Mathieu Bouchard http://artengine.ca/matju