# Bessel filter second-order sections Q and Fc multiplier derivation

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.)

-
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. –  B Z Feb 13 '13 at 1:26
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. –  endolith Feb 14 '13 at 15:58

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.

-

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.

-