Do all-pass and FIR filters cause delay?

For a long time I was afraid of all-pass and FIR filters because they seemed exotic and supposedly cause lots of delay, making them unusable for live sound. Turns out this was just an excuse I was using to avoid some mental hurdles.

Do all-pass filters cause delay?

Here’s a measurement of my BLU-160. It’s an output processor from BSS.

Pretty boring.

Here’s that same measurement with 5ms of delay inserted. Let me draw your attention to the Live IR. It’s the exact same shape as in the previous measurement, just pushed 5ms down the time axis.

Let’s take out the delay and insert a second-order 180º APF (all-pass filter) at 100Hz.

Cool.

Wait a second. What’s going on with the Live IR?

Isn’t an APF a frequency-specific delay?

If the half-period of 100Hz is 5ms, shouldn’t we see a 5ms delay in Live IR?

Maybe the Live IR is over represented by high frequency content. Let’s start over and switch to using a using band-limited pink noise (50-200Hz) instead for the signal generator.

I moved the Live IR window over a bit since the peak shifted when I switched to the band-limited pink noise, but I didn’t adjust the delay finder.

Now I’ll insert the APF again.

I see phase shift, but I don’t see delay.

Maybe we just can’t see with enough resolution. Let’s record the wavelet and look at it as an IR (impulse response).

Ah, ha! Now we see some delay. But is it 5ms of delay?

Rats. It’s only 0.042ms.

I have one more idea. What if I record them and look at them in a wave editor.

Here are the waveforms superimposed. It looks like some delay, or maybe a polarity inversion?

But if I invert the polarity…

Instead of the same IR pushed 5ms down the time axis we see…something different; a new waveform.

This is an important distinction. Delay causes delay. It returns a copy of the original, just farther down the time axis. It does not alter the wave shape and there is no frequency dependence.

On the other hand, an APF does not cause delay. Instead, it causes phase shift, which is frequency dependent and returns a new waveform. Phase shift causes the waveform to rotate around the time axis, which can make it difficult to distinguish from delay.

It’s important that we do, though, because if I sent you this new waveform and you wanted to reverse the process you wouldn’t use delay. You would use a complimentary APF.

Problem solving

If we observe summation that looks like this:

We’ll want to fix it with delay so that it looks like this:

If we observe summation that looks like this:

We’ll fix it with a matching APF in the other channel:

Do FIR filters cause delay?

FIR (finite impulse response) filters do not cause delay for the same reasons that APF do not cause delay. Their implementation, though, may result in latency any time they include excess phase or linear phase.

Excess phase is any additional phase beyond minimum phase.

Minimum phase defines the predictable relationship between magnitude and phase.

Linear phase breaks all the rules and removes any relationship between magnitude and phase. 😨

This leads to a very simple rule for a minimum phase network: at a local maximum or minimum in the transfer function, a frequency of maximum curvature of amplitude corresponds to a point of inflection of phase.

Richard Heyser

As long as your FIR filter only includes minimum phase filters, there will be no processing delay. Where there is a change in magnitude, there were will be a corresponding and predictable change in phase. Where there is a change in phase there will be a predictable and corresponding change in magnitude.

Here’s a measurement of a JBL PRX615M.

Here’s the same speaker, but with an FIR filter inserted (800 samples!). Notice the Live IR. The FIR filter is entirely minimum phase so there is no processing delay.

If I were to introduce linear phase filters and make changes to the phase and magnitude independently a filter delay would be necessary and we’d some amount of processor latency.

Why should I care?

To know the right tool for the job, you have to know what it’s called. Imagine a surgeon calling out for the thingy-thing.

If you have a time alignment problem, fix it with delay.

If you have a phase alignment problem, fix it with an APF.

If you want to adjust magnitude with phase, use a minimum phase FIR filter and incur no processing delay.

If you need to adjust magnitude and phase independently, use a linear phase FIR filter and incur predictable processing delay.