A fixed-capacity, integer-delay comb-filter family. More...
#include <comb_filter.hpp>
Public Member Functions | |
| bool | prepare (std::size_t maximum_delay_samples) |
| bool | configure (const CombFilterConfig &candidate) noexcept |
| void | reset () noexcept |
| bool | prepared () const noexcept |
| bool | configured () const noexcept |
| std::size_t | maximum_delay_samples () const noexcept |
| const CombFilterConfig & | config () const noexcept |
| std::size_t | fault_count () const noexcept |
| void | clear_fault_count () noexcept |
| std::optional< std::size_t > | tail_samples () const noexcept |
| Finite tail in samples, or nullopt for a recursive infinite tail. | |
| CombFilterSampleResult< SampleType > | process (SampleType input) noexcept |
| CombFilterBlockResult | process (const SampleType *input, SampleType *output, std::size_t frames) noexcept |
Static Public Member Functions | |
| static constexpr std::size_t | processing_latency_samples () noexcept |
| Comb structures retain a direct path and therefore add no fixed host compensation latency. | |
Static Public Attributes | |
| static constexpr double | maximum_recursive_gain = 0.999 |
| static constexpr std::size_t | minimum_delay_samples = 2u |
A fixed-capacity, integer-delay comb-filter family.
The modes implement: feedforward: y[n] = x[n] + g x[n-D] feedback: y[n] = x[n] + g y[n-D] allpass: y[n] = w[n-D] - g w[n], w[n] = x[n] + g w[n-D]
prepare() is the only allocating operation and is transactional. configure() validates the complete candidate before committing it, then starts from a cold history. Processing, configure(), reset(), and fault recovery allocate nothing. Exact in-place block processing is supported. A nonfinite input or arithmetic overflow emits zero and discards recursive history in O(1).
|
inlinenoexcept |
|
inlinenodiscardnoexcept |
|
inlinenodiscardnoexcept |
|
inlinenodiscardnoexcept |
|
inlinenodiscardnoexcept |
|
inlinenodiscardnoexcept |
|
inlinenodiscard |
|
inlinenodiscardnoexcept |
|
inlinenodiscardnoexcept |
|
inlinenodiscardnoexcept |
|
inlinestaticnodiscardconstexprnoexcept |
Comb structures retain a direct path and therefore add no fixed host compensation latency.
D is an internal signal-path delay.
|
inlinenoexcept |
|
inlinenodiscardnoexcept |
Finite tail in samples, or nullopt for a recursive infinite tail.
Zero-gain feedback is dry; zero-gain allpass is a pure D-sample delay.
|
staticconstexpr |
|
staticconstexpr |