As a practical matter, unless you resort to fractional-sample delays, you are limited to delays that are integer multiples of the sampling period. That's usually good enough for low crossover frequencies, but it can become a problem with high crossover frequencies. With high crossover frequencies, though, FIR filtering usually becomes a viable option, in which case you only need integer sample delays.the granularity of delay time used was much higher than the usual 1 sample resolution
EDIT to add: You might be able to get rid of that 0.18 sample delay by adjusting the crossover frequency slightly.
High all. Please understand that I do appreciate all the work that various poster have done and contributed to this (and the other related) thread. That said, and I mentioned this at least once before in on of the threads, that the issue is not so much removing GD for crossover filters, but rather for the speakers. In that regard, I have prepared a few simulations to emphasize the difference.
In the figure below the top left plot shows the crossover developed using SD and a LR4 LP filter @2000 Hz. To the right the GD of each section is shown alone with the summed response, which is linear phase, and the insert shows the impulse response.
Then, in the center left I show a hypothetical woofer and tweeter. Each of these are of minimum phase. To the right center I show the individual, filtered woofer and tweeter response, and the summed response, when each driver is connected to the filters above, again with an insert for the impulse. Note that the system doesn't even have flat response. I don't not show the GD, but it should be obvious from the impulse that the GD is not constant.
Lastly, at the bottom, I show system response when the tweeter polarity is reversed. The response is now flat, but as shown to the right, the GD is not constant for the system and the impulse, again, shows than result.
The point being that correcting the crossover induced GD variation does little for the system, and in fact, a major source of frequency dependent GD arises fro the woofer cut off.
To eliminate x-o induced frequency dependent GD for the speaker such filter functions must be used as target functions for the acoustic output of each driver. That's easiest done with FIR. Furthermore, steps must betaken to eliminate or reduce the GD associated with the woofer low frequency cut off., again, pretty strait forward with FIR.
In the figure below the top left plot shows the crossover developed using SD and a LR4 LP filter @2000 Hz. To the right the GD of each section is shown alone with the summed response, which is linear phase, and the insert shows the impulse response.
Then, in the center left I show a hypothetical woofer and tweeter. Each of these are of minimum phase. To the right center I show the individual, filtered woofer and tweeter response, and the summed response, when each driver is connected to the filters above, again with an insert for the impulse. Note that the system doesn't even have flat response. I don't not show the GD, but it should be obvious from the impulse that the GD is not constant.
Lastly, at the bottom, I show system response when the tweeter polarity is reversed. The response is now flat, but as shown to the right, the GD is not constant for the system and the impulse, again, shows than result.
The point being that correcting the crossover induced GD variation does little for the system, and in fact, a major source of frequency dependent GD arises fro the woofer cut off.
To eliminate x-o induced frequency dependent GD for the speaker such filter functions must be used as target functions for the acoustic output of each driver. That's easiest done with FIR. Furthermore, steps must betaken to eliminate or reduce the GD associated with the woofer low frequency cut off., again, pretty strait forward with FIR.
As @john k... points out nicely above, many DIYers lose sight of the forest for the trees. This means that they focus on the crossovers but forget that the drivers themselves also have a non-flat phase AKA delay characteristic. They are not resistors or pieces of wire. The loudspeaker design must be carried out by considering the responses and summed response of both the crossover filters AND the drivers. If you are interested in linear phase systems, then you should be focusing on the loudspeaker output. This implies global phase/delay EQ. Both FIR and the reverse-IIR allpass filtering I describe at the start of this thread can be used for that task.
Guys, sorry, but I'll keep saying it till the cows come home.....This implies global phase/delay EQ. Both FIR and the reverse-IIR allpass filtering I describe at the start of this thread can be used for that task.
Global filtering is simply not a good idea, either IIR or FIR, for setting up multi-way loudspeakers.
Yes.To eliminate x-o induced frequency dependent GD for the speaker such filter functions must be used as target functions for the acoustic output of each driver.
Imo. The goal is to get drivers' acoustic targets to match complementary electrical targets.
Linkwitz -Riley is the easy starting point,.... par for the course. Why do we make something so simple so hard?
1. I remember the poor man's definition of an analog low pass filter:
The higher the frequency is, the more time that frequency is delayed.
At the highest frequencies, they are delayed so very much, that they never come out.
The frequencies near the low pass bandwidth get so tired from the long time delay, that they are weakened by 3dB.
2. phase and Group Delay:
Example: different low pass filters on early CD players:
Analog low pass:
With a square wave applied, there is ringing right after the signal steps up, and ringing right after the signal steps down.
Digital low pass:
With a square wave applied, there is ringing Before the step up or down, and ringing After the step up or down.
I call those pre-step ringing, and post-step ringing.
I also call it a good example of Group Delay.
Some frequencies are early, and some are late. They do Not come out Together in a Group.
Oscilloscopes can easily show those differences in ringing, if you have a test CD with a square wave signal on it.
Digital filters back then . . . What digital filters do we have now?
Nirvana, or not Nirvana? Sounds like at least 2 opinions.
$0.04
adjusted for the new inflation rate
The higher the frequency is, the more time that frequency is delayed.
At the highest frequencies, they are delayed so very much, that they never come out.
The frequencies near the low pass bandwidth get so tired from the long time delay, that they are weakened by 3dB.
2. phase and Group Delay:
Example: different low pass filters on early CD players:
Analog low pass:
With a square wave applied, there is ringing right after the signal steps up, and ringing right after the signal steps down.
Digital low pass:
With a square wave applied, there is ringing Before the step up or down, and ringing After the step up or down.
I call those pre-step ringing, and post-step ringing.
I also call it a good example of Group Delay.
Some frequencies are early, and some are late. They do Not come out Together in a Group.
Oscilloscopes can easily show those differences in ringing, if you have a test CD with a square wave signal on it.
Digital filters back then . . . What digital filters do we have now?
Nirvana, or not Nirvana? Sounds like at least 2 opinions.
$0.04
adjusted for the new inflation rate
Yes, thank you, that seems to work really well !!EDIT to add: You might be able to get rid of that 0.18 sample delay by adjusting the crossover frequency slightly.
Yes, this seems to be the thread for that topic !!High all. ... I mentioned this at least once before in on of the threads, that the issue is not so much removing GD for crossover filters, but rather for the speakers.

