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

A fixed-storage Chebyshev-series transfer function. More...

#include <nonlinear_shaping.hpp>

Public Member Functions

 ChebyshevHarmonicShaperT () noexcept
void prepare (double sample_rate)
void set_alias_policy (NonlinearAliasPolicy policy)
NonlinearAliasPolicy alias_policy () const noexcept
int oversample_factor () const noexcept
int latency_samples () const noexcept
int tail_samples () const noexcept
double sample_rate () const noexcept
void clear_harmonics () noexcept
void set_harmonic (int order, double amplitude) noexcept
double harmonic (int order) const noexcept
double small_signal_gain () const noexcept
 The exact derivative of the configured, unclipped series at zero.
double worst_case_output () const noexcept
 A transfer-domain bound, independent of the selected alias filter.
void reset () noexcept
SampleType process (SampleType input) noexcept
void process_block (const SampleType *input, SampleType *output, std::size_t sample_count) noexcept
double shape (double input) const noexcept

Static Public Member Functions

static constexpr double dc_output () noexcept

Static Public Attributes

static constexpr int kMaxHarmonic = 16

Detailed Description

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

A fixed-storage Chebyshev-series transfer function.

Coefficient zero is intentionally unavailable: every polynomial is translated by its value at zero so digital silence remains silence even when even harmonics are active. Inputs are constrained to the Chebyshev design domain [-1, 1]; the alias policy also band-limits the resulting boundary corners unless raw off mode is selected.

Constructor & Destructor Documentation

◆ ChebyshevHarmonicShaperT()

template<typename SampleType = float>
pulp::signal::ChebyshevHarmonicShaperT< SampleType >::ChebyshevHarmonicShaperT ( )
inlinenoexcept

Member Function Documentation

◆ alias_policy()

template<typename SampleType = float>
NonlinearAliasPolicy pulp::signal::ChebyshevHarmonicShaperT< SampleType >::alias_policy ( ) const
inlinenoexcept

◆ clear_harmonics()

template<typename SampleType = float>
void pulp::signal::ChebyshevHarmonicShaperT< SampleType >::clear_harmonics ( )
inlinenoexcept

◆ dc_output()

template<typename SampleType = float>
constexpr double pulp::signal::ChebyshevHarmonicShaperT< SampleType >::dc_output ( )
inlinestaticconstexprnoexcept

◆ harmonic()

template<typename SampleType = float>
double pulp::signal::ChebyshevHarmonicShaperT< SampleType >::harmonic ( int order) const
inlinenoexcept

◆ latency_samples()

template<typename SampleType = float>
int pulp::signal::ChebyshevHarmonicShaperT< SampleType >::latency_samples ( ) const
inlinenoexcept

◆ oversample_factor()

template<typename SampleType = float>
int pulp::signal::ChebyshevHarmonicShaperT< SampleType >::oversample_factor ( ) const
inlinenoexcept

◆ prepare()

template<typename SampleType = float>
void pulp::signal::ChebyshevHarmonicShaperT< SampleType >::prepare ( double sample_rate)
inline

◆ process()

template<typename SampleType = float>
SampleType pulp::signal::ChebyshevHarmonicShaperT< SampleType >::process ( SampleType input)
inlinenoexcept

◆ process_block()

template<typename SampleType = float>
void pulp::signal::ChebyshevHarmonicShaperT< SampleType >::process_block ( const SampleType * input,
SampleType * output,
std::size_t sample_count )
inlinenoexcept

◆ reset()

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

◆ sample_rate()

template<typename SampleType = float>
double pulp::signal::ChebyshevHarmonicShaperT< SampleType >::sample_rate ( ) const
inlinenoexcept

◆ set_alias_policy()

template<typename SampleType = float>
void pulp::signal::ChebyshevHarmonicShaperT< SampleType >::set_alias_policy ( NonlinearAliasPolicy policy)
inline

◆ set_harmonic()

template<typename SampleType = float>
void pulp::signal::ChebyshevHarmonicShaperT< SampleType >::set_harmonic ( int order,
double amplitude )
inlinenoexcept

◆ shape()

template<typename SampleType = float>
double pulp::signal::ChebyshevHarmonicShaperT< SampleType >::shape ( double input) const
inlinenoexcept

◆ small_signal_gain()

template<typename SampleType = float>
double pulp::signal::ChebyshevHarmonicShaperT< SampleType >::small_signal_gain ( ) const
inlinenoexcept

The exact derivative of the configured, unclipped series at zero.

◆ tail_samples()

template<typename SampleType = float>
int pulp::signal::ChebyshevHarmonicShaperT< SampleType >::tail_samples ( ) const
inlinenoexcept

◆ worst_case_output()

template<typename SampleType = float>
double pulp::signal::ChebyshevHarmonicShaperT< SampleType >::worst_case_output ( ) const
inlinenoexcept

A transfer-domain bound, independent of the selected alias filter.

Member Data Documentation

◆ kMaxHarmonic

template<typename SampleType = float>
int pulp::signal::ChebyshevHarmonicShaperT< SampleType >::kMaxHarmonic = 16
staticconstexpr

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