Doug Self's Active xo book: allpass filters question

I have read various things on allpass filters for phase alignment, including

I'm telling you all this just to show that I'm not a complete newb to the concepts.

Of all these sources, Doug Self's book is easily the most detailed and gives the most thorough treatment. In fact, one can clearly see where Rod Elliot stopped in his analysis of allpass filters, and Doug Self takes it further ahead and explains what Rod observes without referring to Rod specifically. Very useful indeed.

My post is about a very specific and fundamental doubt about Doug Self's Chapter 10. So if you have not read that book, this question may not make sense to you.

What I understand is the following:
  • If I split the frequency response 2 ways, then it's almost always the HF branch which needs the all-pass filter, because that's the one which needs to be delayed, since that driver's acoustic centre is closer to the ear
  • If I look at all the allpass filters which Doug Self describes in such beautiful detail, starting with first-order and going up to 5th and 6th order, etc, then they all give me the delay (in uSec) I've designed for, in the low frequencies, upto the "knee" with a flat phase and delay, and then the delay goes into an S-shaped curve above that point. The steepness of the curve depends on the order of the filter, but this is the general pattern.
  • Doug Self explains that we need to ensure that the delay is constant or hardly changing in the passband of the crossover branch, and if the delay is within 10% of the prescribed amount at the Fc, and is changing by 50% when the transfer function of the branch is 40dB or more reduced (due to the xo slope), then we're fine. Changes in phase or delay won't be audible if we're that many dB down in SPL.

This is all very logical and sensible. But my doubt comes from the fact that all the allpass filter circuits Doug Self shows are those which have a flat delay graph at low frequencies (see Figure 10.19, 10.23, 10.30, as examples) and show sharp delay and phase changes at the higher frequencies. Then he says that these changes are not important because they are "beyond" the Fc. This would be true if he were to apply the delay filter to the low-pass branch but actually we almost always need to apply the delay to the high pass branch, don't we? So, how can he say that "it's ok that the delay changes above the knee, after all the SPL will drop sharply beyond the knee anyway." This is just not true if we apply the delay to the high-pass branch. What we really need is the opposite shape of delay curve from Figures 10.19, 10.23 or 10.30. We need a delay curve which has a rising S shape in the lower frequencies and show a flat delay curve above the knee to 20KHz.

In other words, in real life, we need delay filters which have a series cap and a shunt resistor at the input to the opamp, not the series resistor and shunt cap. If you use Doug Self's language, then as per his Figure 10.7, we always need the CR filter type, not the RC filter type, because we always want the delay to be steady from the knee frequency to the right edge of the SPL graph, since we always need to apply the delay to the high-pass branch.

Why does Doug Self discuss all his examples the other way round, as if it's okay to have fluctuating delay and phase changes above the knee? Does he think we want to apply the delay to the low-pass branch?

I hugely respect Doug Self, own four of his books, and I can't believe he's made a fundamental mistake like this. I've been struggling to understand active filters, and I'm sure it's I who have goofed up. Can you please help me understand my mistake?

