mixxxdj/mixxx — pull request #304 by daschuer (2014-08-06 22:35:25+00:00)
Title: Linear phase EQ

This is an experimental Linear Phase EQ. It is just a prove of concept, that a Linear Phase EQ is possible.
I do not think this is a good EQ for Mixxx, but maybe it is a base for a real cool effect.

It works quite good with 94 ms audio buffer, but produces artifacts with small buffers.
It requires a lot of CPU ~ 10 Times more than the butterworth8 EQ and introduces one audio buffer delay.
But there is room for improvements.

Here how it works:
It tooks the buffer from the last call + the current buffer and applies a Hanning window.
The old buffer is faded in and the new one out. This window is filtered in forward direction which introduces phase shift and backward which reverts the phase shift.
The output is combined by the fade in part of the current Window and the fade out part from the previous window.

The Hanning window is a kind of highpass, it hides low frequencies from the filters. But they are reconstructed by the final overlapping.

The Band is produced by the dry signal, a high pass for the mid band and a high pass for the high band.
Since the filtered signals are always in phase, we can substract and add the signals to get the desired gains for the three bands. At unity, the filter passes the delayed dry signal.