One internally keyed dynamic-EQ band. More...
#include <dynamic_eq.hpp>
Classes | |
| struct | Parameters |
Public Member Functions | |
| DynamicEqBandT () | |
| void | prepare (SampleType sample_rate) |
| bool | set_parameters (Parameters requested) |
| Apply one coherent parameter set. | |
| Parameters | parameters () const noexcept |
| SampleType | process (SampleType input) noexcept |
| bool | process_block (SampleType *samples, std::size_t frames) noexcept |
| void | reset () noexcept |
| SampleType | detector_level () const noexcept |
| SampleType | activity () const noexcept |
| SampleType | dynamic_gain_db () const noexcept |
| GainReduction | gain_reduction () const noexcept |
| BiquadCoefficientsT< SampleType > | band_coefficients () const noexcept |
| SampleType | sample_rate () const noexcept |
Static Public Member Functions | |
| static constexpr int | latency_samples () noexcept |
Static Public Attributes | |
| static constexpr SampleType | min_frequency_hz = SampleType{20} |
| static constexpr SampleType | max_sample_rate = SampleType{768000} |
| static constexpr SampleType | min_q = SampleType{0.1} |
| static constexpr SampleType | max_q = SampleType{12} |
| static constexpr SampleType | min_threshold_db = SampleType{-120} |
| static constexpr SampleType | max_threshold_db = SampleType{0} |
| static constexpr SampleType | min_range_db = SampleType{-24} |
| static constexpr SampleType | max_range_db = SampleType{24} |
One internally keyed dynamic-EQ band.
A unity-peak band-pass section isolates the controlled band. Its output is both the detector key and the parallel equalization signal:
output = input + band * (db_to_gain(dynamic_gain_db) - 1)
At the centre frequency this gives the requested gain while leaving audio below threshold exactly transparent. Positive range boosts and negative range attenuates. Compose several instances in series for a multiband EQ; this primitive deliberately owns no crossover or spectral engine.
RT contract: fixed scalar state only. After prepare(), process(), block processing, reset(), and accessors allocate no memory, lock nothing, and perform no I/O. Parameters are control-side/block-boundary operations.
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinestaticconstexprnoexcept |
|
inlinenoexcept |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
Apply one coherent parameter set.
Non-finite fields reject the whole update; finite out-of-range values are clamped to the public bounds.
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |