Why not IIR filters + a global phase linearization by FIR

Here's a second order derived Bessel subtractive crossover at 100Hz as per Greg Berchin. 2.77ms delay.
100Hz 2nd_order_Bessel 2.77ms Subtractive G_Berchin.PNG
 

Attachments

  • 100Hz 2nd_order_Bessel 2.77ms_Delay Subtractive G_Berchin.PNG
    100Hz 2nd_order_Bessel 2.77ms_Delay Subtractive G_Berchin.PNG
    36.2 KB · Views: 47
  • Like
Reactions: 1 user
Here's a second order derived Bessel subtractive crossover at 100Hz as per Greg Berchin. 2.77ms delay.
For better results I recommend at least 4th-order, preferably 6th or 8th, or even 10th. (All increase delay, however.)

EDIT: BTW, there is nothing to prevent an odd-order Bessel-derived crossover. But if you're going to implement a biquad anyway, you might as well use both halves of it.
 
For better results I recommend at least 4th-order, preferably 6th or 8th, or even 10th. (All increase delay, however.)

EDIT: BTW, there is nothing to prevent an odd-order Bessel-derived crossover. But if you're going to implement a biquad anyway, you might as well use both halves of it.
 

Attachments

  • 100Hz 8th_order_Bessel_LP 2nd_HP  6.5ms Subtractive G_Berchin.PNG
    100Hz 8th_order_Bessel_LP 2nd_HP 6.5ms Subtractive G_Berchin.PNG
    40.1 KB · Views: 63
  • Like
Reactions: 1 users
Here's a second order derived Bessel subtractive crossover at 100Hz as per Greg Berchin. 2.77ms delay.
I also tried mr. Berchin subtractive cascaded filter approach for both sections connected in phase and out of phase and compared it to the classical subtractive delay filter approach using double length single delay line. As the theory predicts, frequency response of the classical and Mr. Berchins "out of phase" filter completely match and exhibit approximately 12dB/oct rolloff, whereas "in phase" connection demonstrates ~24dB/oct rolloff and have higher frequency response ripple in the passband. It seems that Mr. Berchin's approach does give a steep filter rolloff, but requires a deeper theoretical insight to minimize ripples in the passband
 

Attachments

  • gberchin substractive approach in phase vs rev phase.png
    gberchin substractive approach in phase vs rev phase.png
    391.4 KB · Views: 45
I also tried mr. Berchin subtractive cascaded filter approach for both sections connected in phase and out of phase
I don't know where this "in phase" connection idea came from, but I have never advocated it.

It seems that Mr. Berchin's approach does give a steep filter rolloff, but requires a deeper theoretical insight to minimize ripples in the passband
If there are ripples in the lowpass passband, then your filter is designed incorrectly. If there are ripples in the highpass passband, then the order of the lowpass filter is too low, or your delay is not quite correct, or both.
 
I don't know where this "in phase" connection idea came from, but I have never advocated it.

If you compare expression from your pdf document for impulse response ht4

ht4= x(t-2d) - 2x(t-d)*g + x(t)*g*g
("*" means convolution)

and expression for transfer function Hhp2(s) from this my post

Hhp2(s) = exp(-(2*tau)*s) - 2*Hlp*exp(-tau*s) + Hlp(s)*Hlp(s)
("*" means multiplication)

you actually see that it is the same equation but in the frequency domain. I explained in the detail in the my post why I call this "in phase" connection.

Oh, i'm sorry, I just now noticed that in that my post I mistakenly wrote

So, if stages 1 and 2 are connected in phase we get 4th order LP crossover.

I have to correct the statement
So, if stages 1 and 2 are connected in phase we get 4th order HP crossover.

If there are ripples in the lowpass passband, then your filter is designed incorrectly. If there are ripples in the highpass passband, then the order of the lowpass filter is too low, or your delay is not quite correct, or both.

I used Linearx filtershop built-in "2nd order Gauss filter" (from analog Allpole filter design window) to generate analog Gauss filter frequency response and then I used invariant impulse approximation method to generate digital IIR. It seems that Filtershop uses some approximation to generate analog Gauss filter frequency response (I used different delay values, however, the ripples still exist).
 
I explained in the detail in the my post why I call this "in phase" connection.
I apologize; I misunderstood. I thought that someone, somewhere, had tried adding the delayed full-bandwidth signal to the filter outputs, instead of subtracting it, which is contrary to the perfect-reconstruction objective of the topology.

