39#include "MathSupplement.h"
51 class IIR_EXPORT Biquad {
60 complex_t
response (
double normalizedFrequency)
const;
70 double getA0 ()
const {
return m_a0; }
75 double getA1 ()
const {
return m_a1*m_a0; }
80 double getA2 ()
const {
return m_a2*m_a0; }
85 double getB0 ()
const {
return m_b0*m_a0; }
90 double getB1 ()
const {
return m_b1*m_a0; }
95 double getB2 ()
const {
return m_b2*m_a0; }
103 template <
class StateType>
104 inline double filter(
double s, StateType& state)
const
106 return state.filter(s, *
this);
119 void setCoefficients (
double a0,
double a1,
double a2,
120 double b0,
double b1,
double b2);
125 void setOnePole (complex_t pole, complex_t zero);
130 void setTwoPole (complex_t pole1, complex_t zero1,
131 complex_t pole2, complex_t zero2);
138 if (pair.isSinglePole ())
139 setOnePole (pair.poles.first, pair.zeros.first);
141 setTwoPole (pair.poles.first, pair.zeros.first,
142 pair.poles.second, pair.zeros.second);
156 void applyScale (
double scale);
174 struct IIR_EXPORT BiquadPoleState : PoleZeroPair
176 BiquadPoleState () =
default;
178 explicit BiquadPoleState (
const Biquad& s);
double getA2() const
Definition Biquad.h:80
void setOnePole(complex_t pole, complex_t zero)
Definition Biquad.cpp:141
double getA1() const
Definition Biquad.h:75
double filter(double s, StateType &state) const
Definition Biquad.h:104
std::vector< PoleZeroPair > getPoleZeros() const
Definition Biquad.cpp:115
void setPoleZeroPair(const PoleZeroPair &pair)
Definition Biquad.h:136
void setTwoPole(complex_t pole1, complex_t zero1, complex_t pole2, complex_t zero2)
Definition Biquad.cpp:156
double getA0() const
Definition Biquad.h:70
double getB0() const
Definition Biquad.h:85
double getB2() const
Definition Biquad.h:95
complex_t response(double normalizedFrequency) const
Definition Biquad.cpp:88
double getB1() const
Definition Biquad.h:90