Acoustic or electrical, speaker or crossover, a system is always described by transfer function and they maybe equalised by adding other suitable transfer functions to give the desired net result.In the figure below .... the GD is not constant for the system....To eliminate x-o induced frequency dependent GD for the speaker such filter functions must be used as target functions for the acoustic output of each driver.
There's (and there's been) no arguing about which method is easier .... the argument is that that's not the only method that exists. Also, when you say how a single FIR filter could do the job, you also need to mention the filter's order, (the number of delay elements it has), when compared to a classical filter.That's easiest done with FIR. Furthermore, steps must betaken to eliminate or reduce the GD associated with the woofer low frequency cut off., again, pretty strait forward with FIR.
when you say how a single FIR filter could do the job, you also need to mention the filter's order, (the number of delay elements it has), when compared to a classical filter.
An FIR filter does not have an "order" per se. It's just not the right term to use in this case.
Generally, order means the slope rolled off by a filter. However, if you get rid of the 'layman's definition', the order of a filter is the number of poles in its transfer function, irrespective of the filter being analogue or digital. An FIR filter doesn't have any poles that the user can control, as they're all at zero (causal) or infinity (non-causal), but since the poles exist nevertheless, the FIR filter does have an order and, a large FIR filter is just an FIR filter of large order.An FIR filter does not have an "order" per se.
Last edited:
@newvirus2008 FIR filters do not have poles (ignoring the meaningless ones at 0 and 1), nor orders. Poles and zeros imply a certain functional form, and a FIR kernel is just a series approximation to some time domain impulse response. It's very general and not the same as a poles+zeroes representation of a transfer function.
FIR kernel is just a series approximation to some time domain impulse response.... It's very general and not the same as a poles+zeroes representation of a transfer function.
Well that's in the time domain, in the frequency (z) domain, they're discrete transfer functions just like classical filters are continuous time ones.
https://www.mathworks.com/help/control/ref/tf.html
https://www.mathworks.com/help/control/ug/discrete-time-model-creation.html
I wrote what I've learnt, used and practised, but I think Mathworks knows how to explain better ..
I remember the poor man's definition of an analog low pass filter:
The higher the frequency is, the more time that frequency is delayed.
At the highest frequencies, they are delayed so very much, that they never come out.
That's a good one and new as well, never heard that before !!