There are two forms of the Gaussian-derived matched-delay-subtractive crossover. The first (original) form uses a single Gaussian (or Bessel approximation) LPF and subtracts the delayed full-bandwidth signal from its output to create the HPF. The highpass band in this case has 12 dB/octave slope, while the lowpass band has the slope of the LPF. The second (modified) form uses two cascaded Gaussian-derived (or Bessel-derived) matched-delay-subtractive HPFs, and subtracts the delayed full-bandwidth signal from their output to create the LPF. The highpass band in this case has 24 dB/octave slope, while the lowpass band has slightly less slope than the LPFs used to create the cascaded HPFs.

Unfortunately, it is easy to get a bit undisciplined with the language. Referring to either of these crossover networks as "in phase" or "out of phase" simply leads to confusion. In all cases, the full-bandwidth signal is subtracted from the filtered signal.

In both forms, if a true Gaussian pulse is used as the LPF(s), and the delay is correctly dialed-in, there will be no ripple in either passband. If Bessel LPF(s) are used, there may be slight ripple in the HPF passband that depends upon the LPF filter order used and the accuracy of the delay time. In fact, there are cases where the optimum delay does not correspond exactly to the peak in the Bessel LPF impulse response. While one could solve for the optimum delay analytically, it is far easier to do it experimentally.

I used Linearx filtershop built-in "2nd order Gauss filter" (from analog Allpole filter design window) to generate analog Gauss filter frequency response and then I used invariant impulse approximation method to generate digital IIR. It seems that Filtershop uses some approximation to generate analog Gauss filter frequency response
Then the observed ripple is the fault of the LinearX approximation, not of the matched-delay-subtractive topology. I generate the Gaussian lowpass impulse response from the mathematical definition. I don't remember off the top of my head the equation to calculate the time-domain variance that leads to the desired -6 dB point in the frequency response, but it is straightforward from the mathematical definition. Or you can simply try values until you get the response that you desire.
 
I used Linearx filtershop built-in "2nd order Gauss filter" (from analog Allpole filter design window) to generate analog Gauss filter frequency response and then I used invariant impulse approximation method to generate digital IIR. It seems that Filtershop uses some approximation to generate analog Gauss filter frequency response (I used different delay values, however, the ripples still exist).

Please understand that there's no such thing such as an "analog or IIR Gaussian filter". This is because the Gaussian function gets steeper and steeper as one moves higher in frequency, requiring an infinite number of bi-quads to replicate it. I already said this in response to TNT in post #137, but I'll say again so that people need not waste their time trying to achieve the impossible.

Anyone interested in using the Gaussian curve would have to use FIR techniques to replicate it faithfully. If you don't have FIR capability, then use a high-order Bessel filter (max flat delay), with the appropriate frequency offsets, like SubSoniks has done above.

Now, if you're too lazy to do the FIR Gaussian, please see post #218, where you may download the impulse responses of two such filters. You may also change the sample-rate to adjust the cutoff frequency to your liking.

All the transfers I've posted have constant (propagation) delay removed.
Ok, got it.
 
  • Like
Reactions: 1 user
SubSonics, how are you liking OSM ?
I think a donate-ware, real-time mag & phase dual channel FFT, could be a huge benefit to multi-way DIY.
I'm liking it a lot, not got mega bucks to splurge on Smaart or Easera so a bit of a godsend really. They're steadily adding features and fixing bugs, now very much usable, just hoping my request for an 'infinite' mode on the realtime charts is added in addition to the 0.25Hz-1Hz which would be really useful for averaging over the listening area, to work out what is modal and what is a badly setup LF - quick and dirty - I mostly do live sound and on occasion land on some abomination of a system to be sorted out. Can't always take mine :(
 
Here are the denominator equations for an 8th-order Bessel LPF that is -6dB at 1.0 radians/second. You will have to frequency-scale them for -6dB at 2pi*100 radians/second, by substituting "s/(2pi*100)" for "s" in the equations and doing some algebra.

(Q = 1.22567) s² + 1.28299239215439s + 2.47283345436118
(Q = 0.71085) s² + 1.9741153642581s + 1.96926212166436
(Q = 0.55961) s² + 2.35216938769735s + 1.73263396575613
(Q = 0.50599) s² + 2.52527503176501s + 1.6326875194579

EDIT: corrected radian frequency
 
Last edited: