N-band Linkwitz-Riley crossovers
-
- KVRian
- Topic Starter
- 573 posts since 1 Jan, 2013 from Denmark
Hey,
So to design a single crossover with 12 db/oct you need a two-pole lowpass and a two-pole highpass with Q = 0.5 in parallel. These can then be summed by flipping the sign of the highpass output.
What if you have multiple crossovers? Do you just cascade the sections, or do they still need to be run in parallel (requiring bandpasses?)?
Bonus question: Two cascaded one-poles create a two-pole lowpass with Q = 0.5. How would you design the high-pass counterpart from one-poles?
Thanks for any knowledge
So to design a single crossover with 12 db/oct you need a two-pole lowpass and a two-pole highpass with Q = 0.5 in parallel. These can then be summed by flipping the sign of the highpass output.
What if you have multiple crossovers? Do you just cascade the sections, or do they still need to be run in parallel (requiring bandpasses?)?
Bonus question: Two cascaded one-poles create a two-pole lowpass with Q = 0.5. How would you design the high-pass counterpart from one-poles?
Thanks for any knowledge
- KVRian
- 509 posts since 1 May, 2006 from lancaster, pa
The crossover filters would be in parallel, since they are all feed by the same input signal. So the low band would just have a low pass filter applied. The mid band would have a low pass and high pass (with flipped phase if using a LR filter). The high band would have a high pass filter applied. I think you could probably construct the crossover differently, but I don't think there would be any significant benefit.
I am not sure about the one-pole question. I think it would be easier to just construct a normal two-pole filter with the appropriate q.
This page helps me figure out some of this stuff (http://freeverb3vst.osdn.jp/iir_filter.shtml). I hope it is helpful.
I am not sure about the one-pole question. I think it would be easier to just construct a normal two-pole filter with the appropriate q.
This page helps me figure out some of this stuff (http://freeverb3vst.osdn.jp/iir_filter.shtml). I hope it is helpful.
-
- KVRAF
- 7400 posts since 17 Feb, 2005
They can be routed in serial. If you choose to output the lowest LP first, you'll route that combo's HP to the next LP/HP combo input. Then gain adjustment is made on the LP outputs only.
-
- KVRian
- Topic Starter
- 573 posts since 1 Jan, 2013 from Denmark
Thanks guys. I tested out both approached and neither worked in the case of 4 bands - both works for the case of 3 bands (that is, the output is a flat all-pass response when summed).
Here are my routings for the serial/cascaded approach:
Yielding this response:
For the parallel case:
Yielding this response (dip is 2x larger):
Here are my routings for the serial/cascaded approach:
Code: Select all
hp - inverter - HIGH BAND -
/ |
X-over @ 6000: |
/ \ |
hp lp --- HIGH MID BAND ---- |
/ \|
/ +--- SUMMED OUTPUT ---
X-over @ 3000: /|
/ \ / |
hp lp - inverter ---------- LOW MID BAND ----- |
/ |
X-over @ 200: |
\ |
lp --------------------------------------- LOW BAND ------------
For the parallel case:
Code: Select all
hp @ 6000 - inverter ------------ HIGH BAND --------
/ |
/ hp @ 3000 - lp @ 6000 ---------- HIGH MID BAND --- |
/ / \|
------- +--- SUMMED OUTPUT
\ \ /|
\ hp @ 200 - lp @ 3000 - inverter - LOW MID BAND --- |
\ |
lp @ 200 ------------------------- LOW BAND --------
- KVRian
- 509 posts since 1 May, 2006 from lancaster, pa
Wow, something weird is happening there. That dip looks pretty broad to be a phase issue. It also is centered in a way that looks like the High Mid band is not working correctly.
Can you quickly enable a "solo function" to check that each band is working correctly?
Can you quickly enable a "solo function" to check that each band is working correctly?
-
- KVRAF
- 7400 posts since 17 Feb, 2005
Not sure if I did mine correctly, since I get a tilted slope towards nyquist (when adjusting gains), but I put the inverter on the HP outputs. I haven't attempted the parallel network yet, but something looks strange about the inverters in your diagram.
-
- KVRian
- Topic Starter
- 573 posts since 1 Jan, 2013 from Denmark
Yeah, here are the bands for reference for the parallel routing:
This band doesn't reach the same levels as the others, but that is expected since the low pass and the high pass alter the volume at the centre. I tried gain compensating it for fun, but it introduced small errors at the cross overs..
Here's for the serial case - notice how the higher bands have sharper slopes on the left edges, as they've passed through multiple high-passes:
This band doesn't reach the same levels as the others, but that is expected since the low pass and the high pass alter the volume at the centre. I tried gain compensating it for fun, but it introduced small errors at the cross overs..
Here's for the serial case - notice how the higher bands have sharper slopes on the left edges, as they've passed through multiple high-passes:
-
- KVRian
- Topic Starter
- 573 posts since 1 Jan, 2013 from Denmark
The way I look at it, for the serial network, every other stage switches the phase at the cross-over by 180 degrees. Inverting every HP output yields the same result.camsr wrote:Not sure if I did mine correctly, since I get a tilted slope towards nyquist (when adjusting gains), but I put the inverter on the HP outputs. I haven't attempted the parallel network yet, but something looks strange about the inverters in your diagram.
- KVRian
- 509 posts since 1 May, 2006 from lancaster, pa
I think this is the previous thread (viewtopic.php?f=33&t=445272).
I tried it myself and I get the same result. I think all of the phase shifts start to produce null points in the frequency without other phase compensation. I guess it depends on how close the frequency points are to each other.
I tried it myself and I get the same result. I think all of the phase shifts start to produce null points in the frequency without other phase compensation. I guess it depends on how close the frequency points are to each other.
-
- KVRist
- 284 posts since 14 Sep, 2006
You'll need allpass sections to compensate for the phase response that every split causes (that run on the parallel branch). Without that, you'll get these phase cancellation issues unless the cross-over frequencies are sufficiently far apart.
- KVRian
- 1091 posts since 8 Feb, 2012 from South - Africa
Yip, djeroen is correct, you need to adjust the phase. Remember that even for a 2band 12dB x-over, the summed output has an allpass response. In simple terms:
This is for 2x x-over frequencies (3band splitter - cascade)
Hi Band(10kHz)
Mid Band (1kHz) -> Allpass(10kHz)
Low Band(1kHz) -> Allpass(10kHz)
Basically, for every extra split, you add just add an allpass(same Q and order btw) into the lower leg(s). It can get crazy expensive above 4 bands. In one of my projects where the x-over frequency is a modulation target I used TPT/ZDF SV filter as the splitters, and it turned out to be slightly less CPU compared to the classic Biquad.
Regards
Andrew
This is for 2x x-over frequencies (3band splitter - cascade)
Hi Band(10kHz)
Mid Band (1kHz) -> Allpass(10kHz)
Low Band(1kHz) -> Allpass(10kHz)
Basically, for every extra split, you add just add an allpass(same Q and order btw) into the lower leg(s). It can get crazy expensive above 4 bands. In one of my projects where the x-over frequency is a modulation target I used TPT/ZDF SV filter as the splitters, and it turned out to be slightly less CPU compared to the classic Biquad.
Regards
Andrew
-
- KVRian
- Topic Starter
- 573 posts since 1 Jan, 2013 from Denmark
Thanks, the allpass filters was indeed the missing piece. I couldn't get the parallel routing to work, I would always end up with a bump (?) at the high-mid cross-over:
However the serial case worked to within numerical precision. If you look at the bands I posted above, the serial case' next band work with the 'remainder' of the energy from the previous band, while the parallel does not - it just works on a specific region so I believe the error will get worse as you add more bands.
Anyway, here are the update diagrams. Serial:
Parallel:
I think the best explanation of this system, in layman's terms, is that each band's phase response needs to be as if it went through all the cross-overs. I also - now - don't see how the parallel routing could ever work.
However the serial case worked to within numerical precision. If you look at the bands I posted above, the serial case' next band work with the 'remainder' of the energy from the previous band, while the parallel does not - it just works on a specific region so I believe the error will get worse as you add more bands.
Anyway, here are the update diagrams. Serial:
Code: Select all
hp - inverter - HIGH BAND ---------
/ |
X-over @ 6000: |
/ \ |
hp lp ------------ HIGH MID BAND --- |
/ \|
/ +--- SUMMED OUTPUT ---
X-over @ 3000: /|
/ \ / |
hp lp - ap @ 6000 - inverter -------- LOW MID BAND --- |
/ |
X-over @ 200: |
\ |
lp - ap @ 3000 -- ap @ 6000 ------------------------ LOW BAND ----------
Code: Select all
hp @ 6000 - ap @ 200 - ap @ 3000 - inverter -- HIGH BAND -------
/ |
/ hp @ 3000 - lp @ 6000 - ap @ 3000 ----------- HIGH MID BAND -- |
/ / \|
------- +--- SUMMED OUTPUT
\ \ /|
\ hp @ 200 - lp @ 3000 - ap @ 6000 - inverter - LOW MID BAND --- |
\ |
lp @ 200 - ap @ 3000 - ap @ 6000 - LOW BAND --------------------
-
- KVRian
- Topic Starter
- 573 posts since 1 Jan, 2013 from Denmark
Indeed, it makes the split less sexy than I thought it would. I also use SVFs so you get the lp+hp from the same filter, which makes the situation a bit better.Ichad.c wrote:Basically, for every extra split, you add just add an allpass(same Q and order btw) into the lower leg(s). It can get crazy expensive above 4 bands. In one of my projects where the x-over frequency is a modulation target I used TPT/ZDF SV filter as the splitters, and it turned out to be slightly less CPU compared to the classic Biquad.
- KVRian
- 1091 posts since 8 Feb, 2012 from South - Africa
I think(unverified) you can save an allpass if you sum the Low & Low Mid Band and then apply the ap @ 6000.Mayae wrote:Indeed, it makes the split less sexy than I thought it would. I also use SVFs so you get the lp+hp from the same filter, which makes the situation a bit better.Ichad.c wrote:Basically, for every extra split, you add just add an allpass(same Q and order btw) into the lower leg(s). It can get crazy expensive above 4 bands. In one of my projects where the x-over frequency is a modulation target I used TPT/ZDF SV filter as the splitters, and it turned out to be slightly less CPU compared to the classic Biquad.