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} |
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.
| using pulp::signal::ParametricEqT< SampleType, MaxBands >::Band = ParametricEqBandT<SampleType> |
| using pulp::signal::ParametricEqT< SampleType, MaxBands >::Coefficients = BiquadCoefficientsT<SampleType> |
| using pulp::signal::ParametricEqT< SampleType, MaxBands >::Sample = SampleType |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
Stationary response of the requested endpoint, in linear magnitude.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
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)).
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinestaticconstexprnoexcept |
|
inlinenoexcept |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |