Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::signal::FractionalDelayLineT< SampleType > Class Template Reference

A prepared mono fractional-delay line. More...

#include <fractional_delay.hpp>

Public Member Functions

bool prepare (std::size_t maximum_delay_samples, FractionalDelayMethod method)
bool prepare_thiran1 (std::size_t maximum_delay_samples, std::size_t integer_interval_start)
 Prepares Thiran-1 for delays in [integer_interval_start, integer_interval_start + 1).
void reset () noexcept
bool prepared () const noexcept
std::optional< FractionalDelayMethod > method () const noexcept
std::size_t maximum_delay_samples () const noexcept
std::size_t minimum_delay_samples () const noexcept
std::optional< std::size_t > thiran_integer_interval_start () const noexcept
std::size_t retained_samples () const noexcept
std::size_t required_older_lookback () const noexcept
FractionalDelaySampleResult< SampleType > process (SampleType input, double delay_samples) noexcept
FractionalDelayBlockResult process (const SampleType *input, SampleType *output, std::size_t frames, double delay_samples) noexcept
FractionalDelayBlockResult process (const SampleType *input, SampleType *output, const double *delay_samples, std::size_t frames) noexcept

Static Public Member Functions

static constexpr std::size_t processing_latency_samples () noexcept
 Processing itself adds no host-compensated latency.
static constexpr std::size_t minimum_delay_samples (FractionalDelayMethod method) noexcept
static constexpr std::size_t older_stencil_lookback (FractionalDelayMethod method) noexcept

Detailed Description

template<typename SampleType = float>
class pulp::signal::FractionalDelayLineT< SampleType >

A prepared mono fractional-delay line.

prepare() is the only allocating operation and is transactional. Processing first pushes the current input, then reads the requested causal delay. Exact in-place block processing is supported. The method is fixed until the next successful prepare. Lagrange delay may cross integer boundaries; Thiran-1 delay is confined to one prepared half-open integer interval. Neither path applies hidden smoothing.

Member Function Documentation

◆ maximum_delay_samples()

template<typename SampleType = float>
std::size_t pulp::signal::FractionalDelayLineT< SampleType >::maximum_delay_samples ( ) const
inlinenodiscardnoexcept

◆ method()

template<typename SampleType = float>
std::optional< FractionalDelayMethod > pulp::signal::FractionalDelayLineT< SampleType >::method ( ) const
inlinenodiscardnoexcept

◆ minimum_delay_samples() [1/2]

template<typename SampleType = float>
std::size_t pulp::signal::FractionalDelayLineT< SampleType >::minimum_delay_samples ( ) const
inlinenodiscardnoexcept

◆ minimum_delay_samples() [2/2]

template<typename SampleType = float>
constexpr std::size_t pulp::signal::FractionalDelayLineT< SampleType >::minimum_delay_samples ( FractionalDelayMethod method)
inlinestaticnodiscardconstexprnoexcept

◆ older_stencil_lookback()

template<typename SampleType = float>
constexpr std::size_t pulp::signal::FractionalDelayLineT< SampleType >::older_stencil_lookback ( FractionalDelayMethod method)
inlinestaticnodiscardconstexprnoexcept

◆ prepare()

template<typename SampleType = float>
bool pulp::signal::FractionalDelayLineT< SampleType >::prepare ( std::size_t maximum_delay_samples,
FractionalDelayMethod method )
inlinenodiscard

◆ prepare_thiran1()

template<typename SampleType = float>
bool pulp::signal::FractionalDelayLineT< SampleType >::prepare_thiran1 ( std::size_t maximum_delay_samples,
std::size_t integer_interval_start )
inlinenodiscard

Prepares Thiran-1 for delays in [integer_interval_start, integer_interval_start + 1).

The upper endpoint is not accepted.

◆ prepared()

template<typename SampleType = float>
bool pulp::signal::FractionalDelayLineT< SampleType >::prepared ( ) const
inlinenodiscardnoexcept

◆ process() [1/3]

template<typename SampleType = float>
FractionalDelayBlockResult pulp::signal::FractionalDelayLineT< SampleType >::process ( const SampleType * input,
SampleType * output,
const double * delay_samples,
std::size_t frames )
inlinenodiscardnoexcept

◆ process() [2/3]

template<typename SampleType = float>
FractionalDelayBlockResult pulp::signal::FractionalDelayLineT< SampleType >::process ( const SampleType * input,
SampleType * output,
std::size_t frames,
double delay_samples )
inlinenodiscardnoexcept

◆ process() [3/3]

template<typename SampleType = float>
FractionalDelaySampleResult< SampleType > pulp::signal::FractionalDelayLineT< SampleType >::process ( SampleType input,
double delay_samples )
inlinenodiscardnoexcept

◆ processing_latency_samples()

template<typename SampleType = float>
constexpr std::size_t pulp::signal::FractionalDelayLineT< SampleType >::processing_latency_samples ( )
inlinestaticnodiscardconstexprnoexcept

Processing itself adds no host-compensated latency.

The requested delay is the signal-path delay and is available on the same process call.

◆ required_older_lookback()

template<typename SampleType = float>
std::size_t pulp::signal::FractionalDelayLineT< SampleType >::required_older_lookback ( ) const
inlinenodiscardnoexcept

◆ reset()

template<typename SampleType = float>
void pulp::signal::FractionalDelayLineT< SampleType >::reset ( )
inlinenoexcept

◆ retained_samples()

template<typename SampleType = float>
std::size_t pulp::signal::FractionalDelayLineT< SampleType >::retained_samples ( ) const
inlinenodiscardnoexcept

◆ thiran_integer_interval_start()

template<typename SampleType = float>
std::optional< std::size_t > pulp::signal::FractionalDelayLineT< SampleType >::thiran_integer_interval_start ( ) const
inlinenodiscardnoexcept

The documentation for this class was generated from the following file: