|
| bool | configure (std::size_t paths, std::size_t initial_path, std::size_t fade_samples) noexcept |
| bool | request_path (std::size_t path) noexcept |
| void | reset () noexcept |
| std::size_t | path_count () const noexcept |
| std::size_t | selected_path () const noexcept |
| bool | switching () const noexcept |
| std::span< const SampleType > | weights () const noexcept |
| bool | next_gains (std::span< SampleType > destination) noexcept |
| bool | process (const SampleType *const *sources, std::size_t source_count, SampleType *destination, std::size_t frames) noexcept |
template<typename SampleType = float, std::size_t MaxPaths = 16>
class pulp::signal::ClickFreePathSwitcherT< SampleType, MaxPaths >
Fixed-capacity, click-free path selector.
Requests made during a fade begin from the current N-way gain vector, so automation never jumps. The vector is smoothstep-interpolated and L2-normalized on every sample, preserving a constant-power gain law for decorrelated paths. Processing is allocation- free; source buffers must not alias the destination.