A reusable spectral slope built from a fixed cascade of high shelves. More...
#include <tilt_eq.hpp>
Classes | |
| struct | Config |
Public Types | |
| using | Coefficients = BiquadCoefficientsT<SampleType> |
Public Member Functions | |
| TiltEqT () noexcept | |
| bool | prepare (double sample_rate) noexcept |
| Change sample rate and clear history. Invalid rates reject atomically. | |
| bool | set_config (Config requested) noexcept |
| Apply one coherent pivot/slope request at a block boundary. | |
| Config | config () const noexcept |
| double | sample_rate () const noexcept |
| double | design_high_hz () const noexcept |
| double | normalization_gain () const noexcept |
| std::uint64_t | fault_count () const noexcept |
| Coefficients | coefficients (std::size_t index) const noexcept |
| SampleType | process (SampleType input, std::size_t channel=0) noexcept |
| Process one channel. | |
| bool | process_block (SampleType *samples, std::size_t frames, std::size_t channel=0) noexcept |
| Process a caller-owned channel in place. | |
| bool | process_block (const SampleType *input, SampleType *output, std::size_t frames, std::size_t channel=0) noexcept |
| Process one channel into separate caller-owned storage. | |
| void | reset () noexcept |
| Clear all recursive history and the fault diagnostic without changing sample rate or configuration. | |
| bool | reset (std::size_t channel) noexcept |
| Clear one channel's recursive history. Invalid channels are rejected. | |
| double | magnitude (double frequency_hz) const noexcept |
| Magnitude response of the active coefficient endpoint. | |
| double | magnitude_db (double frequency_hz) const noexcept |
| int | tail_samples () const noexcept |
| Recursive shelves decay asymptotically when active. | |
Static Public Member Functions | |
| static constexpr int | latency_samples () noexcept |
Static Public Attributes | |
| static constexpr std::size_t | channel_count = Channels |
| static constexpr std::size_t | shelf_count = 9 |
| static constexpr double | min_sample_rate = 8000.0 |
| static constexpr double | max_sample_rate = 384000.0 |
| static constexpr double | min_tilt_db_per_octave = -6.0 |
| static constexpr double | max_tilt_db_per_octave = 6.0 |
| static constexpr double | min_pivot_hz = 31.25 |
| static constexpr double | max_design_hz = 16000.0 |
| static constexpr double | default_sample_rate = 48000.0 |
A reusable spectral slope built from a fixed cascade of high shelves.
tilt_db_per_octave is the signed magnitude-response slope across the design band [31.25 Hz, min(16 kHz, 0.4 * sample_rate)]. Positive values brighten and negative values darken. pivot_hz selects the frequency whose gain is normalized to exactly unity; changing the pivot changes only that normalization, not the slope. Zero tilt bypasses the cascade so every finite input sample is returned bit-for-bit.
Configuration is a bounded control-side operation. A request is validated and fully designed before any coefficient or recursive state changes; a rejected request leaves the object unchanged. An accepted non-no-op retune clears every channel's recursive history. Process, block, reset, response, and configuration paths allocate no memory and lock nothing.
| using pulp::signal::TiltEqT< SampleType, Channels >::Coefficients = BiquadCoefficientsT<SampleType> |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinestaticconstexprnoexcept |
|
inlinenoexcept |
Magnitude response of the active coefficient endpoint.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
Change sample rate and clear history. Invalid rates reject atomically.
|
inlinenoexcept |
Process one channel.
Invalid channels fail transparent. A non-finite sample or result clears that channel, increments the fault count, and emits zero so recursive state cannot remain poisoned.
|
inlinenoexcept |
Process one channel into separate caller-owned storage.
Exact in-place aliasing is supported; other overlapping ranges are not.
|
inlinenoexcept |
Process a caller-owned channel in place.
Invalid arguments reject without changing state; a null pointer is valid only for zero frames.
|
inlinenoexcept |
Clear all recursive history and the fault diagnostic without changing sample rate or configuration.
|
inlinenoexcept |
Clear one channel's recursive history. Invalid channels are rejected.
|
inlinenoexcept |
|
inlinenoexcept |
Apply one coherent pivot/slope request at a block boundary.
Non-finite or out-of-domain fields reject the whole request.
|
inlinenoexcept |
Recursive shelves decay asymptotically when active.
-1 means the active configuration has no finite advertised tail.
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |