Audio-thread processor for a fixed-capacity arbitrary transfer curve. More...
#include <transfer_curve.hpp>
Public Types | |
| using | Point = TransferCurvePointT<SampleType> |
| using | PreparedCurve = PreparedTransferCurveT<SampleType, MaxPoints> |
Public Member Functions | |
| TransferCurveT () noexcept | |
| bool | publish_curve (std::span< const Point > points, SampleType input_min, SampleType input_max, SampleType output_min, SampleType output_max) noexcept |
| SampleType | process (SampleType input) noexcept |
| void | process (const SampleType *input, SampleType *output, int num_samples) noexcept |
| void | process (SampleType *samples, int num_samples) noexcept |
| void | reset () noexcept |
| A transfer curve has no history. | |
Static Public Member Functions | |
| static constexpr int | latency_samples () noexcept |
| static constexpr int | tail_samples () noexcept |
Static Public Attributes | |
| static constexpr std::size_t | max_points = MaxPoints |
Audio-thread processor for a fixed-capacity arbitrary transfer curve.
publish_curve() is the single-writer control-side entry point. A complete, validated curve is published through a triple buffer and becomes visible at the next scalar or block process boundary. The audio path is lock-free and allocation-free. The processor deliberately owns no oversampling policy; callers that need alias suppression compose it with OversamplerT.
| using pulp::signal::TransferCurveT< SampleType, MaxPoints >::Point = TransferCurvePointT<SampleType> |
| using pulp::signal::TransferCurveT< SampleType, MaxPoints >::PreparedCurve = PreparedTransferCurveT<SampleType, MaxPoints> |
|
inlinenoexcept |
|
inlinestaticconstexprnoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
A transfer curve has no history.
Reset only adopts the latest complete control-side publication so the next sample starts from that snapshot.
|
inlinestaticconstexprnoexcept |
|
staticconstexpr |