LMMS
Loading...
Searching...
No Matches
dsp::onepole< T, Coeff > Class Template Reference

#include <onepole.h>

Public Types

typedef std::complex< double > cfloat

Public Member Functions

 onepole ()
void set_lp (float fc, float sr)
 Set coefficients for a lowpass filter.
void set_ap (float fc, float sr)
 Set coefficients for an allpass filter.
void set_ap_w (float w)
void set_hp (float fc, float sr)
 Set coefficients for a highpass filter.
process (T in)
 Process one sample.
process_lp (T in)
 Process one sample, assuming it's a lowpass filter (optimized special case).
process_hp (T in)
 Process one sample, assuming it's a highpass filter (optimized special case).
process_ap (T in)
 Process one sample, assuming it's an allpass filter (optimized special case).
process_ap (T in, float &x1, float &y1)
 Process one sample using external state variables.
process_ap (T in, float &x1, float &y1, float a0)
 Process one sample using external state variables, including filter coeff.
bool empty () const
void sanitize ()
void reset ()
template<class U>
void copy_coeffs (const onepole< U > &src)
float freq_gain (float freq, float sr) const
cfloat h_z (const cfloat &z) const

Public Attributes

x1
y1
Coeff a0
Coeff a1
Coeff b1

Detailed Description

template<class T = float, class Coeff = float>
class dsp::onepole< T, Coeff >

one-pole filter, for floating point values coefficient calculation is based on bilinear transform, and the code itself is based on my very old OneSignal lib lp and hp are somewhat tested, allpass is not tested at all don't use this for integers because it won't work

Member Typedef Documentation

◆ cfloat

template<class T = float, class Coeff = float>
typedef std::complex<double> dsp::onepole< T, Coeff >::cfloat

Constructor & Destructor Documentation

◆ onepole()

template<class T = float, class Coeff = float>
dsp::onepole< T, Coeff >::onepole ( )
inline

Member Function Documentation

◆ copy_coeffs()

template<class T = float, class Coeff = float>
template<class U>
void dsp::onepole< T, Coeff >::copy_coeffs ( const onepole< U > & src)
inline

◆ empty()

template<class T = float, class Coeff = float>
bool dsp::onepole< T, Coeff >::empty ( ) const
inline

◆ freq_gain()

template<class T = float, class Coeff = float>
float dsp::onepole< T, Coeff >::freq_gain ( float freq,
float sr ) const
inline

Return the filter's gain at frequency freq

Parameters
freqFrequency to look up
srFilter sample rate (used to convert frequency to angular frequency)

◆ h_z()

template<class T = float, class Coeff = float>
cfloat dsp::onepole< T, Coeff >::h_z ( const cfloat & z) const
inline

Return H(z) the filter's gain at frequency freq

Parameters
zZ variable (e^jw)

◆ process()

template<class T = float, class Coeff = float>
T dsp::onepole< T, Coeff >::process ( T in)
inline

Process one sample.

◆ process_ap() [1/3]

template<class T = float, class Coeff = float>
T dsp::onepole< T, Coeff >::process_ap ( T in)
inline

Process one sample, assuming it's an allpass filter (optimized special case).

◆ process_ap() [2/3]

template<class T = float, class Coeff = float>
T dsp::onepole< T, Coeff >::process_ap ( T in,
float & x1,
float & y1 )
inline

Process one sample using external state variables.

◆ process_ap() [3/3]

template<class T = float, class Coeff = float>
T dsp::onepole< T, Coeff >::process_ap ( T in,
float & x1,
float & y1,
float a0 )
inline

Process one sample using external state variables, including filter coeff.

◆ process_hp()

template<class T = float, class Coeff = float>
T dsp::onepole< T, Coeff >::process_hp ( T in)
inline

Process one sample, assuming it's a highpass filter (optimized special case).

◆ process_lp()

template<class T = float, class Coeff = float>
T dsp::onepole< T, Coeff >::process_lp ( T in)
inline

Process one sample, assuming it's a lowpass filter (optimized special case).

◆ reset()

template<class T = float, class Coeff = float>
void dsp::onepole< T, Coeff >::reset ( )
inline

◆ sanitize()

template<class T = float, class Coeff = float>
void dsp::onepole< T, Coeff >::sanitize ( )
inline

◆ set_ap()

template<class T = float, class Coeff = float>
void dsp::onepole< T, Coeff >::set_ap ( float fc,
float sr )
inline

Set coefficients for an allpass filter.

◆ set_ap_w()

template<class T = float, class Coeff = float>
void dsp::onepole< T, Coeff >::set_ap_w ( float w)
inline

Set coefficients for an allpass filter, using omega instead of fc and sr omega = (PI / 2) * fc / sr

◆ set_hp()

template<class T = float, class Coeff = float>
void dsp::onepole< T, Coeff >::set_hp ( float fc,
float sr )
inline

Set coefficients for a highpass filter.

◆ set_lp()

template<class T = float, class Coeff = float>
void dsp::onepole< T, Coeff >::set_lp ( float fc,
float sr )
inline

Set coefficients for a lowpass filter.

Member Data Documentation

◆ a0

template<class T = float, class Coeff = float>
Coeff dsp::onepole< T, Coeff >::a0

◆ a1

template<class T = float, class Coeff = float>
Coeff dsp::onepole< T, Coeff >::a1

◆ b1

template<class T = float, class Coeff = float>
Coeff dsp::onepole< T, Coeff >::b1

◆ x1

template<class T = float, class Coeff = float>
T dsp::onepole< T, Coeff >::x1

◆ y1

template<class T = float, class Coeff = float>
T dsp::onepole< T, Coeff >::y1

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