Hi Fons, On 11/16/2022 2:14 PM, Fons Adriaensen wrote:
On Wed, Nov 16, 2022 at 12:51:44PM +0100, Florian Paul Schmidt wrote:
1. If I understand this correctly the L and R outputs have opposite phase shifts. That means they will not sum to the input. Just assume the L shift is 90 degrees. then R is -90, and they will just cancel.
If I limit the phases to the interval (-pi, pi) then for each fft bin (with phases theta and -theta respectively for the L and R channels), then summing the filtered L and R signals results in a gain of 2*cos(theta) in that respective frequency bin - the extremum being the mentioned cancellation, i.e. gain 0, when the phases are -pi/2 and pi/2 respectively. This gain can be cancelled by scaling the magnitude of the fft bin by 1/(2*cos(theta)). This then ensures summing to the original signal. The price for this is that in the "spread" channels the amplitude is not 1 for all fft bins, i.e. there is (additional) amplitude ripple. This ripple is larger for bigger relative phase shifts (and approaching infinity for pi, i.e. -pi/2 in one channel and pi/2 in the other). I found in listening tests that limiting the relative phase shift to pi/2 gives acceptable results, even if the ripple approaches 40%. It is a subtle effect nonetheless, but it really comes to life when splitting a guitar signal to stereo this way and then heavily distorting both channels individually. This destroys the sum-to-original property but the sum seems still pleasantly devoid of the typical haas-filtering phase effects. Kind regards, FPS P.S.: I updated the code in the repository with these changes if someone wants to test it out.. -- https://dfdx.eu _______________________________________________ Linux-audio-dev mailing list Linux-audio-dev@lists.linuxaudio.org https://lists.linuxaudio.org/listinfo/linux-audio-dev