Last edited:
You CAN make an FIR filter approximate a classical filter of order N, but it still just posing as the response of such a filter.
Edit time over.
FIR filters are not any different, just that they're not recursive, and the fact that they maybe specified using a list of coefficients doesn't mean they can't be transfer functions.
Now, you could call {A, B, C} a list of numbers, coefficients or "kernel" but it is definitely not a "series approximation" like a Taylor Series, but it's itself the finite, discrete-time, sampled "impulse response" of the filter.
You may verify this by putting in x ={ 1, 0, 0 } into the time domain difference equation to get { A,B,C } and check yourself. Note that taking the z-transform doesn't change the quantities A, B or C. The order of the filter in this case is 2 but the poles are not user controllable.
I think that settles things.
FIR filters are not any different, just that they're not recursive, and the fact that they maybe specified using a list of coefficients doesn't mean they can't be transfer functions.
Now, you could call {A, B, C} a list of numbers, coefficients or "kernel" but it is definitely not a "series approximation" like a Taylor Series, but it's itself the finite, discrete-time, sampled "impulse response" of the filter.
You may verify this by putting in x ={ 1, 0, 0 } into the time domain difference equation to get { A,B,C } and check yourself. Note that taking the z-transform doesn't change the quantities A, B or C. The order of the filter in this case is 2 but the poles are not user controllable.
I think that settles things.
Last edited:
I never said that an FIR filter "can't be transfer functions" (your hand waving words here).
And how does your FIR Transfer function produce an infinite impulse response when it has only a finite number of terms? It cannot do that, so therefore it is just an approximation to it (a truncated series).
I think that settles things.
And how does your FIR Transfer function produce an infinite impulse response when it has only a finite number of terms? It cannot do that, so therefore it is just an approximation to it (a truncated series).
I think that settles things.
The order of a FIR filter is the highest power of z in the transfer function.
H(z) = b0 + b1z^-1 + ... + bnz^-n --> nth-order
In this thread, we are discussing the use of FIR filters to emulate the responses of IIR filters. Since both are described using the term "order", either we need to determine the meaning from context, or we need some new nomenclature to distinguish between the two.
An nth-order FIR filter has n poles:
H(z) = b0 + b1z^-1 + ... + bnz^-n
= [b0 + b1z^-1 + ... + bnz^-n] / 1
= [b0z^n + b1z^(n-1) + ... + bn] / z^n
All of the poles are at z=0. They may be considered "meaningless", but they are, nonetheless, mathematically present. And if you could figure out a way to input a signal at or near z=0, they would act just like any other poles.
H(z) = b0 + b1z^-1 + ... + bnz^-n --> nth-order
In this thread, we are discussing the use of FIR filters to emulate the responses of IIR filters. Since both are described using the term "order", either we need to determine the meaning from context, or we need some new nomenclature to distinguish between the two.
An nth-order FIR filter has n poles:
H(z) = b0 + b1z^-1 + ... + bnz^-n
= [b0 + b1z^-1 + ... + bnz^-n] / 1
= [b0z^n + b1z^(n-1) + ... + bn] / z^n
All of the poles are at z=0. They may be considered "meaningless", but they are, nonetheless, mathematically present. And if you could figure out a way to input a signal at or near z=0, they would act just like any other poles.
I can agree with 'truncated approximation of a continuous time impulse response' but not with 'a series approximation to some time domain impulse response' as mentioned above.And how does your FIR Transfer function produce an infinite impulse response when it has only a finite number of terms? It cannot do that, so therefore it is just an approximation to it (a truncated series).
I think you probably misread what I wrote above, so I'm quoting myself again with some parts in bold.
..... it is definitely not a "series approximation" ... but.....the finite, discrete-time, sampled "impulse response" of the filter.
Well unfortunately, they're exactly the poles and zeroes of a transfer function, only that this transfer function is one made of z = exp (jw), vs. s = jw for continuous time. The effects of poles and zeroes are also the same, as the connection between 's' and 'z' is nothing but a simple mathematical mapping from a straight line to a circle.It's very general and not the same as a poles+zeroes representation of a transfer function.
Last edited:
In my understanding of FIR filters, they are merely approximations constructed so that the Fourier transform of the time domain response (the kernel) is sufficiently close to the desired frequency and phase response. As such they are not pole+zero representations of the filter response (from my perspective) in the complex plane whether you choose to use z or s, since the poles do not really do anything at all related to the frequency domain response. To me this makes the poles rather useless/meaningless, although as gberchin pointed out they are "mathematically" there.
Also, please excuse my misuse of the term "series approximation" above.
Also, please excuse my misuse of the term "series approximation" above.
Ah, but they are.... they are not pole+zero representations of the filter response ...
In general, the frequency response magnitude at a point on the unit circle is equal to the product of the lengths of the vectors from all of the zeroes to that point, divided by the product of the lengths of the vectors from all of the poles to that point. In the case of an FIR filter, the distance from all of the poles is 1.
Similarly, the phase response at a point on the unit circle is equal to the sum of the angles from all of the zeroes to that point, minus the sum of the angles from all of the poles to that point. In the case of an FIR filter all of the pole angles are equal.
https://www.dsprelated.com/freebooks/filters/Pole_Zero_Analysis_I.html
In my understanding of FIR filters, they are merely approximations constructed so that the Fourier transform of the time domain response (the kernel) is sufficiently close to the desired frequency and phase response. As such they are not pole+zero representations of the filter response (from my perspective) in the complex plane whether you choose to use z or s, since the poles do not really do anything at all related to the frequency domain response.
The response of an FIR filter is controlled by the location of its zeroes (poles are fixed), whereas for an IIR filter, it is controlled by both zeroes and poles. Whenever we sample an impulse response to make an FIR filter (using our favourite software) we are actually placing zeroes at the appropriate frequencies, so that the frequency response is as desired. We're however not aware of any of the pole-zero stuff because this happens automatically in the frequency domain, as the filter is being synthesised.
Fortunately, for an FIR filter, the coefficients of powers of z^-1 in the expanded form of its numerator also end up the same as its impulse response samples, which we're able to recognise easily.
Now, are we aware of any pole / zero placements while synthesising an IIR filter using the same software ? Of course not, but that's because the software does calculates it for us and returns the coefficients for the transfer function so easily.
However, the software can only conceal mathematical aspects (to make the user more comfortable) but it cannot change the number of delay elements necessary to build an FIR filter or the biquad count of an IIR filter, as these are the real aspects that relate to filter order.
- Home
- Loudspeakers
- Multi-Way
- Removing Loudspeaker Group Delay using reverse-IIR filtering