Linkwitz-Riley Allpass filters of Nth order from cascaded SVF second order sections

I am in the process of implementing a Linkwitz-Riley filter of 16th order. (LR-16, 96dB/oct) I am using 2nd order SVF sections with three modal outputs on each section. (LP, BP, HP) I am looking to obtain a 16-pole LP signal and a corresponding 8-pole AP signal. The complementary 16-pole HP signal will be calculated by subtracting the LP16 signal from the AP8 signal.

So I would like to generalize the problem and come up with a method that creates an AP filter of Nth order from the linear combination of all modal outputs (LP, BP, HP) of every cascaded 2-pole SVF section up to that order.

To better explain what I mean, let me give you the trivial example of having just a 2nd order SVF section. Let the denominators of its transfer functions be s^2+R1s+1, so the LP2 transfer function is 1/(s^2+R1s+1). Using this denominator, let's write the numerators for all other signals we can pick from the modal outputs of this SVF:

SVF LP: 1
SVF BP: s
SVF HP: s^2


The AP2 output I am looking for is:

(1 - R1 s + s^2)
----------------
(1 + R1 s + s^2)


so, if I set up a numerator as the sum of all the outputs I get something like this:

m2 1 +
m1 s +
m0 s^2


In this case the m0, m1, m2 coefficients are easily found to be:

m0 = 1
m1 = -R1
m2 = 1


so the 2nd order AP is given by:

AP2 = m0 LP2 + m1 BP2 + m2 HP2

AP2 = LP2 - R1 BP2 + HP2


This is all pretty straight forward.

However when I start cascading SVF sections to create higher order filters the situation increases in complexity really fast. That's exactly where I am stuck.

Following the steps outlined in the previous trivial example, let's now jump to the AP8 case and focus on the four SVF sections required to create it. Let the denominators of their transfer functions be s^2+R1s+1, s^2+R2s+1, s^2+R3s+1 and s^2+R4s+1 respectively. So, the corresponding LP8 transfer function is 1/[(s^2+R1s+1)(s^2+R2s+1)(s^2+R3s+1)(s^2+R4s+1)]. Using this denominator, let's write the numerators for all other signals we can pick from the modal outputs of these four SVFs:

4th SVF LP: 1
4th SVF BP: s
4th SVF HP: s^2

3rd SVF LP: (s^2+R4s+1)
3rd SVF BP: (s^2+R4s+1) s
3rd SVF HP: (s^2+R4s+1) s^2

2nd SVF LP: (s^2+R4s+1) (s^2+R3s+1)
2nd SVF BP: (s^2+R4s+1) (s^2+R3s+1) s
2nd SVF HP: (s^2+R4s+1) (s^2+R3s+1) s^2

1st SVF LP: (s^2+R4s+1) (s^2+R3s+1) (s^2+R2s+1)
1st SVF BP: (s^2+R4s+1) (s^2+R3s+1) (s^2+R2s+1) s
1st SVF HP: (s^2+R4s+1) (s^2+R3s+1) (s^2+R2s+1) s^2


The AP8 output we are looking for is:

(1 - R1 s + s^2) (1 - R2 s + s^2) (1 - R3 s + s^2) (1 - R4 s + s^2)
-------------------------------------------------------------------
(1 + R1 s + s^2) (1 + R2 s + s^2) (1 + R3 s + s^2) (1 + R4 s + s^2)


now if I set up a numerator as the sum of all the SVF modal outputs I get something like this:

m11 1 +
m10 s +
m9 s^2 +
m8 (s^2 + R4 s + 1) +
m7 (s^2 + R4 s + 1) s +
m6 (s^2 + R4 s + 1) s^2 +
m5 (s^2 + R4 s + 1) (s^2 + R3 s + 1) +
m4 (s^2 + R4 s + 1) (s^2 + R3 s + 1) s +
m3 (s^2 + R4 s + 1) (s^2 + R3 s + 1) s^2 +
m2 (s^2 + R4 s + 1) (s^2 + R3 s + 1) (s^2 + R2 s + 1) +
m1 (s^2 + R4 s + 1) (s^2 + R3 s + 1) (s^2 + R2 s + 1) s +
m0 (s^2 + R4 s + 1) (s^2 + R3 s + 1) (s^2 + R2 s + 1) s^2 =


Now I have to solve the simultaneous equations for each coefficient of the powers of s to be equal to the AP8 response I want. It should give me the values of m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11.

How do I do that?

In other words, I would like to solve the following system:

$$$$\begin{split} &m_{11} \:+ \\ &m_{10} \cdot s \:+ \\ &m_9 \cdot s^2 \:+ \\ &m_8 \cdot (s^2 + R_4 \!\cdot \!s + 1) \:+ \\ &m_7 \cdot (s^2 + R_4 \!\cdot \!s + 1) \cdot s \:+ \\ &m_6 \cdot (s^2 + R_4 \!\cdot \!s + 1) \cdot s^2 \:+ \\ &m_5 \cdot (s^2 + R_4 \!\cdot \!s + 1) \cdot (s^2 + R_3 \!\cdot \!s + 1) \:+ \\ &m_4 \cdot (s^2 + R_4 \!\cdot \!s + 1) \cdot (s^2 + R_3 \!\cdot \!s + 1) \cdot s \:+ \\ &m_3 \cdot (s^2 + R_4 \!\cdot \!s + 1) \cdot (s^2 + R_3 \!\cdot \!s + 1) \cdot s^2 \:+ \\ &m_2 \cdot (s^2 + R_4 \!\cdot \!s + 1) \cdot (s^2 + R_3 \!\cdot \!s + 1) \cdot (s^2 + R_2 \!\cdot \!s + 1) \:+ \\ &m_1 \cdot (s^2 + R_4 \!\cdot \!s + 1) \cdot (s^2 + R_3 \!\cdot \!s + 1) \cdot (s^2 + R_2 \!\cdot \!s + 1) \cdot s \:+ \\ &m_0 \cdot (s^2 + R_4 \!\cdot \!s + 1) \cdot (s^2 + R_3 \!\cdot \!s + 1) \cdot (s^2 + R_2 \!\cdot \!s + 1) \cdot s^2 = \\ &(1 - R_1 \!\cdot \!s + s^2) \cdot (1 - R_2 \!\cdot \!s + s^2) \cdot (1 - R_3 \!\cdot \!s + s^2) \cdot (1 - R_4 \!\cdot \!s + s^2) \end{split}$$$$

The mN coefficients need to be given in terms of R1, R2, R3, R4.

• I think I know what you mean, but what exactly does SVF stand for? I have never seen or heard this acronym . Dec 11 '20 at 13:56
• SVF = State Variable Filter Dec 11 '20 at 14:30
• Like this google.com/… ? This seems to create low/high/band-pass and not low/high/all-pass ? Dec 11 '20 at 15:00
• Yes, exactly SVF means State Variable Filter. The cool thing about the State Variable Filter is that it is very stable and produces three different filter outputs (lowpass, bandpass, highpass) with only a second order section. Obviously you can cascade more sections to produce steeper slopes and that's exactly what I am doing. Dec 11 '20 at 16:23
• Why don't you use proper LaTeX for the math sections and show us the exact system you want to solve?
– Royi
Dec 13 '20 at 13:18