Why not IIR filters + a global phase linearization by FIR

If xover is at 100Hz, what would the totally fixed delay be?
If a true Gaussian LPF is used as the prototype, then the delay for a 100 Hz crossover is 1381 samples at 48kHz sampling frequency. This assumes that the FIR filter coefficients are truncated when their magnitude drops below 2^(-24). If you allow the coefficients to get smaller than that, then the delay and the filter length become larger.

Otherwise, if a Bessel LPF is used as the prototype, then my script has the following values, all empirically determined:

switch LPFfilterOrder
case 3
alignmentDelay = round((0.5122 / Fx) * Fs);
case 4
alignmentDelay = round((0.5992 / Fx) * Fs);
case 5
alignmentDelay = round((0.6591 / Fx) * Fs);
case 6
alignmentDelay = round((0.7487 / Fx) * Fs);
case 7
alignmentDelay = round((0.8312 / Fx) * Fs);
case 8
alignmentDelay = round((0.9068 / Fx) * Fs);
end

"LPFfilterOrder" is the order of the Bessel LPF,
"alignmentDelay" is the number of samples of delay, which is a function of crossover frequency and sampling rate,
"Fx" is the crossover frequency, in Hz,
"Fs" is the sampling frequency, in samples per second.
 
I just graduated to intermediate, I’ve been a novice for a long time , I’m definitely no expert , but I am a thinker


I have firs on each output with 1024taps at 96k , I can’t get them to pre ring, even if I purposely try to it won’t

I have OpenDrc 6144taps at 48k , and it’s very easy to make pre ring….

I’m talking audible, not measured…. Again I’m barley not a rookie

So , I think mark is into something……
 
If a true Gaussian LPF is used as the prototype, then the delay for a 100 Hz crossover is 1381 samples at 48kHz sampling frequency. This assumes that the FIR filter coefficients are truncated when their magnitude drops below 2^(-24). If you allow the coefficients to get smaller than that, then the delay and the filter length become larger.
Thanks. 1381 samples, so about 28.8ms.

Makes sense to me, as I've come up with a layman's theory...."it takes time to fix time".
By 'fix time', i mean achieve linear phase.

When I got started with FIR, I was using it to tune DIY mains that were made for live-sound. Using linear phase xovers, and good FIR generating software gave such easy super tuning results. But the propagation delay of the FIR filters was a no-go for live sound.

Setting up sound for a few live gigs, I found I had about a maximum of 15ms total fixed delay time to work with before the delay time could be recognized.

So to be able to take FIR tuning to live, I played with finding a linear phase xover at 100Hz, and it's order, that stayed under 15ms.
Using a FIR generator, 4th order LR was it....... 4k taps @ 48KHz with impulse peak centering at 600 samples....... worked for 15ms.

As did a Linea Research ASC48 processor, that uses some kind of proprietary algorithms to closely approximate 24 dB linear phase LRs.
The Linea is really cool in that it can be adjusted on the fly....it's not FIR files providing the quasi linear phase. https://www.linea-research.com/asc48/
Maybe it's using processing akin to what you're doing ? Beyond my pay grade. 🙂

Anyway, it makes sense to me 28.8ms can produce fine linear phase like that, with a non FIR technique.

