|
| | DynamicEQ () |
| |
| void | prepare (const AudioSpec &spec) |
| | Initializes the dynamic EQ, allocating ring buffers and oversamplers.
|
| |
| void | processBlock (AudioBufferView< T > buffer) noexcept |
| | Processes audio in-place using self-sidechain.
|
| |
| void | processBlock (AudioBufferView< T > audio, AudioBufferView< T > sidechain) noexcept |
| | Processes audio with an external sidechain.
|
| |
| void | setBand (int band, const BandConfig &config) noexcept |
| | Thread-safe configuration update for a specific band.
|
| |
| void | setNumBands (int n) noexcept |
| |
| void | setOversampling (int factor) noexcept |
| | Sets the internal oversampling factor (RF-009 / ADR-011).
|
| |
| void | setLookahead (T ms) noexcept |
| | Sets the lookahead (0..10 ms). Applied immediately (may click); non-finite values are ignored.
|
| |
| int | getLatency () const noexcept |
| | Total latency in samples at the base rate.
|
| |
| T | getBandGainDb (int band) const noexcept |
| |
| void | reset () noexcept |
| |
| std::vector< uint8_t > | getState () const |
| | Serializes bands and modes (setup/UI threads; allocates).
|
| |
| bool | setState (const uint8_t *data, size_t size) |
| | Restores bands from a blob (tolerant; rejects foreign ids).
|
| |
template<FloatType T, int MaxBands = 8>
class dspark::DynamicEQ< T, MaxBands >
Dynamic parametric EQ with dual above/below threshold per band.
- Template Parameters
-
| T | Sample type (float or double). |
| MaxBands | Maximum number of bands (compile-time, default 8). |
Definition at line 65 of file DynamicEQ.h.
template<FloatType T, int MaxBands = 8>
Total latency in samples at the base rate.
Lookahead delay plus the oversampler's group delay. Neither was reported before, so hosts could not compensate (PDC). Safe to call from the main thread once prepared (the oversampler only changes inside prepare()).
Definition at line 280 of file DynamicEQ.h.
template<FloatType T, int MaxBands = 8>
Thread-safe configuration update for a specific band.
Fields are sanitized on the way in: non-finite values keep the band's previously published value (a NaN frequency/Q/time used to poison the detector or the gain ballistics permanently), wild shape enums are clamped, and the range fields are floored at 0.
Definition at line 205 of file DynamicEQ.h.
template<FloatType T, int MaxBands = 8>
Sets the internal oversampling factor (RF-009 / ADR-011).
Transparency policy: the factor is host-visible, fully configurable and can be turned OFF.
- Supported factors: {1, 2, 4}. DEFAULT is 1 = OFF (no internal resampling, zero added latency, no hidden cascaded resampler). 3 rounds up to 4 (the underlying Oversampling engine works in powers of two); values outside [1,4] are clamped.
- CPU/latency cost per factor (relative to 1x=off): 2x roughly doubles the per-band detector+filter work and adds the half-band polyphase group delay; 4x roughly quadruples it and adds ~2x that group delay. The exact added latency for the active factor is reported by getLatency() so the host can apply correct PDC. Prefer 1x and oversample the whole nonlinear section once (docs/cookbook.md) when a chain already oversamples.
- Note
- Setup threads only: this un-prepares the processor and requires a prepare() call before the new factor takes effect.
Definition at line 256 of file DynamicEQ.h.