Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::signal::FilterDesign Struct Reference

Filter coefficient generation utilities. More...

#include <filter_design.hpp>

Public Types

using Coefficients = BiquadCoefficients
 Biquad coefficient set (normalized: a0 = 1).

Static Public Member Functions

static Coefficients lowpass (float freq_hz, float Q, float sample_rate)
static Coefficients highpass (float freq_hz, float Q, float sample_rate)
static Coefficients bandpass (float freq_hz, float Q, float sample_rate)
static Coefficients notch (float freq_hz, float Q, float sample_rate)
static Coefficients allpass (float freq_hz, float Q, float sample_rate)
static Coefficients peaking_eq (float freq_hz, float Q, float gain_db, float sample_rate)
 Peaking EQ filter.
static Coefficients low_shelf (float freq_hz, float gain_db, float sample_rate, float S=1.0f)
 Low shelf filter.
static Coefficients high_shelf (float freq_hz, float gain_db, float sample_rate, float S=1.0f)
 High shelf filter.
static std::vector< Coefficients > butterworth_lowpass (int order, float freq_hz, float sample_rate)
 Generate cascaded biquad coefficients for an Nth-order Butterworth lowpass.
static std::vector< Coefficients > butterworth_highpass (int order, float freq_hz, float sample_rate)
 Generate cascaded biquad coefficients for an Nth-order Butterworth highpass.

Detailed Description

Filter coefficient generation utilities.

RT contract: scalar biquad coefficient helpers return fixed-size values and are allocation-free, but they are still intended for prepare/control-rate use because retuning filters can reset state. Butterworth helpers return vectors and allocate cascade storage, so they are not audio-thread safe.

Generates biquad coefficients for standard filter types using the Audio EQ Cookbook formulas (Robert Bristow-Johnson).

auto coeffs = FilterDesign::lowpass(1000.0f, 0.707f, 44100.0f);
biquad.set_coefficients(coeffs);
// High-order Butterworth via cascaded biquads
auto cascade = FilterDesign::butterworth_lowpass(4, 2000.0f, 44100.0f);
// cascade contains 2 biquad coefficient sets
static std::vector< Coefficients > butterworth_lowpass(int order, float freq_hz, float sample_rate)
Generate cascaded biquad coefficients for an Nth-order Butterworth lowpass.
Definition filter_design.hpp:163
static Coefficients lowpass(float freq_hz, float Q, float sample_rate)
Definition filter_design.hpp:41

Member Typedef Documentation

◆ Coefficients

Biquad coefficient set (normalized: a0 = 1).

Alias of the canonical exchange type in biquad.hpp, so a designed section can be loaded straight into a BiquadT and evaluated by frequency_response.hpp without a conversion step.

Member Function Documentation

◆ allpass()

Coefficients pulp::signal::FilterDesign::allpass ( float freq_hz,
float Q,
float sample_rate )
inlinestatic

◆ bandpass()

Coefficients pulp::signal::FilterDesign::bandpass ( float freq_hz,
float Q,
float sample_rate )
inlinestatic

◆ butterworth_highpass()

std::vector< Coefficients > pulp::signal::FilterDesign::butterworth_highpass ( int order,
float freq_hz,
float sample_rate )
inlinestatic

Generate cascaded biquad coefficients for an Nth-order Butterworth highpass.

◆ butterworth_lowpass()

std::vector< Coefficients > pulp::signal::FilterDesign::butterworth_lowpass ( int order,
float freq_hz,
float sample_rate )
inlinestatic

Generate cascaded biquad coefficients for an Nth-order Butterworth lowpass.

Parameters
orderFilter order (must be even, e.g. 2, 4, 6, 8).
Returns
Vector of biquad coefficient sets (order/2 sections).

◆ high_shelf()

Coefficients pulp::signal::FilterDesign::high_shelf ( float freq_hz,
float gain_db,
float sample_rate,
float S = 1.0f )
inlinestatic

High shelf filter.

◆ highpass()

Coefficients pulp::signal::FilterDesign::highpass ( float freq_hz,
float Q,
float sample_rate )
inlinestatic

◆ low_shelf()

Coefficients pulp::signal::FilterDesign::low_shelf ( float freq_hz,
float gain_db,
float sample_rate,
float S = 1.0f )
inlinestatic

Low shelf filter.

◆ lowpass()

Coefficients pulp::signal::FilterDesign::lowpass ( float freq_hz,
float Q,
float sample_rate )
inlinestatic

◆ notch()

Coefficients pulp::signal::FilterDesign::notch ( float freq_hz,
float Q,
float sample_rate )
inlinestatic

◆ peaking_eq()

Coefficients pulp::signal::FilterDesign::peaking_eq ( float freq_hz,
float Q,
float gain_db,
float sample_rate )
inlinestatic

Peaking EQ filter.

Parameters
gain_dbBoost/cut in dB.

The documentation for this struct was generated from the following file: