5
$\begingroup$

A practical guide for digital IIR audio filters has cookbook-style values for creating higher-order Bessel filters out of biquads, but the values listed aren't very precise:

You should multiply the Fc for each stage by the following coefficients:
1: 1.00
2: 1.27
3: 1.32 1.45
4: 1.60 1.43
5: 1.50 1.76 1.56
6: 1.90 1.69 1.60

The corresponding Q values are:
1: ---
2: 0.58
3: --- 0.69
4: 0.81 0.52
5: ---- 0.92 0.56
6: 1.02 0.61 0.51

What are the expressions to calculate these values exactly?

For the Butterworth table, the values are given by Q = 1/(2 * sin((pi / N) * (n + 1 / 2))), for instance. So where the table says 4: 0.54 1.31, the equation gives 1.3065629648763766 and 0.54119610014619701. But I can't find the expression for Bessel filters, except that 2: 0.58 is $1\over\sqrt3$.

Prototype-generating functions just have long tables of numbers, so maybe these are not easy to calculate? (Bessel functions?) If so, a listing of these Q and Fc values for the first several orders would be good.

(And yes, I know the bilinear transformed Bessel is no longer linear-phase. :/ I just want to know where these numbers are from.)

$\endgroup$
2
  • 3
    $\begingroup$ There is no simple closed form equitation to calculate Bessel filter bi-quad coefficients. The poles of the filter come from a Bessel polynomial. Higher order Bessel polynomials are determined using a recursion relationship. You need computer algorithms to calculate the poles and resolve the bi-quad coefficients. Two books I can recommend: “Passive and Active Filters” by Wai-Kai Chen and “Analog Filter Design” by M.E. Van Valkenburg. $\endgroup$
    – user2718
    Feb 13, 2013 at 1:26
  • $\begingroup$ And for the record, the values on that page design a Bessel filter that hits -3 dB at the frequency you specify, for any order. Matlab/SciPy, on the other hand, design a filter with the same asymptotes as a Butterworth of the same order. $\endgroup$
    – endolith
    Feb 14, 2013 at 15:58

2 Answers 2

2
$\begingroup$

There is no simple closed-form equation to calculate Bessel filter bi-quad coefficients. The poles of the filter come from a Bessel polynomial. Higher order Bessel polynomials are determined using a recursion relationship. You need computer algorithms to calculate the poles and resolve the bi-quad coefficients.

Two books I can recommend: “Passive and Active Filters” by Wai-Kai Chen and “Analog Filter Design” by M.E. Van Valkenburg.

$\endgroup$
0
$\begingroup$

I back-calculated from the Python prototype filters to get more precise values:

f multiplier to get -3 dB at fc, for N = 
 1: 1.0*           
 2: 1.27201964951  
 3: 1.32267579991*  1.44761713315  
 4: 1.60335751622   1.43017155999  
 5: 1.50231627145*  1.75537777664   1.5563471223   
 6: 1.9047076123    1.68916826762   1.60391912877  
 7: 1.68436817927*  2.04949090027   1.82241747886   1.71635604487  
 8: 2.18872623053   1.95319575902   1.8320926012    1.77846591177  

Q for N = 
 1: --------------
 2: 0.57735026919 
 3: -------------- 0.691046625825
 4: 0.805538281842 0.521934581669
 5: -------------- 0.916477373948 0.563535620851
 6: 1.02331395383  0.611194546878 0.510317824749
 7: -------------- 1.12625754198  0.660821389297 0.5323556979  
 8: 1.22566942541  0.710852074442 0.559609164796 0.505991069397

Kind of cheating, but whatever, BLT is an approximation anyway.

Code and tables for N up to 25 is here.

There are 2 separate frequency tables:

  1. For matching the phase of high and lowpass filters / matching the asymptotes of a Butterworth of the same order.
  2. For setting the cutoff frequency to -3 dB

The latter list can also be found in "Table 7.5: Frequencies and Qs for Bessel Lowpass Filters up to Eighth Order" of "The Design of Active Crossovers", though it sounds like it was derived by trial-and-error.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.