kyma•tweaky . Share . PerfectCrossoverDiscussion

This SoundFile? contains some 3-way crossover filter networks, both Perfect, and Imperfect, as well as testers for both. They can be readily generalized to any number of bands, not just 3.

A crossover is "Perfect" if, when the gain in all 3 bands is unity, the resulting output of the combined bands is absolutely flat with frequency, in terms of amplitude response. They may or may not be flat in terms of phase response.

It turns out that any LowPass? Butterworth filter of odd-order can be mixed with a HighPass? Butterworth filter of equal order and cutoff frequency to obtain a perfectly flat response over the entire spectrum.

The usual way of creating crossover filterbanks is to simply use a LowPass?, BandPass?, and HighPass? filter in parallel, do your stuff to the separate bands, and then recombine them for output. But when you do things this way, the result is an "Imperfect" result. There will be little amplitude bumps and dips near the crossover frequencies, that result of phase cancellation or constructive phase interference when the separate bands are recombined.

The "Perfect" crossover network simply adds two additional filters in-line with the existing LowPass? and HighPass? filters to flatten out the amplitude response over the entire spectrum. Those filters might appear redundant, since the LowPass? filter at the lower cutoff frequency is put in series with a LowPass? filter at the higher cutoff frequency, and similarly for the HighPass? channel. But they really aren't redundant because, while those extra prefix filters may have virtually no effect on the amplitude response in each channel, the phase response is bent just enough by adding those extra filters, so that the resulting mix of all 3 bands sum absolutely perfectly to unity gain across the whole spectrum. Magic!

Think of it this way:

|LPF(f) + HPF(f)| = 1

where LPF(f) is any odd order LowPass? filter with cutoff frequency f, and HPF(f) is a same-order HighPass? filter with the same cutoff. The expression implies that the amplitude response is unity everywhere. But it does not imply that the phase response is flat. By no means. The only time you get both flat amplitude response and flat phase response is when the filter order is 1. All other higher order filters act in combination to produce an AllPass response with warped phase response but unity gain amplitude response.

The Imperfect Crossover attempts to do the following:

LPF(flow) + (HPF(flow) * LPF(fhigh)) + HPF(fhigh)

This is not unity gain everywhere. There are little bumps and dips around flow and fhigh.

The Perfect Crossover modifies this as follows:

(LPF(flow) + HPF(flow)) * (LPF(fhigh) + HPF(fhigh))

which has flat amplitude response everywhere because the two factors in this expression are themselves flat. Expanding this out we have

LPF(flow) * LPF(fhigh) "an LPF response"

+ LPF(flow) * HPF(fhigh) "a (notch? - wrong!) bandpass response"

+ HPF(flow) * LPF(fhigh) "a bandpass response"

+ HPF(flow) * HPF(high) "an HPF response".

The filter response in the second term would ideally pass no audio power because the LPF at the low frequency leaves nothing for the HPF at the high frequency. This is especially more true as the filter order grow ever higher. Not so true at Order = 1, but nearly perfectly true when Order = 5, as in the furnished examples.

[But it is a bandpass response, nonetheless, hopefully highly attenuated. How attenuated it is depends on the frequency separation between the two crossover frequencies, and the filter order used in each filter.

To be absolutely correct, this second term should be parallelled along with the primary bandpass section. I regret that I did not do that in my furnished examples. So feel free to make this correction.]

Hence, the result for perfect crossover is the three remaining terms -- what appear to be LowPass? and HighPass? filter channels with (apparently) redundant LowPass? and HighPass? filters, respectively, along with the original BandPass? filter formed by cascading a LowPass? at the higher cutoff with a HighPass? at the lower cutoff.

The filter tester Sounds are arranged to place a pink noise source feeding the left and right channels. The left channel has that noise going through the filterbank, while the right channel is the direct noise source. You can put the stereo output of this sound into a spectrum analyzer and take the ratio of left to right channels to see the entire transfer function and phase response of the filterbank.

Try that with the Imperfect Crossover and you'll see those amplitude bumps and dips around the two crossover frequencies. Try it again with the Perfect Crossover, and you will see a pristinely flat amplitude response with a very pronounced phase warp (for filter orders > 1). In effect we have made ourselves a perfect AllPass response in this way (in a rather roundabout fashion). The difference between this and an AllPass filter is that we can get our hands on the individual channels inside the AllPass filter and do something creative to those channels.

-- DavidMcClain - 25 Sep 2005

Correction made to the examples, and mistakes corrected as well, sheesh! Now, no matter what filter order you wish to use (as long as it is an odd value), and no matter how closely space the two crossover frequencies, this Perfect Crossover exhibits absolutely flat spectral amplitude response. With Order = 5, these crossover filters produce 30 dB/octave rolloff. Your choices are any odd multiple of 6 dB/octave, beginning with Order = 1. (6, 18, 30, 42, ... dB/octave)

The Dolby Spectral Processor has been reworked from long ago to now incorporate the correct "Perfect" crossover system. Missing from this, that is present in the actual Dolby system, is their "Sliding Filter" noise reduction, and we also do things in the 3 channels slightly differently from the way they do them. They are analog, and we are digital...

Attachment: Action: Size: Date: Who: Comment:
Perfect3-WayCrossover.kym action 50983 25 Sep 2005 - 22:31 DavidMcClain  
DolbySpectralProcessorPerfectCrossover.kym action 54626 25 Sep 2005 - 22:36 DavidMcClain  

----- Revision r1.1 - 25 Sep 2005 - 22:18 GMT - DavidMcClain
Copyright © 1999-2014 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding kyma•tweaky? Send feedback.