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

A fixed-capacity, integer-delay comb-filter family. More...

#include <comb_filter.hpp>

Public Member Functions

bool prepare (std::size_t maximum_delay_samples)
bool configure (const CombFilterConfig &candidate) noexcept
void reset () noexcept
bool prepared () const noexcept
bool configured () const noexcept
std::size_t maximum_delay_samples () const noexcept
const CombFilterConfig & config () const noexcept
std::size_t fault_count () const noexcept
void clear_fault_count () noexcept
std::optional< std::size_t > tail_samples () const noexcept
 Finite tail in samples, or nullopt for a recursive infinite tail.
CombFilterSampleResult< SampleType > process (SampleType input) noexcept
CombFilterBlockResult process (const SampleType *input, SampleType *output, std::size_t frames) noexcept

Static Public Member Functions

static constexpr std::size_t processing_latency_samples () noexcept
 Comb structures retain a direct path and therefore add no fixed host compensation latency.

Static Public Attributes

static constexpr double maximum_recursive_gain = 0.999
static constexpr std::size_t minimum_delay_samples = 2u

Detailed Description

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

A fixed-capacity, integer-delay comb-filter family.

The modes implement: feedforward: y[n] = x[n] + g x[n-D] feedback: y[n] = x[n] + g y[n-D] allpass: y[n] = w[n-D] - g w[n], w[n] = x[n] + g w[n-D]

prepare() is the only allocating operation and is transactional. configure() validates the complete candidate before committing it, then starts from a cold history. Processing, configure(), reset(), and fault recovery allocate nothing. Exact in-place block processing is supported. A nonfinite input or arithmetic overflow emits zero and discards recursive history in O(1).

Member Function Documentation

◆ clear_fault_count()

template<typename SampleType = float>
void pulp::signal::CombFilterT< SampleType >::clear_fault_count ( )
inlinenoexcept

◆ config()

template<typename SampleType = float>
const CombFilterConfig & pulp::signal::CombFilterT< SampleType >::config ( ) const
inlinenodiscardnoexcept

◆ configure()

template<typename SampleType = float>
bool pulp::signal::CombFilterT< SampleType >::configure ( const CombFilterConfig & candidate)
inlinenodiscardnoexcept

◆ configured()

template<typename SampleType = float>
bool pulp::signal::CombFilterT< SampleType >::configured ( ) const
inlinenodiscardnoexcept

◆ fault_count()

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

◆ maximum_delay_samples()

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

◆ prepare()

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

◆ prepared()

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

◆ process() [1/2]

template<typename SampleType = float>
CombFilterBlockResult pulp::signal::CombFilterT< SampleType >::process ( const SampleType * input,
SampleType * output,
std::size_t frames )
inlinenodiscardnoexcept

◆ process() [2/2]

template<typename SampleType = float>
CombFilterSampleResult< SampleType > pulp::signal::CombFilterT< SampleType >::process ( SampleType input)
inlinenodiscardnoexcept

◆ processing_latency_samples()

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

Comb structures retain a direct path and therefore add no fixed host compensation latency.

D is an internal signal-path delay.

◆ reset()

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

◆ tail_samples()

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

Finite tail in samples, or nullopt for a recursive infinite tail.

Zero-gain feedback is dry; zero-gain allpass is a pure D-sample delay.

Member Data Documentation

◆ maximum_recursive_gain

template<typename SampleType = float>
double pulp::signal::CombFilterT< SampleType >::maximum_recursive_gain = 0.999
staticconstexpr

◆ minimum_delay_samples

template<typename SampleType = float>
std::size_t pulp::signal::CombFilterT< SampleType >::minimum_delay_samples = 2u
staticconstexpr

The documentation for this class was generated from the following file:
  • /home/runner/work/pulp/pulp/core/signal/include/pulp/signal/comb_filter.hpp