(All my references to Doug Self's book are to the 2011 edition. I believe there was a second edition 6 years after this?)
 
Last edited:
The lower branch can be the one to delay. Consider a waveguide and direct radiator. I'd guess this to be a common case.

On the other hand there is a more traditional horn system to consider, yes?
I'm not clear what you're referring to here, but all conventional box speakers I've seen require the output of the high-pass branch (the tweeter, in a TM design) to need the delay filter.
 
In other words, in real life, we need delay filters which have a series cap and a shunt resistor at the input to the opamp, not the series resistor and shunt cap. If you use Doug Self's language, then as per his Figure 10.7, we always need the CR filter type, not the RC filter type, because we always want the delay to be steady from the knee frequency to the right edge of the SPL graph, since we always need to apply the delay to the high-pass branch.


the delay curve for both ccts are the same, but one inverts the signal.
 
What I understand is the following:

If I split the frequency response 2 ways, then it's almost always the HF branch which needs the all-pass filter, because that's the one which needs to be delayed, since that driver's acoustic centre is closer to the ear
No. The delay contribution from the crossover filters is often much greater than the delay arising from physical offset between driver's acoustic centers.

For a typical pair of highpass and lowpass filters (e.g. your crossover) the delay for the tweeter (highpass) section in its passband (meaning not around the crossover point) will be LESS than for the woofer (the lowpass) in its passband. This is a property of crossover almost without exception. Also, almost without exception, there will be a peak in the group delay of the system at the crossover point. The higher the order, the higher this group delay peak is above the nominal woofer and tweeter group delay levels.

If I look at all the allpass filters which Doug Self describes in such beautiful detail, starting with first-order and going up to 5th and 6th order, etc, then they all give me the delay (in uSec) I've designed for, in the low frequencies, upto the "knee" with a flat phase and delay, and then the delay goes into an S-shaped curve above that point. The steepness of the curve depends on the order of the filter, but this is the general pattern.
Correct. You can envision the delay vs frequency "response curve" of an allpass filter to be much like what the SPL response of a lowpass filter looks like. There is a "Q" for the lowpass filter that can make the knee (where it starts to roll off) gentle, or there can be a peak at the corner frequency. The group delay "profile" of an allpass filter has these same kind of shapes, roughly speaking. The group delay will always drop down to zero above the corner frequency of the allpass filter.

Doug Self explains that we need to ensure that the delay is constant or hardly changing in the passband of the crossover branch, and if the delay is within 10% of the prescribed amount at the Fc, and is changing by 50% when the transfer function of the branch is 40dB or more reduced (due to the xo slope), then we're fine. Changes in phase or delay won't be audible if we're that many dB down in SPL.
The goal is to get phase alignment at the crossover point. That is the basis of these heuristics.


This is all very logical and sensible. But my doubt comes from the fact that all the allpass filter circuits Doug Self shows are those which have a flat delay graph at low frequencies (see Figure 10.19, 10.23, 10.30, as examples) and show sharp delay and phase changes at the higher frequencies. Then he says that these changes are not important because they are "beyond" the Fc. This would be true if he were to apply the delay filter to the low-pass branch but actually we almost always need to apply the delay to the high pass branch, don't we? So, how can he say that "it's ok that the delay changes above the knee, after all the SPL will drop sharply beyond the knee anyway." This is just not true if we apply the delay to the high-pass branch. What we really need is the opposite shape of delay curve from Figures 10.19, 10.23 or 10.30. We need a delay curve which has a rising S shape in the lower frequencies and show a flat delay curve above the knee to 20KHz.

In other words, in real life, we need delay filters which have a series cap and a shunt resistor at the input to the opamp, not the series resistor and shunt cap. If you use Doug Self's language, then as per his Figure 10.7, we always need the CR filter type, not the RC filter type, because we always want the delay to be steady from the knee frequency to the right edge of the SPL graph, since we always need to apply the delay to the high-pass branch.

Why does Doug Self discuss all his examples the other way round, as if it's okay to have fluctuating delay and phase changes above the knee? Does he think we want to apply the delay to the low-pass branch?

I hugely respect Doug Self, own four of his books, and I can't believe he's made a fundamental mistake like this. I've been struggling to understand active filters, and I'm sure it's I who have goofed up. Can you please help me understand my mistake?

Like I mentioned above, the group delay of an allpass filter has a shape like the SPL of a lowpass filter. A lowpass filter is flat around DC and above where you reach its Fc the SPL falls back to zero. This is the only shape you can get from a lowpass filter. And it's the only shape you can get from an allpass filter for its group delay as well.

Given that, unless you use some incredibly high order (like 70th order!) allpass filters the best you can hope for with a first or second order allpass is to use the delay from the allpass filter to align tweeter and woofer around the crossover point. That's doing "phase alignment" in my parlance, to get woofer and tweeter to sum properly in the transition zone of the crossover. It's also not the only way to do it.

On the other hand, there is no practical way to do delay alignment of the tweeter across its passband (e.g. far above the crossover point). This is because of the property of the allpass filters (of low order) to fall back to zero delay above their Fc. And if you attempt to naively do that with an allpass you will boost the level of the gruop delay peak for the system, by boosting up the group delay of the tweeter in its crossover point. For this reason, allpass delay applied to the tweeter is not all that useful.

Doug Self is an amazing designer of audio electronics, but this does not carry over to loudspeakers. His entire book is really about how to design this or that circuit for filtering, EQ, etc. On the electronics side of the coin, his book is awesome. He has many practical tips and sometimes goes to great lengths to get magnitude and phase to work out to high precision. To his detriment, there is little mention (if any as I recall) of a drivers own magnitude and phase contributions to the loudspeaker's response. It's essential to know the driver responses to a high level of precision, and are just as important as filter stages in the overall crossover design. You have to design the system of drivers+crossover filters together as a whole to do it right.
 
  • Like
Reactions: gorgon53
the delay curve for both ccts are the same, but one inverts the signal.
Yes, this was the key misunderstanding I had. I understand now, thanks to your reply and Charlie Laub's. Thanks a lot.

No. The delay contribution from the crossover filters is often much greater than the delay arising from physical offset between driver's acoustic centers.
Yes, I know, for an LR4, there's a full wavelength (at Fc) difference in the delays. The woofer is "behind" the tweeter in terms of time by one wavelength of Fc.

For a typical pair of highpass and lowpass filters (e.g. your crossover) the delay for the tweeter (highpass) section in its passband (meaning not around the crossover point) will be LESS than for the woofer (the lowpass) in its passband. This is a property of crossover almost without exception. Also, almost without exception, there will be a peak in the group delay of the system at the crossover point. The higher the order, the higher this group delay peak is above the nominal woofer and tweeter group delay levels.
Yes, I'm aware of this.

Correct. You can envision the delay vs frequency "response curve" of an allpass filter to be much like what the SPL response of a lowpass filter looks like.
This was the nub. This was the root of my misunderstanding. The delay vs frequency curve in both RC allpass and CR allpass filters are always in the shape of a lowpass filter. I had thought that the shape of the delay curve of a CR allpass would be like a highpass filter's SPL.

The goal is to get phase alignment at the crossover point. That is the basis of these heuristics.
Understood.

And now that I've understood it, I can see why analog active allpass filters will never give me the delay curve which a digital active xo's delay setting will give me -- a delay which is constant in the passband of the tweeter.

Like I mentioned above, the group delay of an allpass filter has a shape like the SPL of a lowpass filter. A lowpass filter is flat around DC and above where you reach its Fc the SPL falls back to zero. This is the only shape you can get from a lowpass filter. And it's the only shape you can get from an allpass filter for its group delay as well.
Now that I've understood this, I still don't understand why Doug Self's descriptions were saying "it's ok to let the delay change with frequency, because at those frequency regions the SPL is dropping anyway because of the filter." Actually, that's the region when the SPL is not dropping at all -- it's flat, because the delay filter is always applied to the tweeter. So, my question about Doug Self's explanation remains.

Given that, unless you use some incredibly high order (like 70th order!) allpass filters the best you can hope for with a first or second order allpass is to use the delay from the allpass filter to align tweeter and woofer around the crossover point.
Yes, I understand this too. Now. Thanks.

That's doing "phase alignment" in my parlance, to get woofer and tweeter to sum properly in the transition zone of the crossover. It's also not the only way to do it.
You know what, all this is making me think. If this is all I am getting using an all-pass filter in my active xo, I don't see why I'll use an allpass filter at all. I've been designing speakers for more than a decade, with passive xo, and I always get the two drivers to be phase coherent by tweaking the Q of the LPF and HPF at the Fc. I guess all of us who have been designing traditional passive xo with old tools like Speaker Workshop have been doing this, using the optimisation feature which tweaks the component values to make the acoustic curve (not the electrical curve) match at the Fc.

I can do the same with a tool like VituixCAD and an active analog line level xo, right? I can easily optimise the filters' transfer functions to optimise the final acoustic curves to match the theoretical LR2 or LR4 or whatever, and then I'll get perfect phase coherence (or alignment, whichever is the right word) at the Fc. So, I'll end up with electrical transfer functions which will not be textbook Bessel or LR or whatever, but the acoustic curves will be (almost) textbook.

If I was using a digital active xo, then it would be a different thing -- maybe I'd use a delay setting to get uniform delay through the tweeter's passband. That's something I now realise I can't get with an analog active xo and its allpass filters.

And if you attempt to naively do that with an allpass you will boost the level of the gruop delay peak for the system, by boosting up the group delay of the tweeter in its crossover point. For this reason, allpass delay applied to the tweeter is not all that useful.
I didn't get this last bit. I thought you can use an allpass delay to get the tweeter to phase-align with the midbass at the Fc, can't you? Also, if you want to get your delay by cascading, say, three or four 2nd order allpass stages, you can actually get each one's delay "knee" to be quite far away from the Fc, so the group delay peak won't come at Fc, right? I think this bit is well illustrated by Doug Self's examples.

Doug Self is an amazing designer of audio electronics, but this does not carry over to loudspeakers. His entire book is really about how to design this or that circuit for filtering, EQ, etc.
Yes, you're right, but I find his book a fantastic collection of circuits which I can then feed into an active xo sim software like VituixCAD and sim the final acoustic curves to within a millimetre of what I want. This will of course mean that I use Doug Self's topologies, but use his formulae to calculate values just as a first approximation. Once these values are entered into the sim software, the values get tweaked nicely.

It's essential to know the driver responses to a high level of precision, and are just as important as filter stages in the overall crossover design. You have to design the system of drivers+crossover filters together as a whole to do it right.
Yes, of course. If you can't model the actual measured SPL curves, you can't design the final active xo.

Thanks again. Was very helpful. It cleared the roadblock completely.

I have three questions:
  • Am I right that I can do away with the allpass filter completely for my active xo if I optimise the transfer function using a speaker sim software as described?
  • Why does Doug Self say that the change in delay as you go above the Fc doesn't matter? It's bang in the passband of the tweeter, and the delay circuit is (almost) always applied to the HPF branch. Does his assertion mean that smooth changes in delay of a speaker driver in its passband are not audible?
  • If you were designing a woofer-to-midrange xo at a low frequency like 150Hz (where both were to be mounted on the same baffle), how would you do phase alignment in an active xo? Will the relative phase data of the nearfield SPL measurements of the two drivers be accurate? If not, will the only way to align their phases be to build an allpass filter with a pot and tweak the pot with a series of measurements? Or will phase alignment not matter at such low frequencies?
 
Sorry if I make an offtopic(?) comment, but in these days with cheap DSP, why use allpass, -instead just add a delay to compensate for the driver offsets?

Digital (frequency independent) delay and allpass (frequency dependent) delay are both tools in the toolbox. But neither of them are exactly what is needed. This is because the delay that you would like to equalize of the loudspeaker (in total) or any one or more individual drivers is not frequency independent.

Let me give you an example.

I have attached the some plots of the group delay of the NTM crossover of order 4 (filters only, no drivers included). I happen to have a sim of it so I am using it as an example, but this would also apply to the LR4 crossover from which the NTM is derived.

The "system" of lowpass plus highpass is characterized by a low peak in teh group delay at the crossover frequency of 1k Hz, with the woofer (<1kHz) having more delay than the tweeter (>1kHz). The individual group delays for woofer and tweeter can look quite different. For example, I disabled the woofer output and then calculated the group delay for the tweeter only (attached). You can see that the tweeter's group delay contributes to the peak at 1kHz, and between about 1kHz and 2-3kHz the GD is dropping down to the passband level from the peak at 1kHz. You can more or less ignore the rising part below 1kHz or so, because this will be "weighted" along with the SPL when both drivers are enabled. But it is good to keep it in mind when planning group delay EQ strategies.

What happens if you try to add digital (frequency independent) delay to the tweeter to match the passband group delay to the woofer group delay? This will make the group delay peak at 1kHz higher, and that is definitely not helping the situation. And the same goes for analog allpass. Neither of these approaches are a great solution.

The best and most general way to achieve flat group delay for a loudspeaker system is to first develop the crossover, then measure the group delay, then use an FIR filter to flatten the group delay profile for the entire loudspeaker and crossover system. The FIR filter can be inserted upstream from the crossover. You can also flatten the group delay of a loudspeaker with a passive crossover in this manner. An FIR filter can be designed to have the "inverse" of the group delay profile of the loudspeaker as a function of frequency. This results in flat group delay and is easy to achieve down to the 50-100Hz region. Below that the woofer will have a sharply rising group delay curve and an FIR filter will require many, many taps to be free of ripple, etc. Above 100Hz you can get perfect "linear phase" (same as flat group delay) response using this approach.
 

Attachments

  • NTM LP plus HP.PNG
    NTM LP plus HP.PNG
    30.4 KB · Views: 335
  • NTM HP only.PNG
    NTM HP only.PNG
    36.6 KB · Views: 352
Last edited:
with passive xo, and I always get the two drivers to be phase coherent by tweaking the Q of the LPF and HPF at the Fc.
And it still works here.
Or will phase alignment not matter at such low frequencies?
If you have been working on your drivers individually and find there is a delay, you may find it easy to blend phase with an all-pass filter without needing to resort to FIR. If you decide to use FIR to deal with group delay, this can be a separate process.
 
The best and most general way to achieve flat group delay for a loudspeaker system is to first develop the crossover, then measure the group delay, then use an FIR filter to flatten the group delay profile for the entire loudspeaker and crossover system. The FIR filter can be inserted upstream from the crossover. You can also flatten the group delay of a loudspeaker with a passive crossover in this manner. An FIR filter can be designed to have the "inverse" of the group delay profile of the loudspeaker as a function of frequency. This results in flat group delay and is easy to achieve down to the 50-100Hz region. Below that the woofer will have a sharply rising group delay curve and an FIR filter will require many, many taps to be free of ripple, etc. Above 100Hz you can get perfect "linear phase" (same as flat group delay) response using this approach.

That approach makes good sense to me if you are using a passive crossover and one channel of amplification for the whole speaker.

As one channel of amplification for the entire speaker is definitely a common real world constraint...

But if multi-amping is available, which is nearly universally accepted as better than single channel amplification, I strongly think it is best not to use a FIR filter as an entire speaker adjustment prior to xovers.

Much better practice ime/imo, is to use linear phase xovers, and driver by driver mag and phase correction, each driver with its own FIR & amp channel.

Very best practice just comes down to if both multi-channel amp and multi-channel FIR are available , when we can......ime/imo.
 
That approach makes good sense to me if you are using a passive crossover and one channel of amplification for the whole speaker.

Works just as well if you have a multi-way, active loudspeaker... There is an input to the crossover, and that is where you can place your lone FIR filter (one per input channel).

I was mainly trying to point out that you do not need to go "all in" with FIR and do all the filtering using FIR filters to get linear phase or flat group delay. I don't really see the point in imitating analog or IIR filters with linear phase FIR filters throughout, when one "group delay EQ" FIR filter applied to the input will get you the same result.

Honestly, how you go about it is totally up to your own preference.
 
Sorry if I make an offtopic(?) comment, but in these days with cheap DSP, why use allpass, -instead just add a delay to compensate for the driver offsets?
What's an off-topic question now and then between friends? 😀

I'm familiar with DSP xo, I designed the Darbari in 2014 with six external amp channels and a MiniDSP 4x10HD. Spectacular performance, but I'm tired of all the wires and boxes. Right now, I'm building smaller systems, most of which are 3-way with very low Fc between (large) midrange and (larger) woofer, and I thought it would be nice to have a simple, single-board, 2-way active xo to embed inside each speaker enclosure. There's no fun building a passive xo for, say, 150Hz, it degrades the sound to the point where even fans of passive xo want a "powered woofer" (see Troels Gravesen's larger speakers). I wanted a small, affordable 1x2 or 1x3 DSP module which would have analog circuits at least as good as the MiniDSP 4x10HD and could be embedded inside my speaker enclosure, but I do not know of any. The only option is to use the amp+DSP modules from Hypex or MiniDSP-ICEpower. I think those modules are good, but I am exploring the option of a separate active xo module if possible. How complex can it be to design and build a small simple one of your own, with a book like Doug Self's Active XO, the newer high-end 4-opamp chips, easy PCB design (KiCAD) and outsourced top-notch PCB fabs? (These options were not there even as late as 2012 when I started designing the Darbari.) Another reason is just to avoid the redundant ADC-DAC step which a DSP xo forces on me -- my sources generate excellent analog signals, and I'd like to keep them analog if a simple, easy, analog active xo can be used.

If you haven't seen this, here's an article on multiple all-pass ....
Frequency Delay Dispersion | audioXpress

Also, I remember this guy having put together presentations on implementing multiples Timo's World all around the globe | allways havin' fun @ the job
Will definitely look, thanks. Hadn't seen these before.

Imho, what we really need are INVERSE all-pass filters, where HF phase leads LF ...now that would be truly useful 😀
Exactly! A lot of my misunderstanding and study came because I thought that such a thing was possible. 😕
 
Let me give you an example.

Thank you for taking the time to educate me! 🙂

@ tcpip:
I understand completely. I have been playing around with active too, having a stack of amplifiers, a mess with speaker and signal wiring etc. However I used the PC for playback and DSP (EQ APO) so that part was easier.
But, with room correction etc, It was a mess to re-tune everything as soon as I wanted to try other speakers, or just move them a little. I'm now running only a JLH class A and passive XO.
I must say though, that it's impressive how well a 'mediocre' speaker can sound after applying all the driver EQ, offset delays and tuning XO points/slopes. Very much bang for the buck! I did try allpass in this setup just for fun, and honestly I can't say I could hear any difference..

I have never tried allpass on passive XO, I have only seen Troels trying it in some of his projects, but as far as I can remember he usually rejected the option.
 
Last edited:
I have never tried allpass on passive XO, I have only seen Troels trying it in some of his projects, but as far as I can remember he usually rejected the option.
I've used a passive allpass filter on a few occasions (properly implemented and measured) There is nothing inherently wrong with it. There's no signal degradation from the complexity of the circuit. Basically when it's right, it sounds right. I tend to shy away from them where I can get the job done in other ways with less components (for simplicity, not a difference in sound), and allpass is a tad fiddly and untidy (in my mind).
 
Digital (frequency independent) delay and allpass (frequency dependent) delay are both tools in the toolbox. But neither of them are exactly what is needed. This is because the delay that you would like to equalize of the loudspeaker (in total) or any one or more individual drivers is not frequency independent.
Understood from your very nice example.

What happens if you try to add digital (frequency independent) delay to the tweeter to match the passband group delay to the woofer group delay? This will make the group delay peak at 1kHz higher, and that is definitely not helping the situation. And the same goes for analog allpass. Neither of these approaches are a great solution.
Understood. So, basically, because of this kind of connection between frequency and phase, analog circuits can't give you a clean answer.

BTW, after your post, I went and read up the NTM crossover page at Rod's site. Interesting. I went over to one of my own designs and looked at the group delay graphs. For a fairly steep 6th order two-way xo (left side of image), the group delay graph is shown in the top right-hand corner. I guess there's a clear correlation between the SPL curve and the group delay curve -- your NTM has a dual-hill SPL curve and so does your group delay curve.
 

Attachments

  • gd-plot-example.PNG
    gd-plot-example.PNG
    213 KB · Views: 219
Last edited:
I have never tried allpass on passive XO, I have only seen Troels trying it in some of his projects, but as far as I can remember he usually rejected the option.
I too have never considered an allpass passive xo block, but I realised, after reading Charlie's, AllenB's and other responses here, that the allpass block in active xo was just a way to get phase alignment between two drivers, and that's something all my old passive crossovers have done till now. I get a 20dB or deeper reverse-null notch from my simple 2-way xos, and I've done from 2nd order to 6th order xo's. In order to do this, one needs to use a speaker xo simulation software (VituixCAD, XSim, take your pick) and use actual measured speaker responses where the time delays between the drivers are already present in the measurements. Once you have such a sim software, you can tweak the LPF and HPF to get perfect phase alignment at the xo point.

I guess I'll just continue to do this for my analog active xo, since VituixCAD lets me sim active blocks.
 
Last edited:
Zaph has done it also (so has muggins here). On the rare occasion passive all pass delay circuits are used, it's generally for low order filters (1st order and LR2) as an electrical alternative to a tilted or stepped front baffle. There's little advantage to using them with higher order filters given the narrower transition band and greater phase rotation inherent to the filters.