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

Prepared history shared by any number of stateless Lagrange read heads. More...

#include <fractional_delay.hpp>

Public Member Functions

 FractionalDelayHistoryT ()=default
 FractionalDelayHistoryT (const FractionalDelayHistoryT &)=delete
FractionalDelayHistoryT & operator= (const FractionalDelayHistoryT &)=delete
 FractionalDelayHistoryT (FractionalDelayHistoryT &&other) noexcept
FractionalDelayHistoryT & operator= (FractionalDelayHistoryT &&other) noexcept
bool prepare (std::size_t maximum_delay_samples)
void reset () noexcept
void discard_history () noexcept
 Forgets all prior samples in constant time.
bool prepared () const noexcept
std::size_t maximum_delay_samples () const noexcept
std::size_t retained_samples () const noexcept
std::size_t retained_bytes () const noexcept
std::size_t required_older_lookback () const noexcept
FractionalDelayStatus push (SampleType sample) noexcept
 Advances history by one sample.
FractionalDelaySampleResult< SampleType > read_at (double delay_samples, FractionalDelayMethod method) const noexcept
 Reads one stateless head from the current history snapshot.
FractionalDelaySampleResult< SampleType > read_lagrange3_at (double delay_samples) const noexcept
FractionalDelaySampleResult< SampleType > read_lagrange5_at (double delay_samples) const noexcept

Static Public Member Functions

static constexpr std::size_t minimum_delay_samples (FractionalDelayMethod method) noexcept

Detailed Description

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

Prepared history shared by any number of stateless Lagrange read heads.

Pushing and reading are deliberately separate operations. A caller may read the current immutable history before pushing a feedback result, or push an input first and then take any number of simultaneous reads. Delays are measured behind the next write: delay 1 is the most recently pushed sample. Failed prepare calls leave the previous history and configuration untouched.

Constructor & Destructor Documentation

◆ FractionalDelayHistoryT() [1/3]

template<typename SampleType = float>
pulp::signal::FractionalDelayHistoryT< SampleType >::FractionalDelayHistoryT ( )
default

◆ FractionalDelayHistoryT() [2/3]

template<typename SampleType = float>
pulp::signal::FractionalDelayHistoryT< SampleType >::FractionalDelayHistoryT ( const FractionalDelayHistoryT< SampleType > & )
delete

◆ FractionalDelayHistoryT() [3/3]

template<typename SampleType = float>
pulp::signal::FractionalDelayHistoryT< SampleType >::FractionalDelayHistoryT ( FractionalDelayHistoryT< SampleType > && other)
inlinenoexcept

Member Function Documentation

◆ discard_history()

template<typename SampleType = float>
void pulp::signal::FractionalDelayHistoryT< SampleType >::discard_history ( )
inlinenoexcept

Forgets all prior samples in constant time.

Unlike reset(), this does not eagerly clear storage; invalidated slots remain unreachable until they have been overwritten by later pushes.

◆ maximum_delay_samples()

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

◆ minimum_delay_samples()

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

◆ operator=() [1/2]

template<typename SampleType = float>
FractionalDelayHistoryT & pulp::signal::FractionalDelayHistoryT< SampleType >::operator= ( const FractionalDelayHistoryT< SampleType > & )
delete

◆ operator=() [2/2]

template<typename SampleType = float>
FractionalDelayHistoryT & pulp::signal::FractionalDelayHistoryT< SampleType >::operator= ( FractionalDelayHistoryT< SampleType > && other)
inlinenoexcept

◆ prepare()

template<typename SampleType = float>
bool pulp::signal::FractionalDelayHistoryT< SampleType >::prepare ( std::size_t maximum_delay_samples)
inlinenodiscard

◆ prepared()

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

◆ push()

template<typename SampleType = float>
FractionalDelayStatus pulp::signal::FractionalDelayHistoryT< SampleType >::push ( SampleType sample)
inlinenodiscardnoexcept

Advances history by one sample.

Nonfinite input advances with zero and reports the fault so invalid values can never poison later read heads.

◆ read_at()

template<typename SampleType = float>
FractionalDelaySampleResult< SampleType > pulp::signal::FractionalDelayHistoryT< SampleType >::read_at ( double delay_samples,
FractionalDelayMethod method ) const
inlinenodiscardnoexcept

Reads one stateless head from the current history snapshot.

Only the two Lagrange methods are accepted; reads never advance or alter history.

◆ read_lagrange3_at()

template<typename SampleType = float>
FractionalDelaySampleResult< SampleType > pulp::signal::FractionalDelayHistoryT< SampleType >::read_lagrange3_at ( double delay_samples) const
inlinenodiscardnoexcept

◆ read_lagrange5_at()

template<typename SampleType = float>
FractionalDelaySampleResult< SampleType > pulp::signal::FractionalDelayHistoryT< SampleType >::read_lagrange5_at ( double delay_samples) const
inlinenodiscardnoexcept

◆ required_older_lookback()

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

◆ reset()

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

◆ retained_bytes()

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

◆ retained_samples()

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

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