Skip to content

File syn_biquad.h

FileList > dsp > syn_biquad.h

Go to the source code of this file

Fixed-point Q16.16 Biquad filter (Direct Form I).

  • #include "../common/syn_defs.h"
  • #include "../util/syn_qmath.h"

Classes

Type Name
struct SYN_FilterBiquad
Fixed-point Q16.16 Biquad filter state (Direct Form I).
struct SYN_FilterBiquadCascade
Multi-stage cascaded biquad filter structure for high-order filtering.

Public Functions

Type Name
void syn_filter_biquad_bandpass (SYN_FilterBiquad * f, q16_t fc, q16_t fs, q16_t q)
Initialize a biquad bandpass filter.
SYN_Status syn_filter_biquad_cascade_init (SYN_FilterBiquadCascade * c, uint8_t num_stages)
Initialize a cascaded biquad filter structure.
void syn_filter_biquad_cascade_process_block (SYN_FilterBiquadCascade * c, const q16_t * in, q16_t * out, uint16_t count)
Process a block of samples through all active biquad stages.
void syn_filter_biquad_cascade_reset (SYN_FilterBiquadCascade * c)
Reset all delay lines across all stages in the biquad cascade.
q16_t syn_filter_biquad_cascade_update (SYN_FilterBiquadCascade * c, q16_t sample)
Process a single sample sequentially through all active biquad stages.
void syn_filter_biquad_highpass (SYN_FilterBiquad * f, q16_t fc, q16_t fs)
Initialize a biquad highpass filter.
void syn_filter_biquad_init (SYN_FilterBiquad * f, q16_t b0, q16_t b1, q16_t b2, q16_t a1, q16_t a2)
Initialize a biquad filter with raw coefficients.
void syn_filter_biquad_lowpass (SYN_FilterBiquad * f, q16_t fc, q16_t fs)
Initialize a biquad lowpass filter.
void syn_filter_biquad_notch (SYN_FilterBiquad * f, q16_t fc, q16_t fs, q16_t q)
Initialize a biquad notch (band-reject) filter.
void syn_filter_biquad_process_block (SYN_FilterBiquad * f, const q16_t * in, q16_t * out, uint16_t count)
Process a block of samples through the biquad filter.
void syn_filter_biquad_reset (SYN_FilterBiquad * f)
Reset biquad filter delay lines to zero.
q16_t syn_filter_biquad_update (SYN_FilterBiquad * f, q16_t sample)
Process a single sample through the biquad filter.

Macros

Type Name
define SYN_BIQUAD_CASCADE_MAX_STAGES 8

Public Functions Documentation

function syn_filter_biquad_bandpass

Initialize a biquad bandpass filter.

void syn_filter_biquad_bandpass (
    SYN_FilterBiquad * f,
    q16_t fc,
    q16_t fs,
    q16_t q
) 

Constant-skirt-gain bandpass. Peak gain = 1.0 at center frequency.

Parameters:

  • f Filter instance.
  • fc Center frequency (Hz) in Q16.16.
  • fs Sample rate (Hz) in Q16.16.
  • q Quality factor in Q16.16 (higher = narrower band).

function syn_filter_biquad_cascade_init

Initialize a cascaded biquad filter structure.

SYN_Status syn_filter_biquad_cascade_init (
    SYN_FilterBiquadCascade * c,
    uint8_t num_stages
) 

Parameters:

  • c Cascade instance.
  • num_stages Number of active biquad stages (1 to SYN_BIQUAD_CASCADE_MAX_STAGES).

Returns:

SYN_OK on success.


function syn_filter_biquad_cascade_process_block

Process a block of samples through all active biquad stages.

void syn_filter_biquad_cascade_process_block (
    SYN_FilterBiquadCascade * c,
    const q16_t * in,
    q16_t * out,
    uint16_t count
) 