I've been meaning to ask you guys.....with time forward, then reverse time, filtering.....it appeared a certain size block of data must be processed at a time, to be kept for the reverse order filtering.
How big a block would it need to be for low frequency work? Say 100Hz ? Iow, what kind of propagation delay are we talking?
(i'm back to my "it takes time to fix time theory"....
 
Makes sense to me, as I've come up with a layman's theory...."it takes time to fix time".
By 'fix time', i mean achieve linear phase.
That's correct. As a very rough analogy, it's a bit like climbing a flight of stairs in the dark. You cannot know how tall the stairs are until you reach the top.

When I got started with FIR, I was using it to tune DIY mains that were made for live-sound. Using linear phase xovers, and good FIR generating software gave such easy super tuning results. But the propagation delay of the FIR filters was a no-go for live sound.
Yes. Audio-for-video has a similar problem with lip-sync.

I've been meaning to ask you guys.....with time forward, then reverse time, filtering.....it appeared a certain size block of data must be processed at a time, to be kept for the reverse order filtering.
I'm familiar with the technique, but I've never implemented it. Since the reverse-time filtering is implemented as a FIR filter, the delay is probably at least as long as the impulse response.
 
That's correct. As a very rough analogy, it's a bit like climbing a flight of stairs in the dark. You cannot know how tall the stairs are until you reach the top.


Yes. Audio-for-video has a similar problem with lip-sync.


I'm familiar with the technique, but I've never implemented it. Since the reverse-time filtering is implemented as a FIR filter, the delay is probably at least as long as the impulse response.

I read the delay is only as long as the group delay that the filter rewinds is the length of the filter ….. I’m still deep into reading so I’m probably wrong
 
Setting up sound for a few live gigs, I found I had about a maximum of 15ms total fixed delay time to work with before the delay time could be recognized.
If you use an 8th-order Bessel LPF, which is actually a minimum-phase filter, then the delay is approximately 0.9068 / Fx = 9 milliseconds. Or a 6th-order Bessel LPF, with a delay of 0.7487 / Fx = 7½ milliseconds. (See my reply in message #121.) Both are pretty good approximations to the true Gaussian, except that the LPF doesn't roll-off quite as quickly and there is very slight overshoot in the impulse response.
 
I've been meaning to ask you guys.....with time forward, then reverse time, filtering.....it appeared a certain size block of data must be processed at a time, to be kept for the reverse order filtering.
How big a block would it need to be for low frequency work? Say 100Hz ? Iow, what kind of propagation delay are we talking?
(i'm back to my "it takes time to fix time theory"....
Mark it depends on the type of convolution that is used to process the signal. With the right type of convolution the latency can be very low even for very long filters. There is zero latency, uniform partition convolution, @mitchco uses this in his hang loose convolver.

Explanation of different types of convolutions here
http://blog.reverberate.ca/post/zero-latency-convolution/

Other types of processing can impose a limit based on where the peak of the impulse response is in the filter. A linear phase filter would then have a latency of half the overall filter time. A mixed phase filter could be anywhere up to half. This is the latency that rephase reports for example.
I have firs on each output with 1024taps at 96k , I can’t get them to pre ring, even if I purposely try to it won’t

I have OpenDrc 6144taps at 48k , and it’s very easy to make pre ring….

I’m talking audible, not measured….
Audible in what way and how did you determine that it was pre-ringing you were hearing?

Pre echo distortion is a problem in perceptual coding and so quite a bit of study has been done in that realm.
https://www.ee.columbia.edu/~dpwe/e6820/papers/PaintS00-pcpcod.pdf

Most papers seem to refer back to Zwicker and Fastl's work on masking to determine if anything is likely to be audible.

This figure from Psychoacoustic facts and models has been re-produced in many other publications

Masking.png


This shows that the masking threshold goes down further into negative time from the masking tone. Pre ringing at lower frequencies therefore stands more chance of being audible, to create that kind of filter will need more taps, so as wesayso says the more taps you use gives a greater chance of making a bad filter.

https://cravedsp.com/blog/linear-ph...mount of pre-ringing,by changing the EQ curve.
 
  • Like
Reactions: mitchba and Oabeieo
Mark it depends on the type of convolution that is used to process the signal. With the right type of convolution the latency can be very low even for very long filters. There is zero latency, uniform partition convolution, @mitchco uses this in his hang loose convolver.

Explanation of different types of convolutions here
http://blog.reverberate.ca/post/zero-latency-convolution/

Other types of processing can impose a limit based on where the peak of the impulse response is in the filter. A linear phase filter would then have a latency of half the overall filter time. A mixed phase filter could be anywhere up to half. This is the latency that rephase reports for example.

Audible in what way and how did you determine that it was pre-ringing you were hearing?

Pre echo distortion is a problem in perceptual coding and so quite a bit of study has been done in that realm.
https://www.ee.columbia.edu/~dpwe/e6820/papers/PaintS00-pcpcod.pdf

Most papers seem to refer back to Zwicker and Fastl's work on masking to determine if anything is likely to be audible.

This figure from Psychoacoustic facts and models has been re-produced in many other publications

View attachment 1123340

This shows that the masking threshold goes down further into negative time from the masking tone. Pre ringing at lower frequencies therefore stands more chance of being audible, to create that kind of filter will need more taps, so as wesayso says the more taps you use gives a greater chance of making a bad filter.

https://cravedsp.com/blog/linear-phase-eq-explained#:~:text=Linear Phase EQ Produces Pre-Ringing&text=The amount of pre-ringing,by changing the EQ curve.

Audible , like I can hear it

It sorta sounds like rice crispies inside the speaker…. Or sounds kinda like a spring inside the speaker…..

Am I wrong ? Is that not what it was?
 
Ahh I see what you mean now ….. interesting….. I never knew that….wow what a read , 68 pages…. All except the math , I can understand about 3/4ths of it….. I’ve become good at filling in blanks not knowing math…. I’m about half accurate lol
 
It sorta sounds like rice crispies inside the speaker…. Or sounds kinda like a spring inside the speaker…..

Am I wrong ? Is that not what it was?
Most times it is described as softening the transients, in extreme cases fabricated to demonstrate it as a problem there is the sucked up sound to a snare drum. I can't say what it is you heard, looking at the filters responses that caused it might help, but unfortunately it is really easy to make bad filters when you modify the phase.
 
  • Like
Reactions: Oabeieo
How big a block would it need to be for low frequency work? Say 100Hz ? Iow, what kind of propagation delay are we talking?
https://cse.hkust.edu.hk/mjg_lib/bibs/DPSu/DPSu.Files/Ga95.PDF

And, if you want to implement the @gberchin technique (exactly), then you'll have to first approximate a Gaussian function using FIR methodology. I am reiterating this because the Gaussian function is not a filter function like Butterworth, but a transitional filter whose roll-off keeps getting steeper (forever).

Also, to be able to perform any advanced / non-standard crossover (and be efficient memory-wise), one needs a platform that accepts code, as opposed to a commercial unit that expects key-presses from a user. I have the same problem, with a fairly standard biquad-chain topology, that works well for standard filters, but not when it comes to custom types.
 
Depending on the situation even a subtractive-delay crossover with a Butterworth lowpass could be used. Yes, it has some overshoot and the off-axis response is not as nice as gberchin's proposal. But it has the best ratio between achievable crossover steepness and filter order needed. The derived highpass is 3rd order for all Butterworth lowpass orders except 1, where the derived highpass is only 2nd order. Its summed on-axis response is also transient-perfect.
With a third-order BW lowpass and a derived 3rd order high-pass a 100Hz crossover would have slightly less than 4 ms of latency.

And there is also that paper by John K where he describes a subtractive delay topology where the highpass is of higher order than the lowpass.

Regards

Charles

Edit: I was a little slow with typing and therefore TNT was faster than me. So be aware that I am not refering to his post #133.
 
  • Like
Reactions: Oabeieo
Depending on the situation even a subtractive-delay crossover with a Butterworth lowpass could be used. Yes, it has some overshoot and the off-axis response is not as nice as gberchin's proposal. But it has the best ratio between achievable crossover steepness and filter order needed. The derived highpass is 3rd order for all Butterworth lowpass orders except 1, where the derived highpass is only 2nd order. Its summed on-axis response is also transient-perfect.
With a third-order BW lowpass and a derived 3rd order high-pass a 100Hz crossover would have slightly less than 4 ms of latency.

And there is also that paper by John K where he describes a subtractive delay topology where the highpass is of higher order than the lowpass.
Analog (or simple IIR) subtractive-delay "transient perfect" filters are IMHO a completely different class where only the sum is linear phase but the individual components are not which means the phases between ways are not tracking (no constant phase offset). Even worse are non-delay subtractive filters where the sum is mostly based on cancelling rather than addition around the XO frequency, phases being like 120deg apart at XO point and even more left and right of it.

My personal experience is that phase tracking XO always sounds best, most coherent. Phase offset preferably is zero degrees but other offsets (< 90deg) do work as well and sometimes are actually required (for symmetrical W-T-W setups).

Constant zero phase offset between ways -- which implies identical group delay -- has the unique property of rendering narrow-band transients (shaped sine burst "blips") truly identical on both ways, identical in wave-shape (not only envelope) and in exact position in time, only difference being the level. This yields the most compact time-response overall with the best off-axis behavior (time-of-flight differences giving the smallest possible deviation in the sum). Whether the sum is linear phase or not is not relevant for that property.

With compact and low-ringing lin-phase target functions like the ones @gberchin is proposing we can fully exploit that property. It is important to note that all crossovers achieve non-ringing step response by exact cancelling of the ringing of the individual ways and his target function have the lowest ratio of cancelling sections vs. total area, it hardly gets any better than this (re-posting the step response from post #118):
step-png.1123218
 
  • Like
Reactions: Oabeieo
I understand that the crossover shown does fulfil the linear-phase and in-phase criteria. So far so good. I just mentiones the subtzractive delay with Butterworth because the latency was mentioned as a possible issue. This is not so much relevant for consumer applications. But in live sound it can be.

Regards

Charles
 
  • Like
Reactions: Oabeieo
If one have access to biquad parameters (a1 etc), can one create an IIR Gaussian filter?
No, TNT, there is no analogue or IIR Gaussian filter. Similarly, a Gaussian function has no "order", as its slope depends on the frequency. However, it is certainly possible to approximate it using an IIR Bessel filter of sufficiently high order, as shown by @gberchin earlier in the thread.

If low latency is the point, there may be other options like the Butterworth-Thompson filter, that is often loosely called "Linear Phase" filter.
 
  • Like
Reactions: TNT
OK, from the discussion may i conclude that, without considerable negatives one could do:

  • Linearise the drivers FR around Fxo - say at least 1 octave.
  • Use whatever named or unnamed filter as long at it does what one wants, damping wise. Dont mind phase. At. All. Do mind directivity.
  • Do a global phase linearisation using FIR.

Get a time correct speaker. Perhaps with some added linear GD...

Do "we" agree :-D

//
 
Depending on the situation even a subtractive-delay crossover with a Butterworth lowpass could be used. Yes, it has some overshoot and the off-axis response is not as nice as gberchin's proposal. But it has the best ratio between achievable crossover steepness and filter order needed. The derived highpass is 3rd order for all Butterworth lowpass orders except 1, where the derived highpass is only 2nd order. Its summed on-axis response is also transient-perfect.
Yes. Once again, as I mentioned earlier, it's up to the engineer to decide which compromises are acceptable, and which aren't.

It's been over twenty years since I read the papers by Ng and Rothenberg and by Lipshitz and Vanderkooy, but I seem to remember that a Butterworth-derived MDS highpass filter only exhibited 3rd-order slope for about the first octave below the crossover frequency, after which it approached 2nd-order slope. Am I remembering that correctly?