3-Band Linkwitz-Riley Crossover Filter Design ?

srs's icon

Does anyone know the best way to implement a 3-band Linkwitz-Riley crossover filter in Max?

I've made a 3-band crossover using 3rd order Butterworth filters based on the Crossover Filter Design video thread

https://cycling74.com/tutorials/crossover-filter-design-video-tutorial

https://cycling74.com/tutorials/crossover-filter-design-video-tutorial/replies/1#reply-600c79c279c5007c3e0651df

3-band linkwitz-riley crossover.maxpat
Max Patch

The sum of the three bands sounds quite close to the original signal but when testing via phase inversion, they are not identical.

The patch is based on the diagram above. Is this a correct implementation of the Linkwitz-Riley design? If not, is there a correct way to create a transparent 3-band crossover filter in Max?

janpanis's icon

LR = 2 butterworth in series

Roman Thilenius's icon

"The sum of the three bands sounds quite close to the original signal but when testing via phase inversion, they are not identical."

because it is a filter.

srs's icon

So is it technically impossible to create a completely transparent 3-band cross over filter? One that not only sounds like the original signal but would pass the test when comparing via phase inversion...

I had never considered that! I just checked Fabfilter's crossover filter in Saturn with the distortion disabled so it's just splitting the signal into three bands and it sounds almost identical to the original signal but also doesn't pass the phase inversion test, even with High Quality and Linear Phase mode enabled.

Roman Thilenius's icon


oh, it will sound like the original - until you mix it together with the input (which you dont do with crossovers in the physical world. so only for EQ´s and stuff it is a problem. which suggests to build parallel EQ designs to reduce it.)

a working "test" would be to split the bands, leave all gains at 1.0, and then move the frequencies.

a counter test would be to do the same with a filter topology other than butterworth and compare what happens there.

as less as i know about it, but one thing is clear: there is no perfect filter.
no perfect flat passband, no perfect shaped transition band, no perfect phase response, no infinite steepness, no ripple- or group delay free behaviour.
they are only different, so that you can choose which one to use in which situation.