Signalsmith Audio's DSP Library  1.6.0
Useful C++ classes/templates for audio effects
Nested Classes | Static Attributes | Methods
signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth > Class Template Reference

#include <filters.h>

Detailed Description

template<typename Sample, bool cookbookBandwidth = false>
class signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >

A standard biquad.

This is not guaranteed to be stable if modulated at audio rate.

The default highpass/lowpass bandwidth (defaultBandwidth) produces a Butterworth filter when bandwidth-compensation is disabled.

Bandwidth compensation defaults to BiquadDesign::oneSided (or BiquadDesign::cookbook if cookbookBandwidth is enabled) for all filter types aside from highpass/lowpass (which use BiquadDesign::bilinear).

Static Attributes

static constexpr double defaultQ = 0.7071067811865476
 
static constexpr double defaultBandwidth = 1.8999686269529916
 

Methods

Sample operator() (Sample x0)
 
void reset ()
 
std::complex< Sample > response (Sample scaledFreq) const
 
Sample responseDb (Sample scaledFreq) const
 
BiquadStaticaddGain (double factor)
 
BiquadStaticaddGainDb (double db)
 
Lowpass
BiquadStaticlowpass (double scaledFreq, double octaves=defaultBandwidth, BiquadDesign design=BiquadDesign::bilinear)
 
BiquadStaticlowpassQ (double scaledFreq, double q, BiquadDesign design=BiquadDesign::bilinear)
 
void lowpass (double scaledFreq, double octaves, bool correctBandwidth)
 
BiquadStaticlowpass (double scaledFreq, BiquadDesign design)
 
Highpass
BiquadStatichighpass (double scaledFreq, double octaves=defaultBandwidth, BiquadDesign design=BiquadDesign::bilinear)
 
BiquadStatichighpassQ (double scaledFreq, double q, BiquadDesign design=BiquadDesign::bilinear)
 
void highpass (double scaledFreq, double octaves, bool correctBandwidth)
 
BiquadStatichighpass (double scaledFreq, BiquadDesign design)
 
Bandpass
BiquadStaticbandpass (double scaledFreq, double octaves=defaultBandwidth, BiquadDesign design=bwDesign)
 
BiquadStaticbandpassQ (double scaledFreq, double q, BiquadDesign design=bwDesign)
 
void bandpass (double scaledFreq, double octaves, bool correctBandwidth)
 
BiquadStaticbandpass (double scaledFreq, BiquadDesign design)
 
Notch
BiquadStaticnotch (double scaledFreq, double octaves=defaultBandwidth, BiquadDesign design=bwDesign)
 
BiquadStaticnotchQ (double scaledFreq, double q, BiquadDesign design=bwDesign)
 
void notch (double scaledFreq, double octaves, bool correctBandwidth)
 
BiquadStaticnotch (double scaledFreq, BiquadDesign design)
 
void bandStop (double scaledFreq, double octaves=1, bool correctBandwidth=true)
 
Peak
BiquadStaticpeak (double scaledFreq, double gain, double octaves=1, BiquadDesign design=bwDesign)
 
BiquadStaticpeakDb (double scaledFreq, double db, double octaves=1, BiquadDesign design=bwDesign)
 
BiquadStaticpeakQ (double scaledFreq, double gain, double q, BiquadDesign design=bwDesign)
 
BiquadStaticpeakDbQ (double scaledFreq, double db, double q, BiquadDesign design=bwDesign)
 
BiquadStaticpeak (double scaledFreq, double gain, BiquadDesign design)
 
High shelf
BiquadStatichighShelf (double scaledFreq, double gain, double octaves=defaultBandwidth, BiquadDesign design=bwDesign)
 
BiquadStatichighShelfDb (double scaledFreq, double db, double octaves=defaultBandwidth, BiquadDesign design=bwDesign)
 
BiquadStatichighShelfQ (double scaledFreq, double gain, double q, BiquadDesign design=bwDesign)
 
BiquadStatichighShelfDbQ (double scaledFreq, double db, double q, BiquadDesign design=bwDesign)
 
BiquadStatichighShelf (double scaledFreq, double gain, double octaves, bool correctBandwidth)
 
BiquadStatichighShelfDb (double scaledFreq, double db, double octaves, bool correctBandwidth)
 
Low shelf
BiquadStaticlowShelf (double scaledFreq, double gain, double octaves=2, BiquadDesign design=bwDesign)
 
BiquadStaticlowShelfDb (double scaledFreq, double db, double octaves=2, BiquadDesign design=bwDesign)
 
