Alex Parisi
~*~ software engineer ~*~


Home Projects Wiki


Wiki » Audio » Digital Biquad Filters

Wiki · Contents

Audio
Circular Buffers
» Digital Biquad Filters
    Low Pass
    High Pass
    Band Pass
    Notch
    All Pass
    Peaking EQ
    Low Shelf
    High Shelf
C++
Concepts (C++20)

Digital Biquad Filters

Second-order recursive linear filtering.

Brief

Biquad refers to the fact that the transfer function of the filter is the ratio of two quadratic functions:

\(H(z) = {b_{0} + b_{1}z^{-1} + b_{2}z^{-2} \over {a_{0} + a_{1}z^{-1} + a_{2}z^{-2}}}\)

Higher-order IIR filters are prone to instability due to coefficient quantization, so they are often implemented as cascaded biquad sections, ensuring all poles remain inside the unit circle in the Z-domain for stability.

Second-order filters are also very simple to implement, as they only require managing six coefficient values and four state values. Implementing a biquad filter is as simple as defining the difference equation:

\( y_{n} = {b_{0} \over a_{0}}x_{n} + {b_{1} \over a_{0}}x_{n - 1} + {b_{2} \over a_{0}}x_{n - 2} - {a_{1} \over a_{0}}y_{n - 1} - {a_{2} \over a_{0}}y_{n - 2}\)

The coefficients \( b_{0} \over a_{0} \), \( b_{1} \over a_{0} \), etc. can be pre-computed.

Filter types

Each type below has its own page with an interactive frequency-response plot and the coefficient formulae:

  • Low Pass – Passes below the cutoff, attenuates above it.
  • High Pass – Passes above the cutoff, attenuates below it.
  • Band Pass – Passes a band around a center frequency.
  • Notch – Rejects a narrow band around a center frequency.
  • All Pass – Flat magnitude, frequency-dependent phase shift.
  • Peaking EQ – Boosts or cuts a band around a center frequency.
  • Low Shelf – Boosts or cuts everything below the cutoff.
  • High Shelf – Boosts or cuts everything above the cutoff.

Implementation

You can find a C++ and Rust implementation of various biquad filters on my GitHub page:

alex-parisi/biquad-filters – C++ and Rust implementations of every biquad filter type described here.





Email



© 2026 Alex Parisi · Built by hand, hosted on GitHub Pages.
GitHub | LinkedIn | Email