Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::signal::ParametricEqT< SampleType, MaxBands > Class Template Reference

A bounded series cascade of arbitrary parametric bands. More...

#include <parametric_eq.hpp>

Public Types

using Sample = SampleType
using Band = ParametricEqBandT<SampleType>
using Coefficients = BiquadCoefficientsT<SampleType>

Public Member Functions

ParametricEqPrepareStatus prepare (SampleType sample_rate, std::size_t band_capacity=MaxBands) noexcept
ParametricEqConfigureStatus configure (std::span< const Band > bands, std::size_t transition_samples=0) noexcept
SampleType process (SampleType input) noexcept
bool process_block (SampleType *samples, std::size_t frames) noexcept
 Process a block in place.
void reset () noexcept
bool prepared () const noexcept
bool transitioning () const noexcept
std::size_t capacity () const noexcept
std::size_t band_count () const noexcept
SampleType sample_rate () const noexcept
Band band (std::size_t index) const noexcept
Coefficients coefficients (std::size_t index) const noexcept
double magnitude (double frequency_hz) const noexcept
 Stationary response of the requested endpoint, in linear magnitude.
float magnitude_db (double frequency_hz) const noexcept
void response_curve_db (double min_hz, double max_hz, std::span< float > out) const noexcept

Static Public Member Functions

static constexpr std::size_t storage_capacity () noexcept

Static Public Attributes

static constexpr SampleType minimum_sample_rate_hz = SampleType{8000}
static constexpr SampleType maximum_sample_rate_hz = SampleType{384000}
static constexpr SampleType minimum_frequency_hz = SampleType{20}
static constexpr SampleType maximum_frequency_hz = SampleType{20000}
static constexpr SampleType minimum_gain_db = SampleType{-24}
static constexpr SampleType maximum_gain_db = SampleType{24}
static constexpr SampleType minimum_q = SampleType{0.1}
static constexpr SampleType maximum_q = SampleType{12}

Detailed Description

template<typename SampleType = float, std::size_t MaxBands = 31>
class pulp::signal::ParametricEqT< SampleType, MaxBands >

A bounded series cascade of arbitrary parametric bands.

Configuration is transactional and control-rate: all bands are validated and designed before the live cascade changes. Processing is fixed-storage and allocation-free. A non-zero transition crossfades complete SOS cascades; coefficients are never interpolated. If one or more bands is soloed, only enabled solo bands are admitted. With no solo bands, every enabled band runs.

Member Typedef Documentation

◆ Band

template<typename SampleType = float, std::size_t MaxBands = 31>
using pulp::signal::ParametricEqT< SampleType, MaxBands >::Band = ParametricEqBandT<SampleType>

◆ Coefficients

template<typename SampleType = float, std::size_t MaxBands = 31>
using pulp::signal::ParametricEqT< SampleType, MaxBands >::Coefficients = BiquadCoefficientsT<SampleType>

◆ Sample

template<typename SampleType = float, std::size_t MaxBands = 31>
using pulp::signal::ParametricEqT< SampleType, MaxBands >::Sample = SampleType

Member Function Documentation

◆ band()

template<typename SampleType = float, std::size_t MaxBands = 31>
Band pulp::signal::ParametricEqT< SampleType, MaxBands >::band ( std::size_t index) const
inlinenoexcept

◆ band_count()

template<typename SampleType = float, std::size_t MaxBands = 31>
std::size_t pulp::signal::ParametricEqT< SampleType, MaxBands >::band_count ( ) const
inlinenoexcept

◆ capacity()

template<typename SampleType = float, std::size_t MaxBands = 31>
std::size_t pulp::signal::ParametricEqT< SampleType, MaxBands >::capacity ( ) const
inlinenoexcept

◆ coefficients()

template<typename SampleType = float, std::size_t MaxBands = 31>
Coefficients pulp::signal::ParametricEqT< SampleType, MaxBands >::coefficients ( std::size_t index) const
inlinenoexcept

◆ configure()

template<typename SampleType = float, std::size_t MaxBands = 31>
ParametricEqConfigureStatus pulp::signal::ParametricEqT< SampleType, MaxBands >::configure ( std::span< const Band > bands,
std::size_t transition_samples = 0 )
inlinenoexcept

◆ magnitude()

template<typename SampleType = float, std::size_t MaxBands = 31>
double pulp::signal::ParametricEqT< SampleType, MaxBands >::magnitude ( double frequency_hz) const
inlinenoexcept

Stationary response of the requested endpoint, in linear magnitude.