Parameters:

  • c Cascade instance.
  • in Input sample array.
  • out Output sample array (may alias in).
  • count Number of samples to process.

function syn_filter_biquad_cascade_reset

Reset all delay lines across all stages in the biquad cascade.

void syn_filter_biquad_cascade_reset (
    SYN_FilterBiquadCascade * c
) 

Parameters:

  • c Cascade instance.

function syn_filter_biquad_cascade_update

Process a single sample sequentially through all active biquad stages.

q16_t syn_filter_biquad_cascade_update (
    SYN_FilterBiquadCascade * c,
    q16_t sample
) 

Parameters:

  • c Cascade instance.
  • sample Input sample in Q16.16.

Returns:

Filtered output in Q16.16.


function syn_filter_biquad_highpass

Initialize a biquad highpass filter.

void syn_filter_biquad_highpass (
    SYN_FilterBiquad * f,
    q16_t fc,
    q16_t fs
) 

Computes standard Butterworth highpass coefficients in Q16.16.

Parameters:

  • f Filter instance.
  • fc Cutoff frequency (Hz) in Q16.16.
  • fs Sample rate (Hz) in Q16.16.

function syn_filter_biquad_init

Initialize a biquad filter with raw coefficients.

void syn_filter_biquad_init (
    SYN_FilterBiquad * f,
    q16_t b0,
    q16_t b1,
    q16_t b2,
    q16_t a1,
    q16_t a2
) 

Parameters:

  • f Filter instance.
  • b0 Feedforward coefficient b0 (Q16.16).
  • b1 Feedforward coefficient b1 (Q16.16).
  • b2 Feedforward coefficient b2 (Q16.16).
  • a1 Feedback coefficient a1 (Q16.16).
  • a2 Feedback coefficient a2 (Q16.16).

function syn_filter_biquad_lowpass

Initialize a biquad lowpass filter.

void syn_filter_biquad_lowpass (
    SYN_FilterBiquad * f,
    q16_t fc,
    q16_t fs
) 

Computes standard Butterworth coefficients in Q16.16.

Parameters:

  • f Filter instance.
  • fc Cutoff frequency (Hz) in Q16.16.
  • fs Sample rate (Hz) in Q16.16.

function syn_filter_biquad_notch

Initialize a biquad notch (band-reject) filter.

void syn_filter_biquad_notch (
    SYN_FilterBiquad * f,
    q16_t fc,
    q16_t fs,
    q16_t q
) 

Rejects frequencies near fc, passes all others.

Parameters:

  • f Filter instance.
  • fc Notch center frequency (Hz) in Q16.16.
  • fs Sample rate (Hz) in Q16.16.
  • q Quality factor in Q16.16 (higher = narrower notch).

function syn_filter_biquad_process_block

Process a block of samples through the biquad filter.

void syn_filter_biquad_process_block (
    SYN_FilterBiquad * f,
    const q16_t * in,
    q16_t * out,
    uint16_t count
) 

Parameters:

  • f Biquad filter instance.
  • in Input sample array (n elements).
  • out Output sample array (n elements). May alias in.
  • count Number of samples to process.

function syn_filter_biquad_reset

Reset biquad filter delay lines to zero.

void syn_filter_biquad_reset (
    SYN_FilterBiquad * f
) 

Parameters:

  • f Filter instance.

function syn_filter_biquad_update

Process a single sample through the biquad filter.

q16_t syn_filter_biquad_update (
    SYN_FilterBiquad * f,
    q16_t sample
) 

Uses 64-bit intermediate calculations to prevent overflows.

Parameters:

  • f Biquad filter instance.
  • sample Input sample in Q16.16.

Returns:

Filtered output in Q16.16.


Macro Definition Documentation

define SYN_BIQUAD_CASCADE_MAX_STAGES

#define SYN_BIQUAD_CASCADE_MAX_STAGES `8`


The documentation for this class was generated from the following file src/syntropic/dsp/syn_biquad.h