File syn_biquad.c¶
FileList > dsp > syn_biquad.c
Go to the source code of this file
Fixed-point Q16.16 Biquad filter implementation.
#include "../util/syn_assert.h"#include "syn_biquad.h"#include <stddef.h>#include <string.h>
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. |
Public Functions Documentation¶
function syn_filter_biquad_bandpass¶
Initialize a biquad bandpass filter.
Constant-skirt-gain bandpass. Peak gain = 1.0 at center frequency.
Parameters:
fFilter instance.fcCenter frequency (Hz) in Q16.16.fsSample rate (Hz) in Q16.16.qQuality factor in Q16.16 (higher = narrower band).
function syn_filter_biquad_cascade_init¶
Initialize a cascaded biquad filter structure.
Parameters:
cCascade instance.num_stagesNumber 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:
cCascade instance.inInput sample array.outOutput sample array (may alias in).countNumber of samples to process.
function syn_filter_biquad_cascade_reset¶
Reset all delay lines across all stages in the biquad cascade.
Parameters:
cCascade instance.
function syn_filter_biquad_cascade_update¶
Process a single sample sequentially through all active biquad stages.
Parameters:
cCascade instance.sampleInput sample in Q16.16.
Returns:
Filtered output in Q16.16.
function syn_filter_biquad_highpass¶
Initialize a biquad highpass filter.
Computes standard Butterworth highpass coefficients in Q16.16.
Parameters:
fFilter instance.fcCutoff frequency (Hz) in Q16.16.fsSample 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:
fFilter instance.b0Feedforward coefficient b0 (Q16.16).b1Feedforward coefficient b1 (Q16.16).b2Feedforward coefficient b2 (Q16.16).a1Feedback coefficient a1 (Q16.16).a2Feedback coefficient a2 (Q16.16).
function syn_filter_biquad_lowpass¶
Initialize a biquad lowpass filter.
Computes standard Butterworth coefficients in Q16.16.
Parameters:
fFilter instance.fcCutoff frequency (Hz) in Q16.16.fsSample rate (Hz) in Q16.16.
function syn_filter_biquad_notch¶
Initialize a biquad notch (band-reject) filter.
Rejects frequencies near fc, passes all others.
Parameters:
fFilter instance.fcNotch center frequency (Hz) in Q16.16.fsSample rate (Hz) in Q16.16.qQuality 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:
fBiquad filter instance.inInput sample array (n elements).outOutput sample array (n elements). May alias in.countNumber of samples to process.
function syn_filter_biquad_reset¶
Reset biquad filter delay lines to zero.
Parameters:
fFilter instance.
function syn_filter_biquad_update¶
Process a single sample through the biquad filter.
Uses 64-bit intermediate calculations to prevent overflows.
Parameters:
fBiquad filter instance.sampleInput sample in Q16.16.
Returns:
Filtered output in Q16.16.
The documentation for this class was generated from the following file src/syntropic/dsp/syn_biquad.c