Hornresp

Hi Jeff B,

I experimented some more today, and the main "hang up" seems to occur immediately after saving. The curves disappear from the graphs, and won't come back. The different F9 recalculation key combinations won't bring it back, and the easy work-around is to close, and re-open the program. Not a big problem, as the last information seems to be saved.

I can fully understand, that you don't want to "rewrite things". I wouldn't either. Thanks again for a very useful program.

Regards,

You might want to look to the right of the title banner if you are using version 5.0. To mitigate writing a user guide I tried to make all of the buttons as clearly defined as possible. Take a look at that button, please.

What you are experiencing is not a "hang-up" or a bug, it is by design. When the file open it expands a group of tables where all of the calculations are performed. The file becomes quite large at that point. When you save the file it automatically compresses the tables and you see the lines vanish, so the saved file is much smaller again. But all you have to do is click the button to the right of the banner and it expands and restores the tables again. I don't use any manual F9 calculations, so that key won't do anything.

There is a little bug in version 5, but it involves the saved driver database and you see it if you save more than 40 drivers. I found that late and I have version 5.1 that fixes it, but I haven't posted that one yet.
 
Hi Jeff,

Thanks for confirming that the Hornresp results look okay.

I use the following expressions to calculate the normalised gain G at frequency f where fc = filter cutoff frequency and n = filter order.

Low-pass Butterworth:

G = 1 / Sqrt(1 + (f / fc) ^ (2 * n))

High-pass Butterworth:

G = 1 / Sqrt(1 + (fc / f) ^ (2 * n))

Low-pass Linkwitz-Riley:

G = 1 / (1 + (f / fc) ^ n)

High-pass Linkwitz-Riley:

G = 1 / (1 + (fc / f) ^ n)

I calculate band-pass gain simply by multiplying the appropriate high-pass and low-pass gains together.

Kind regards,

David

The way I do it has a lot of versatility, and can make any shape transfer function you migth want. It uses an 8th order polynomial of this form:

dB= 20log( 1 + C1(s/w) + C2(s/w)^2 + C3(s/w)^3 + C4(s/w)^4....)

Where C1 is the first order term (coefficient), C2 is the second order term, etc. You can write it for as many orders and terms as you desire. Of course, if you only want the transfer function, just drop the 20log multiplier.

s = j*2*PI*f and w = 2*PI*fc , fc is the crossover frequency.

If you want to go this direction I can give you the term coefficients for all of the standard transfer function shapes (Butterworth, Bessel, LR).

Jeff
 
Post #3581

Hi Jeff B,

As I usually have a number of applications open I always reduce the width of the program to columns A-P, that moves the handy "Click to Re-expand..." button off the screen, and by the time I need it I have long since forgotten about it (it sucks getting old :)).

Thanks for helping again. Maybe in your version 5.1 you can move that button into the title bar area?

Regards,
 
If you want to go this direction I can give you the term coefficients for all of the standard transfer function shapes (Butterworth, Bessel, LR).

Hi Jeff,

Many thanks, that would be great - I am certainly very interested in taking a closer look at your method.

I dismissed using the polynomial approach initially because I thought it was unnecessarily complicated for what I wanted to do :).

Kind regards,

David
 
Hi Jeff,

Many thanks, that would be great - I am certainly very interested in taking a closer look at your method.

I dismissed using the polynomial approach initially because I thought it was unnecessarily complicated for what I wanted to do :).

Kind regards,

David

David,
Here is a snap shot of the table I use in my PCD program for the coefficient terms for the active transfer functions:

CoefficientTerms_zps19005014.jpg



To get both the Transfer Function (H) and the phase angle (Phi) for an 8th order polynomial I used the following equations in my spreadsheet:

X = 1 + C4(f/fc)^4 - C2(f/fc)^2 - C6(f/fc)^6 + C8(f/fc)^8

Y= - C3(f/fc)^3 + C1(f/fc) + C5(f/fc)^5 - C7(f/fc)^7

H = SQRT(X^2 + Y^2)

dB = 20log (H)

Phi = -ATAN2 (X,Y)

It shouldn't be too hard for you to rewrite these in whatever form you need for your software. Of course, you will need to drop the right coefficient terms in for the desired transfer function. In Excel I use a VLOOKUP table.

Jeff B.
 
The way I do it has a lot of versatility, and can make any shape transfer function you migth want. It uses an 8th order polynomial of this form:

dB= 20log( 1 + C1(s/w) + C2(s/w)^2 + C3(s/w)^3 + C4(s/w)^4....)

Where C1 is the first order term (coefficient), C2 is the second order term, etc. You can write it for as many orders and terms as you desire. Of course, if you only want the transfer function, just drop the 20log multiplier.

s = j*2*PI*f and w = 2*PI*fc , fc is the crossover frequency.

If you want to go this direction I can give you the term coefficients for all of the standard transfer function shapes (Butterworth, Bessel, LR).

Jeff

Hello,

I am using myself such polynomial expressions in my spreadsheets to simulate crossovers.

