|
| bool | prepare (double sample_rate, double max_length_seconds=default_max_length_seconds) |
| void | set_length_samples (SampleType length) noexcept |
| SampleType | length_samples () const noexcept |
| SampleType | current_length_samples () const noexcept |
| | Returns the delay head used by the next sample.
|
| double | round_trip_seconds () const noexcept |
| bool | prepared () const noexcept |
| void | read_outputs (SampleType &left_out, SampleType &right_out) const noexcept |
| | Reads both boundary arrivals without advancing either rail.
|
| void | push_inputs (SampleType left_in, SampleType right_in) noexcept |
| | Injects both boundary results and advances the retuning glide once.
|
| void | process (SampleType left_in, SampleType right_in, SampleType &left_out, SampleType &right_out) noexcept |
| | Convenience step for feed-forward use: read, then push.
|
| void | reset () noexcept |
| std::size_t | retained_bytes () const noexcept |
template<typename SampleType = float>
class pulp::signal::WaveguideLineT< SampleType >
A passive bidirectional waveguide segment.
left_in travels toward the right port and emerges as right_out; right_in travels toward the left port and emerges as left_out. Boundary reflection and intentional loss belong outside this class. The two rails use the shared prepared fractional-delay history, with double storage for both float and double public I/O. Lagrange-5 retuning is unity gain at DC and non-amplifying, but attenuates high frequencies at fractional delays; it is therefore passive rather than mathematically lossless.
prepare() is transactional and is the only allocating operation. All setters, process(), and reset() are bounded, lock-free, and allocation- free. Delay changes glide for five milliseconds because the live shared history exposes stateless Lagrange heads rather than a cross-interval Thiran retune operation.