A wet-only early-reflection renderer with a caller-authored tap pattern. More...
#include <early_reflections.hpp>
Classes | |
| struct | Tap |
Public Member Functions | |
| bool | prepare (double sample_rate, double maximum_delay_ms=250.0) |
| bool | configure (std::span< const Tap > taps, MatrixHeadroomPolicy policy=MatrixHeadroomPolicy::NormalizePeak) noexcept |
| Atomically replaces the complete tap pattern. | |
| bool | prepared () const noexcept |
| double | sample_rate () const noexcept |
| double | maximum_delay_ms () const noexcept |
| std::size_t | tap_count () const noexcept |
| Tap | tap (std::size_t index) const noexcept |
| MatrixHeadroomPolicy | headroom_policy () const noexcept |
| std::size_t | retained_bytes () const noexcept |
| int | tail_samples () const noexcept |
| The last possibly non-zero linearly interpolated tap sample. | |
| void | reset () noexcept |
| Logically clears both histories in constant time. | |
| void | process_sample (SampleType input_left, SampleType input_right, SampleType &output_left, SampleType &output_right) noexcept |
| void | process_block (const SampleType *input_left, const SampleType *input_right, SampleType *output_left, SampleType *output_right, std::size_t sample_count) noexcept |
Static Public Member Functions | |
| static constexpr int | latency_samples () noexcept |
| This wet-only feed-forward renderer never delays a direct path. | |
Static Public Attributes | |
| static constexpr std::size_t | kMaxTaps = 16 |
| static constexpr double | kMinimumSampleRate = 1000.0 |
| static constexpr double | kMaximumSampleRate = 768000.0 |
| static constexpr double | kMaximumDelayMs = 1000.0 |
A wet-only early-reflection renderer with a caller-authored tap pattern.
This is the reusable rendering primitive, not a room or image-source model: callers own the geometry (if any) and publish a complete bounded tap set. prepare() and configure() are control-thread operations. Processing and constant-time reset allocate no memory, take no locks, and preserve stereo input identity when a tap uses the default pan/width.
|
inlinenodiscardnoexcept |
Atomically replaces the complete tap pattern.
A rejected pattern leaves the active taps, routing gains, headroom policy, and history unchanged.
|
inlinenoexcept |
|
inlinestaticconstexprnoexcept |
This wet-only feed-forward renderer never delays a direct path.
|
inlinenoexcept |
|
inlinenodiscard |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
Logically clears both histories in constant time.
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
The last possibly non-zero linearly interpolated tap sample.
|
inlinenoexcept |
|
inlinenoexcept |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |