Hi Fons,
Thanks for the reply, and from vacation no less.
On 8/30/21 7:06 PM, Fons Adriaensen wrote:
To implement this you need more than just FFT and
IFFT. Using only
those on each block would amount to circular convolution, while
what you need is linear convolution. Changing only the phase of
a signal is just a special case of filtering, which means the output
will be longer than the input.
Aha! That is what I was missing and didn't understand. Thank you.
Define the phase shift in the
frequency domain (i.e. as if it were the result of an FFT), do the
inverse FFT and use the result as the IR for the convolver.
So just compute a FIR and apply it. I now have a working prototype.
I hoped to sidestep that because the phase-angle should be a sweepable
parameter. I can probably make this work by cross-fading the computed
FIR when the parameter changes.
Now don't believe that phase shifting a signal
will always result
in a waveform with a lower peak/RMS ratio. It could very well
have the opposite effect.
Well, there is a minimum. So far I just brute force detect it, trying
all angles in 1 deg steps on a file.
Finding out if it can be computed is up next. Perhaps using linear
regression on the spectrum of the file. I may pick your brain again when
I progress to that stage.
Greetings to all from sunny Crete.
The next retsina is on me, unless you prefer a cold ΑΛΦΑ beer :)
Stay safe!
robin