One thing that can be difficult to handle for the user is the fact that the "crossover frequency" can have a different definition for the different crossovers. Some of them have the "crossover frequency" defined at -3dB when others use -6dB...

Best regards from Paris, France

Jean-Michel Le Cléac'h
 
I will have a play and see how things go.

Just confirming that the Hornresp active filter results are identical to those generated using Jeff's polynomial expressions.

To illustrate, the attached screenprint compares the results for a 4th-order Butterworth 100 Hz low-pass filter.

The polynomial method results are exactly masked by the Hornresp results.

Kind regards,

David
 

Attachments

  • Compare.png
    Compare.png
    71.4 KB · Views: 108
One thing that can be difficult to handle for the user is the fact that the "crossover frequency" can have a different definition for the different crossovers. Some of them have the "crossover frequency" defined at -3dB when others use -6dB...

Hi Jean-Michel,

Just to clarify - Hornresp assumes that the filter cutoff frequency is at -3dB for a Butterworth alignment and at -6dB for a Linkwitz-Riley alignment.

Question - Is it possible to specify odd-ordered (1, 3, 5, 7) Linkwitz-Riley filters using the polynomial method?

Kind regards,

David
 
Hi Jean-Michel,

Just to clarify - Hornresp assumes that the filter cutoff frequency is at -3dB for a Butterworth alignment and at -6dB for a Linkwitz-Riley alignment.

Question - Is it possible to specify odd-ordered (1, 3, 5, 7) Linkwitz-Riley filters using the polynomial method?

Kind regards,

David

There are no odd order Linkwitz-Riley filters - that filter type only applies to even orders. In the odd order world you have Butterworth, Bessel, Chebyshev, and a few obsure types, like Legendre. Buttworth and Bessel are the only ones with characteristis really worth using on a large scale.
 
Missed quite a bit of comments in the last while. Crazy server does not always send me a notification.

David thank you for your continuous efforts to improve Hornresp. I know you will finally accomplish in this filter wizard what you set out to do.

Most of the the comments makes sense. Thank you Jeff, and Jean-Michel for supporting the work that David is doing.

The only comment I can find a bit off is the following by Jeff:

Buttworth and Bessel are the only ones with characteristis really worth using on a large scale.

Without siting applications and circumstances this is not a true statement in isolation. The various filters are all alive and kicking because they can and are applied in different situations.

It's rarely that the electrical cutoff of a filter is the deciding factor, but it is the combination of the drivers characteristic roll off and the filter that matters. (Basic I know.)

Therefore to simply state a filter type has little value is a disservice to ones who may have not tried using it.

Legendre filters in particular have been used to great effect in some very well thought out crossovers.
 
Hi Jean-Michel,

Just to clarify - Hornresp assumes that the filter cutoff frequency is at -3dB for a Butterworth alignment and at -6dB for a Linkwitz-Riley alignment.

Question - Is it possible to specify odd-ordered (1, 3, 5, 7) Linkwitz-Riley filters using the polynomial method?

Kind regards,

David
I read and believed that LR2 LR4 LR6 etc are available and that the odd ones cannot exist.
 
Let me clarify what I meant - by large scale, I meant useful as defaults as standardized transfer functions. Since Ideally, we need to combine the driver roll-off with the electrical transfer function to arrive at the resultant crossover, transfer functions of all shapes are useful.

Take a Chebyshev type for example, these have some degree of peaking, and are quite useful for bass augmentation on the highpass for subwoofers. They can even work well in low pass situations when needed to flatten a response. But they are not always practical in standardized default settings since they possess an infinite continuum of response shapes depenings on Q.

In my program I allow for someone to enter the Q for a second order filter so this is controlled by the user, and in my PCD program I even allow the user to enter the coefficient terms manually to shape the filter in such a way that it could be carried over to DSP, so I see the usefulness in having infinite adjustability available.

However, if we were just discussing scrolling to a crossover type, clicking, and having that transfer function displayed, then certain standardized types are much more practical here.

I meant no disservice to any other filter types, I hope they will forgive me.

Jeff



Missed quite a bit of comments in the last while. Crazy server does not always send me a notification.

David thank you for your continuous efforts to improve Hornresp. I know you will finally accomplish in this filter wizard what you set out to do.

Most of the the comments makes sense. Thank you Jeff, and Jean-Michel for supporting the work that David is doing.

The only comment I can find a bit off is the following by Jeff:



Without siting applications and circumstances this is not a true statement in isolation. The various filters are all alive and kicking because they can and are applied in different situations.

It's rarely that the electrical cutoff of a filter is the deciding factor, but it is the combination of the drivers characteristic roll off and the filter that matters. (Basic I know.)

Therefore to simply state a filter type has little value is a disservice to ones who may have not tried using it.

Legendre filters in particular have been used to great effect in some very well thought out crossovers.
 
Let me clarify what I meant - by large scale, I meant useful as defaults as standardized transfer functions. Since Ideally, we need to combine the driver roll-off with the electrical transfer function to arrive at the resultant crossover, transfer functions of all shapes are useful.

