Skip to content

File syn_filter_design.c

FileList > dsp > syn_filter_design.c

Go to the source code of this file

Dynamic runtime IIR Biquad filter coefficient generator implementation.

  • #include "syn_filter_design.h"
  • #include <string.h>

Public Functions

Type Name
SYN_Status syn_filter_design_apply_to_biquad (const SYN_BiquadCoeffs * coeffs, SYN_FilterBiquad * biquad)
Apply calculated coefficients to a SYN_FilterBiquad instance.
SYN_Status syn_filter_design_bandpass (q16_t fc_hz, q16_t fs_hz, q16_t Q, SYN_BiquadCoeffs * out)
Calculate Bandpass filter coefficients (constant skirt gain).
SYN_Status syn_filter_design_highpass (q16_t fc_hz, q16_t fs_hz, q16_t Q, SYN_BiquadCoeffs * out)
Calculate Butterworth Highpass filter coefficients.
SYN_Status syn_filter_design_lowpass (q16_t fc_hz, q16_t fs_hz, q16_t Q, SYN_BiquadCoeffs * out)
Calculate Butterworth Lowpass filter coefficients.
SYN_Status syn_filter_design_notch (q16_t fc_hz, q16_t fs_hz, q16_t Q, SYN_BiquadCoeffs * out)
Calculate Notch / Bandstop filter coefficients.

Public Static Functions

Type Name
SYN_Status compute_intermediate_vars (q16_t fc_hz, q16_t fs_hz, q16_t Q, q16_t * cos_w0, q16_t * sin_w0, q16_t * alpha, q16_t * a0_inv)
Helper to pre-warp frequency and compute intermediate bilinear transform constants.

Public Functions Documentation

function syn_filter_design_apply_to_biquad

Apply calculated coefficients to a SYN_FilterBiquad instance.

SYN_Status syn_filter_design_apply_to_biquad (
    const SYN_BiquadCoeffs * coeffs,
    SYN_FilterBiquad * biquad
) 

Parameters:

  • coeffs Calculated biquad coefficients.
  • biquad Target biquad filter instance.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if NULL.


function syn_filter_design_bandpass

Calculate Bandpass filter coefficients (constant skirt gain).

SYN_Status syn_filter_design_bandpass (
    q16_t fc_hz,
    q16_t fs_hz,
    q16_t Q,
    SYN_BiquadCoeffs * out
) 

Parameters:

  • fc_hz Center frequency in Hz (Q16.16).
  • fs_hz Sampling frequency in Hz (Q16.16).
  • Q Quality factor / bandwidth selectivity (Q16.16, e.g., Q16_FROM_FLOAT(2.0)).
  • out Pointer to output coefficient structure.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if invalid.


function syn_filter_design_highpass

Calculate Butterworth Highpass filter coefficients.

SYN_Status syn_filter_design_highpass (
    q16_t fc_hz,
    q16_t fs_hz,
    q16_t Q,
    SYN_BiquadCoeffs * out
) 

Parameters:

  • fc_hz Cutoff frequency in Hz (Q16.16).
  • fs_hz Sampling frequency in Hz (Q16.16).
  • Q Quality factor (Q16.16, e.g., Q16_FROM_FLOAT(0.7071) for Butterworth).
  • out Pointer to output coefficient structure.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if invalid.


function syn_filter_design_lowpass

Calculate Butterworth Lowpass filter coefficients.

SYN_Status syn_filter_design_lowpass (
    q16_t fc_hz,
    q16_t fs_hz,
    q16_t Q,
    SYN_BiquadCoeffs * out
) 

Parameters:

  • fc_hz Cutoff frequency in Hz (Q16.16).
  • fs_hz Sampling frequency in Hz (Q16.16).
  • Q Quality factor (Q16.16, e.g., Q16_FROM_FLOAT(0.7071) for Butterworth).
  • out Pointer to output coefficient structure.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if invalid.


function syn_filter_design_notch

Calculate Notch / Bandstop filter coefficients.

SYN_Status syn_filter_design_notch (
    q16_t fc_hz,
    q16_t fs_hz,
    q16_t Q,
    SYN_BiquadCoeffs * out
) 

Parameters:

  • fc_hz Rejection frequency in Hz (Q16.16).
  • fs_hz Sampling frequency in Hz (Q16.16).
  • Q Quality factor / notch depth selectivity (Q16.16, e.g., Q16_FROM_FLOAT(5.0)).
  • out Pointer to output coefficient structure.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if invalid.


Public Static Functions Documentation

function compute_intermediate_vars

Helper to pre-warp frequency and compute intermediate bilinear transform constants.

static SYN_Status compute_intermediate_vars (
    q16_t fc_hz,
    q16_t fs_hz,
    q16_t Q,
    q16_t * cos_w0,
    q16_t * sin_w0,
    q16_t * alpha,
    q16_t * a0_inv
) 

Parameters:

  • fc_hz Cutoff frequency in Hz.
  • fs_hz Sampling frequency in Hz.
  • Q Quality factor.
  • cos_w0 Output cos(w0).
  • sin_w0 Output sin(w0).
  • alpha Output alpha.
  • a0_inv Output 1/a0 scale factor.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if invalid limits.



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