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

#include <svf.hpp>

Classes

struct  Coefficients
 The TPT state-variable coefficients for a sample rate, cutoff and resonance (Q): g = tan(pi fc / fs), k = 1 / Q, a1 = 1 / (1 + g (g + k)), a2 = g a1, a3 = g a2. More...

Public Types

enum class  Mode { lowpass , highpass , bandpass , notch }

Public Member Functions

void set_sample_rate (SampleType sr)
void set_frequency (SampleType hz)
void set_resonance (SampleType q)
void set_mode (Mode m)
void configure (Mode mode, SampleType sample_rate, SampleType frequency, SampleType resonance)
 Install a coherent coefficient set in one prewarp.
SampleType process (SampleType input)
void process (SampleType *buffer, int num_samples)
 Process a buffer in place.
void reset ()

Static Public Member Functions

static Coefficients design (SampleType sample_rate, SampleType frequency, SampleType resonance)

Member Enumeration Documentation

◆ Mode

template<typename SampleType = float>
enum class pulp::signal::SvfT::Mode
strong
Enumerator
lowpass 
highpass 
bandpass 
notch 

Member Function Documentation

◆ configure()

template<typename SampleType = float>
void pulp::signal::SvfT< SampleType >::configure ( Mode mode,
SampleType sample_rate,
SampleType frequency,
SampleType resonance )
inline

Install a coherent coefficient set in one prewarp.

Use this when sample rate and cutoff change together so neither setter temporarily evaluates the new value against the old value's Nyquist limit.

◆ design()

template<typename SampleType = float>
Coefficients pulp::signal::SvfT< SampleType >::design ( SampleType sample_rate,
SampleType frequency,
SampleType resonance )
inlinestatic

◆ process() [1/2]

template<typename SampleType = float>
void pulp::signal::SvfT< SampleType >::process ( SampleType * buffer,
int num_samples )
inline

Process a buffer in place.

Same arithmetic as the per-sample path, with the mode resolved once per call and the coefficients and integrator states held in registers. The denormal snap runs once per kSnapChunkSamples chunk (snap_chunks()); it only alters states below 1e-15, so the output differs from the per-sample path only once a tail is already below that level.

◆ process() [2/2]

template<typename SampleType = float>
SampleType pulp::signal::SvfT< SampleType >::process ( SampleType input)
inline

◆ reset()

template<typename SampleType = float>
void pulp::signal::SvfT< SampleType >::reset ( )
inline

◆ set_frequency()

template<typename SampleType = float>
void pulp::signal::SvfT< SampleType >::set_frequency ( SampleType hz)
inline

◆ set_mode()

template<typename SampleType = float>
void pulp::signal::SvfT< SampleType >::set_mode ( Mode m)
inline

◆ set_resonance()

template<typename SampleType = float>
void pulp::signal::SvfT< SampleType >::set_resonance ( SampleType q)
inline

◆ set_sample_rate()

template<typename SampleType = float>
void pulp::signal::SvfT< SampleType >::set_sample_rate ( SampleType sr)
inline

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