Take a Chebyshev type for example, these have some degree of peaking, and are quite useful for bass augmentation on the highpass for subwoofers. They can even work well in low pass situations when needed to flatten a response. But they are not always practical in standardized default settings since they possess an infinite continuum of response shapes depenings on Q.

In my program I allow for someone to enter the Q for a second order filter so this is controlled by the user, and in my PCD program I even allow the user to enter the coefficient terms manually to shape the filter in such a way that it could be carried over to DSP, so I see the usefulness in having infinite adjustability available.

However, if we were just discussing scrolling to a crossover type, clicking, and having that transfer function displayed, then certain standardized types are much more practical here.

I meant no disservice to any other filter types, I hope they will forgive me.

Jeff

I would like to add something - there is a good reason to not use the other crossover types I mentioned as standardized forms for crossovers. Thy often sum far from flat. When Mark mentions that the Legendre crossover can be useful in some applications, he may be forgetting that this is not the case as the transfer function is defined - as defined the lowpass and highpass sections sum to a 5.5dB peak at the crossover frequency. In order to approximate a flat summation (I say approximate, because there will still be ripple in the response) the crossover frequencies for the low and high pass sections have to be spread by a ratio of 1.15 of the crossover point - the lowpass and highpass at derived using different Fc values to make the crossover type practical. This is why these other types can be impractical in textbook form, by why BW, Bes, and LR are still practical.
 
I would like to add something - there is a good reason to not use the other crossover types I mentioned as standardized forms for crossovers. Thy often sum far from flat. When Mark mentions that the Legendre crossover can be useful in some applications, he may be forgetting that this is not the case as the transfer function is defined - as defined the lowpass and highpass sections sum to a 5.5dB peak at the crossover frequency. In order to approximate a flat summation (I say approximate, because there will still be ripple in the response) the crossover frequencies for the low and high pass sections have to be spread by a ratio of 1.15 of the crossover point - the lowpass and highpass at derived using different Fc values to make the crossover type practical. This is why these other types can be impractical in textbook form, by why BW, Bes, and LR are still practical.

Mark unfortunately knows how much fun some of the filters can be to properly implement.

Without some means to model the more exotic types it is darn near impossible to use them.

But thanks for the clarification Jeff.

The reason I made my statement is that "Jeff Bagby" has become a person that has earned respect in the diyaudio community. With that comes the need to make balanced statements.

The more I know and understand things in audio, the more I know that I don't understand things.

Greater knowledge has always been a humbling thing for me.

Because it brings up a multitude of questions I had never considered before.

Last but not least. You have a nice piece of software on offer. Don't let it die because of the machinations of Microsoft.
 
There are no odd order Linkwitz-Riley filters - that filter type only applies to even orders. In the odd order world you have Butterworth, Bessel, Chebyshev, and a few obsure types, like Legendre. Buttworth and Bessel are the only ones with characteristis really worth using on a large scale.

Hi Jeff,

Thanks for this. The reason I asked was that currently the Hornresp Filter Wizard can also show the responses of odd-order Linkwitz-Riley filters, and I was wondering if this capability should be removed. The attached screenprint compares a 3rd-order Linkwitz-Riley filter response (red trace) to a 4th-order response (grey trace).

Is it possible to have a 1st-order Bessel filter, and would you know where I might be able to find the coefficients for Bessel filters of order 1(?), 3, 7 and 8? Thanks.

Kind regards,

David
 

Attachments

  • Order.png
    Order.png
    50.5 KB · Views: 140
Hi Jeff,

Thanks for this. The reason I asked was that currently the Hornresp Filter Wizard can also show the responses of odd-order Linkwitz-Riley filters, and I was wondering if this capability should be removed. The attached screenprint compares a 3rd-order Linkwitz-Riley filter response (red trace) to a 4th-order response (grey trace).

Is it possible to have a 1st-order Bessel filter, and would you know where I might be able to find the coefficients for Bessel filters of order 1(?), 3, 7 and 8? Thanks.

Kind regards,

David

Hello David,

Odd orders LR crossover seem irrelevant to me. (Even if my friend Francis Brooke defined a quasi Linkwitz-Riley of 3rd order)

There is only one first order filter so you can call it Butterworth or Bessel or whatever you want, the formula remains the same.


Best regards from Paris, France

Jean-Michel Le Cléac'h
 
Last edited:
Hi Jeff,

Thanks for this. The reason I asked was that currently the Hornresp Filter Wizard can also show the responses of odd-order Linkwitz-Riley filters, and I was wondering if this capability should be removed. The attached screenprint compares a 3rd-order Linkwitz-Riley filter response (red trace) to a 4th-order response (grey trace).

Is it possible to have a 1st-order Bessel filter, and would you know where I might be able to find the coefficients for Bessel filters of order 1(?), 3, 7 and 8? Thanks.

Kind regards,

David

The LR crossover is defined as an even order in-phase crossover, not just a crossover shape, but also by its summation. You're only looking at one half of the crossover. If you try to fit these transfer functions for an odd order the phase comes out wrong and the summation is off.

The first order filter is only Butterworth. You can't vary the Q on the first order filter.

I do not know the coefficients for higher order Bessel, or even if they exist.