|
| bool | prepare (SampleType sample_rate, std::span< const SampleType > cutoffs) noexcept |
| | Establish the sample rate, band count, and initial cutoff set.
|
| bool | set_cutoffs (std::span< const SampleType > cutoffs, std::size_t transition_samples=0) noexcept |
| | Retune all cutoffs together.
|
| Frame | process (SampleType input) noexcept |
| void | reset () noexcept |
| std::size_t | band_count () const noexcept |
| std::size_t | cutoff_count () const noexcept |
| SampleType | cutoff (std::size_t index) const noexcept |
| SampleType | sample_rate () const noexcept |
| bool | transitioning () const noexcept |
| bool | healthy () const noexcept |
| std::uint64_t | fault_count () const noexcept |
| std::size_t | minimum_transition_samples (std::span< const SampleType > cutoffs) const noexcept |
| | Minimum safe nonzero transition for the requested cutoff set.
|
|
| static constexpr double | maximum_downward_log_slew_nepers_per_second () noexcept |
| | Maximum accepted downward motion in the logarithm of the bilinear-warped cutoff.
|
| static constexpr int | latency_samples () noexcept |
| static bool | supports_configuration (SampleType sample_rate, std::span< const SampleType > cutoffs) noexcept |
| | True when the exact double-precision internal realization has finite, non-degenerate coefficients and poles separated from the unit circle.
|
| static std::complex< double > | band_response (std::span< const SampleType > cutoffs, std::size_t band, double frequency_hz, double sample_rate) noexcept |
| | Exact complex response of one configured band, including the all-pass compensation that makes the complete band sum flat.
|
| static std::complex< double > | reconstruction_response (std::span< const SampleType > cutoffs, double frequency_hz, double sample_rate) noexcept |
template<typename SampleType = float, std::size_t MaxBands = 8>
class pulp::signal::LinkwitzRileyCrossoverT< SampleType, MaxBands >
Fixed-capacity Linkwitz-Riley crossover for two or more ordered bands.
Each split is fourth-order (LR4). Earlier bands pass through the all-pass sum of every later split, so adding all returned bands reconstructs a flat magnitude response with the common minimum-phase response of the cascade.
RT contract: prepare/configuration, process, reset, and response inspection use fixed storage and allocate no memory. Band count is fixed by prepare(); a realtime retune may change only the existing ordered cutoffs. Smoothed retunes use a topology-preserving-transform bank, avoiding both coefficient- dependent state reinterpretation and cross-bank phase cancellation. Downward moves must meet the bound reported by minimum_transition_samples().
template<typename SampleType = float, std::size_t MaxBands = 8>
Establish the sample rate, band count, and initial cutoff set.
Cutoffs must be finite, strictly increasing, and inside (0, Nyquist).