BiquadStaticlowShelfQ (double scaledFreq, double gain, double q, BiquadDesign design=bwDesign)
 
BiquadStaticlowShelfDbQ (double scaledFreq, double db, double q, BiquadDesign design=bwDesign)
 
BiquadStaticlowShelf (double scaledFreq, double gain, double octaves, bool correctBandwidth)
 
BiquadStaticlowShelfDb (double scaledFreq, double db, double octaves, bool correctBandwidth)
 
Allpass
BiquadStaticallpass (double scaledFreq, double octaves=1, BiquadDesign design=bwDesign)
 
BiquadStaticallpassQ (double scaledFreq, double q, BiquadDesign design=bwDesign)
 

Method Details

◆ bandpass() [1/2]

template<typename Sample , bool cookbookBandwidth = false>
BiquadStatic& signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::bandpass ( double  scaledFreq,
BiquadDesign  design 
)
inline
Deprecated:
By the time you care about design, you should care about the bandwidth

◆ bandpass() [2/2]

template<typename Sample , bool cookbookBandwidth = false>
void signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::bandpass ( double  scaledFreq,
double  octaves,
bool  correctBandwidth 
)
inline
Deprecated:
use BiquadDesign instead

◆ bandStop()

template<typename Sample , bool cookbookBandwidth = false>
void signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::bandStop ( double  scaledFreq,
double  octaves = 1,
bool  correctBandwidth = true 
)
inline
Deprecated:
alias for .notch()

◆ highpass() [1/2]

template<typename Sample , bool cookbookBandwidth = false>
BiquadStatic& signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::highpass ( double  scaledFreq,
BiquadDesign  design 
)
inline
Deprecated:
By the time you care about design, you should care about the bandwidth

◆ highpass() [2/2]

template<typename Sample , bool cookbookBandwidth = false>
void signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::highpass ( double  scaledFreq,
double  octaves,
bool  correctBandwidth 
)
inline
Deprecated:
use BiquadDesign instead

◆ highShelf()

template<typename Sample , bool cookbookBandwidth = false>
BiquadStatic& signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::highShelf ( double  scaledFreq,
double  gain,
double  octaves,
bool  correctBandwidth 
)
inline
Deprecated:
use BiquadDesign instead

◆ highShelfDb()

template<typename Sample , bool cookbookBandwidth = false>
BiquadStatic& signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::highShelfDb ( double  scaledFreq,
double  db,
double  octaves,
bool  correctBandwidth 
)
inline
Deprecated:
use BiquadDesign instead

◆ lowpass() [1/2]

template<typename Sample , bool cookbookBandwidth = false>
BiquadStatic& signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::lowpass ( double  scaledFreq,
BiquadDesign  design 
)
inline
Deprecated:
By the time you care about design, you should care about the bandwidth

◆ lowpass() [2/2]

template<typename Sample , bool cookbookBandwidth = false>
void signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::lowpass ( double  scaledFreq,
double  octaves,
bool  correctBandwidth 
)
inline
Deprecated:
use BiquadDesign instead

◆ lowShelf()

template<typename Sample , bool cookbookBandwidth = false>
BiquadStatic& signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::lowShelf ( double  scaledFreq,
double  gain,
double  octaves,
bool  correctBandwidth 
)
inline
Deprecated:
use BiquadDesign instead

◆ lowShelfDb()

template<typename Sample , bool cookbookBandwidth = false>
BiquadStatic& signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::lowShelfDb ( double  scaledFreq,
double  db,
double  octaves,
bool  correctBandwidth 
)
inline
Deprecated:
use BiquadDesign instead

◆ notch() [1/2]

template<typename Sample , bool cookbookBandwidth = false>
BiquadStatic& signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::notch ( double  scaledFreq,
BiquadDesign  design 
)
inline
Deprecated:
By the time you care about design, you should care about the bandwidth

◆ notch() [2/2]

template<typename Sample , bool cookbookBandwidth = false>
void signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::notch ( double  scaledFreq,
double  octaves,
bool  correctBandwidth 
)
inline
Deprecated:
use BiquadDesign instead

◆ peak()

template<typename Sample , bool cookbookBandwidth = false>
BiquadStatic& signalsmith::filters::BiquadStatic< Sample, cookbookBandwidth >::peak ( double  scaledFreq,
double  gain,
BiquadDesign  design 
)
inline
Deprecated:
By the time you care about design, you should care about the bandwidth