40#include "MathSupplement.h"
52 class IIR_EXPORT Biquad {
61 complex_t
response (
double normalizedFrequency)
const;
71 double getA0 ()
const {
return m_a0; }
76 double getA1 ()
const {
return m_a1*m_a0; }
81 double getA2 ()
const {
return m_a2*m_a0; }
86 double getB0 ()
const {
return m_b0*m_a0; }
91 double getB1 ()
const {
return m_b1*m_a0; }
96 double getB2 ()
const {
return m_b2*m_a0; }
104 template <
class StateType>
105 inline double filter(
double s, StateType& state)
const
107 return state.filter(s, *
this);
120 void setCoefficients (
double a0,
double a1,
double a2,
121 double b0,
double b1,
double b2);
126 void setOnePole (complex_t pole, complex_t zero);
131 void setTwoPole (complex_t pole1, complex_t zero1,
132 complex_t pole2, complex_t zero2);
139 if (pair.isSinglePole ())
140 setOnePole (pair.poles.first, pair.zeros.first);
142 setTwoPole (pair.poles.first, pair.zeros.first,
143 pair.poles.second, pair.zeros.second);
157 void applyScale (
double scale);
175 struct IIR_EXPORT BiquadPoleState : PoleZeroPair
177 BiquadPoleState () =
default;
179 explicit BiquadPoleState (
const Biquad& s);
double getA2() const
Definition Biquad.h:81
void setOnePole(complex_t pole, complex_t zero)
Definition Biquad.cpp:141
double getA1() const
Definition Biquad.h:76
double filter(double s, StateType &state) const
Definition Biquad.h:105
std::vector< PoleZeroPair > getPoleZeros() const
Definition Biquad.cpp:115
void setPoleZeroPair(const PoleZeroPair &pair)
Definition Biquad.h:137
void setTwoPole(complex_t pole1, complex_t zero1, complex_t pole2, complex_t zero2)
Definition Biquad.cpp:156
double getA0() const
Definition Biquad.h:71
double getB0() const
Definition Biquad.h:86
double getB2() const
Definition Biquad.h:96
complex_t response(double normalizedFrequency) const
Definition Biquad.cpp:88
double getB1() const
Definition Biquad.h:91