◆ magnitude_db()

template<typename SampleType = float, std::size_t MaxBands = 31>
float pulp::signal::ParametricEqT< SampleType, MaxBands >::magnitude_db ( double frequency_hz) const
inlinenoexcept

◆ prepare()

template<typename SampleType = float, std::size_t MaxBands = 31>
ParametricEqPrepareStatus pulp::signal::ParametricEqT< SampleType, MaxBands >::prepare ( SampleType sample_rate,
std::size_t band_capacity = MaxBands )
inlinenoexcept

◆ prepared()

template<typename SampleType = float, std::size_t MaxBands = 31>
bool pulp::signal::ParametricEqT< SampleType, MaxBands >::prepared ( ) const
inlinenoexcept

◆ process()

template<typename SampleType = float, std::size_t MaxBands = 31>
SampleType pulp::signal::ParametricEqT< SampleType, MaxBands >::process ( SampleType input)
inlinenoexcept

◆ process_block()

template<typename SampleType = float, std::size_t MaxBands = 31>
bool pulp::signal::ParametricEqT< SampleType, MaxBands >::process_block ( SampleType * samples,
std::size_t frames )
inlinenoexcept

Process a block in place.

A design crossfade runs sample by sample; once none is pending, the rest of the block goes through the active cascade's block path, which matches the sample path (see SosCascadeT::process(SampleType*, std::size_t)).

◆ reset()

template<typename SampleType = float, std::size_t MaxBands = 31>
void pulp::signal::ParametricEqT< SampleType, MaxBands >::reset ( )
inlinenoexcept

◆ response_curve_db()

template<typename SampleType = float, std::size_t MaxBands = 31>
void pulp::signal::ParametricEqT< SampleType, MaxBands >::response_curve_db ( double min_hz,
double max_hz,
std::span< float > out ) const
inlinenoexcept

◆ sample_rate()

template<typename SampleType = float, std::size_t MaxBands = 31>
SampleType pulp::signal::ParametricEqT< SampleType, MaxBands >::sample_rate ( ) const
inlinenoexcept

◆ storage_capacity()

template<typename SampleType = float, std::size_t MaxBands = 31>
constexpr std::size_t pulp::signal::ParametricEqT< SampleType, MaxBands >::storage_capacity ( )
inlinestaticconstexprnoexcept

◆ transitioning()

template<typename SampleType = float, std::size_t MaxBands = 31>
bool pulp::signal::ParametricEqT< SampleType, MaxBands >::transitioning ( ) const
inlinenoexcept

Member Data Documentation

◆ maximum_frequency_hz

template<typename SampleType = float, std::size_t MaxBands = 31>
SampleType pulp::signal::ParametricEqT< SampleType, MaxBands >::maximum_frequency_hz = SampleType{20000}
staticconstexpr

◆ maximum_gain_db

template<typename SampleType = float, std::size_t MaxBands = 31>
SampleType pulp::signal::ParametricEqT< SampleType, MaxBands >::maximum_gain_db = SampleType{24}
staticconstexpr

◆ maximum_q

template<typename SampleType = float, std::size_t MaxBands = 31>
SampleType pulp::signal::ParametricEqT< SampleType, MaxBands >::maximum_q = SampleType{12}
staticconstexpr

◆ maximum_sample_rate_hz

template<typename SampleType = float, std::size_t MaxBands = 31>
SampleType pulp::signal::ParametricEqT< SampleType, MaxBands >::maximum_sample_rate_hz = SampleType{384000}
staticconstexpr

◆ minimum_frequency_hz

template<typename SampleType = float, std::size_t MaxBands = 31>
SampleType pulp::signal::ParametricEqT< SampleType, MaxBands >::minimum_frequency_hz = SampleType{20}
staticconstexpr

◆ minimum_gain_db

template<typename SampleType = float, std::size_t MaxBands = 31>
SampleType pulp::signal::ParametricEqT< SampleType, MaxBands >::minimum_gain_db = SampleType{-24}
staticconstexpr

◆ minimum_q

template<typename SampleType = float, std::size_t MaxBands = 31>
SampleType pulp::signal::ParametricEqT< SampleType, MaxBands >::minimum_q = SampleType{0.1}
staticconstexpr

◆ minimum_sample_rate_hz

template<typename SampleType = float, std::size_t MaxBands = 31>
SampleType pulp::signal::ParametricEqT< SampleType, MaxBands >::minimum_sample_rate_hz = SampleType{8000}
staticconstexpr

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