minilogue xd SDK  v1.1-0
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
dsp::BiQuad::Coeffs Struct Reference

Filter coefficients. More...

#include <biquad.hpp>

Public Member Functions

 Coeffs ()
 Default constructor.
 
void setPoleLP (const float pole)
 Calculate coefficients for single pole low pass filter. More...
 
void setPoleHP (const float pole)
 Calculate coefficients for single pole high pass filter. More...
 
void setFODC (const float pole)
 Calculate coefficients for single pole DC filter. More...
 
void setFOLP (const float k)
 Calculate coefficients for first order low pass filter. More...
 
void setFOHP (const float k)
 Calculate coefficients for first order high pass filter. More...
 
void setFOAP (const float k)
 Calculate coefficients for first order all pass filter. More...
 
void setFOAP2 (const float wc)
 Calculate coefficients for first order all pass filter. More...
 
void setSODC (const float pole)
 Calculate coefficients for second order DC filter. More...
 
void setSOLP (const float k, const float q)
 Calculate coefficients for second order low pass filter. More...
 
void setSOHP (const float k, const float q)
 Calculate coefficients for second order high pass filter. More...
 
void setSOBP (const float k, const float q)
 Calculate coefficients for second order band pass filter. More...
 
void setSOBR (const float k, const float q)
 Calculate coefficients for second order band reject filter. More...
 
void setSOAP1 (const float k, const float q)
 Calculate coefficients for second order all pass filter. More...
 
void setSOAP2 (const float delta, const float gamma)
 Calculate coefficients for second order all pass filter. More...
 
void setSOAP3 (const float delta, const float radius)
 Calculate coefficients for second order all pass filter. More...
 

Static Public Member Functions

static float wc (const float fc, const float fsrecip)
 Convert Hz frequency to radians. More...
 

Public Attributes

float ff0
 
float ff1
 
float ff2
 
float fb1
 
float fb2
 

Detailed Description

Filter coefficients.

Definition at line 65 of file biquad.hpp.

Member Function Documentation

◆ setFOAP()

void dsp::BiQuad::Coeffs::setFOAP ( const float  k)
inline

Calculate coefficients for first order all pass filter.

Parameters
kTangent of PI x cutoff frequency in radians: tan(pi*wc)

Definition at line 168 of file biquad.hpp.

168  {
169  // k = tan(pi*wc)
170  const float kp1 = k+1.f;
171  const float km1 = k-1.f;
172  ff0 = fb1 = km1 / kp1;
173  ff1 = 1.f;
174  fb2 = ff2 = 0.f;
175  }

◆ setFOAP2()

void dsp::BiQuad::Coeffs::setFOAP2 ( const float  wc)
inline

Calculate coefficients for first order all pass filter.

Parameters
wccutoff frequency in radians
Note
Alternative implementation with no tangeant lookup

Definition at line 185 of file biquad.hpp.

185  {
186  // Note: alternative implementation for use in phasers
187  const float g1 = 1.f - wc;
188  ff0 = g1;
189  ff1 = -1;
190  fb1 = -g1;
191  fb2 = ff2 = 0.f;
192  }

◆ setFODC()

void dsp::BiQuad::Coeffs::setFODC ( const float  pole)
inline

Calculate coefficients for single pole DC filter.

Parameters
polePole position in radians

Definition at line 125 of file biquad.hpp.

125  {
126  ff0 = 1.f;
127  ff1 = -1.f;
128  fb1 = -pole;
129  fb2 = ff2 = 0.f;
130  }

◆ setFOHP()

void dsp::BiQuad::Coeffs::setFOHP ( const float  k)
inline

Calculate coefficients for first order high pass filter.

Parameters
kTangent of PI x cutoff frequency in radians: tan(pi*wc)

Definition at line 152 of file biquad.hpp.

152  {
153  // k = tan(pi*wc)
154  const float kp1 = k+1.f;
155  const float km1 = k-1.f;
156  ff0 = 1.f / kp1;
157  ff1 = -ff0;
158  fb1 = km1 / kp1;
159  fb2 = ff2 = 0.f;
160  }

◆ setFOLP()

void dsp::BiQuad::Coeffs::setFOLP ( const float  k)
inline

Calculate coefficients for first order low pass filter.

Parameters
kTangent of PI x cutoff frequency in radians: tan(pi*wc)

Definition at line 138 of file biquad.hpp.

138  {
139  const float kp1 = k+1.f;
140  const float km1 = k-1.f;
141  ff0 = ff1 = k / kp1;
142  fb1 = km1 / kp1;
143  fb2 = ff2 = 0.f;
144  }

◆ setPoleHP()

void dsp::BiQuad::Coeffs::setPoleHP ( const float  pole)
inline

Calculate coefficients for single pole high pass filter.

Parameters
polePole position in radians

Definition at line 113 of file biquad.hpp.

113  {
114  ff0 = 1.f - pole;
115  fb1 = pole;
116  fb2 = ff2 = ff1 = 0.f;
117  }

◆ setPoleLP()

void dsp::BiQuad::Coeffs::setPoleLP ( const float  pole)
inline

Calculate coefficients for single pole low pass filter.

Parameters
polePole position in radians

Definition at line 101 of file biquad.hpp.

101  {
102  ff0 = 1.f - pole;
103  fb1 = -pole;
104  fb2 = ff2 = ff1 = 0.f;
105  }

◆ setSOAP1()

void dsp::BiQuad::Coeffs::setSOAP1 ( const float  k,
const float  q 
)
inline

Calculate coefficients for second order all pass filter.

Parameters
kTangent of PI x cutoff frequency in radians: tan(pi*wc)
qInverse of relative bandwidth (Fc / Fb)

Definition at line 286 of file biquad.hpp.

286  {
287  // k = tan(pi*wc)
288  // q is inverse of relative bandwidth (Fc / Fb)
289  const float qk2 = q * k * k;
290  const float qk2_k_q_r = 1.f / (qk2 + k + q);
291  ff0 = fb2 = (qk2 - k + q) * qk2_k_q_r;
292  ff1 = fb1 = 2.f * (qk2 - q) * qk2_k_q_r;
293  ff2 = 1.f;
294  }

◆ setSOAP2()

void dsp::BiQuad::Coeffs::setSOAP2 ( const float  delta,
const float  gamma 
)
inline

Calculate coefficients for second order all pass filter.

Parameters
deltacos(2pi*wc)
gammatan(pi * wb)
Note
q is inverse of relative bandwidth (wc / wb)
Alternative implementation, so called "tunable" in DAFX second edition.

Definition at line 306 of file biquad.hpp.

306  {
307  // Note: Alternative implementation .. so called "tunable" in DAFX.
308  // delta = cos(2pi*wc)
309  const float c = (gamma - 1.f) / (gamma + 1.f);
310  const float d = -delta;
311  ff0 = fb2 = -c;
312  ff1 = fb1 = d * (1.f - c);
313  ff2 = 1.f;
314  }

◆ setSOAP3()

void dsp::BiQuad::Coeffs::setSOAP3 ( const float  delta,
const float  radius 
)
inline

Calculate coefficients for second order all pass filter.

Parameters
deltacos(2pi*wc)
radius
Note
Another alternative implementation.

Definition at line 325 of file biquad.hpp.

325  {
326  // Note: alternative implementation for use in phasers
327  // delta = cos(2pi * wc)
328  const float a1 = -2.f * radius * delta;
329  const float a2 = radius * radius;
330  ff0 = fb2 = a2;
331  ff1 = fb1 = a1;
332  ff2 = 1.f;
333  }

◆ setSOBP()

void dsp::BiQuad::Coeffs::setSOBP ( const float  k,
const float  q 
)
inline

Calculate coefficients for second order band pass filter.

Parameters
kTangent of PI x cutoff frequency in radians: tan(pi*wc)
qResonance with flat response at q = sqrt(2)

Definition at line 250 of file biquad.hpp.

250  {
251  // k = tan(pi*wc)
252  // q is inverse of relative bandwidth (Fc / Fb)
253  const float qk2 = q * k * k;
254  const float qk2_k_q_r = 1.f / (qk2 + k + q);
255  ff0 = k * qk2_k_q_r;
256  ff1 = 0.f;
257  ff2 = -ff0;
258  fb1 = 2.f * (qk2 - q) * qk2_k_q_r;
259  fb2 = (qk2 - k + q) * qk2_k_q_r;
260  }

◆ setSOBR()

void dsp::BiQuad::Coeffs::setSOBR ( const float  k,
const float  q 
)
inline

Calculate coefficients for second order band reject filter.

Parameters
kTangent of PI x cutoff frequency in radians: tan(pi*wc)
qResonance with flat response at q = sqrt(2)

Definition at line 269 of file biquad.hpp.

269  {
270  // k = tan(pi*wc)
271  // q is inverse of relative bandwidth (Fc / Fb)
272  const float qk2 = q * k * k;
273  const float qk2_k_q_r = 1.f / (qk2 + k + q);
274  ff0 = ff2 = (qk2 + q) * qk2_k_q_r;
275  ff1 = fb1 = 2.f * (qk2 - q) * qk2_k_q_r;
276  fb2 = (qk2 - k + q) * qk2_k_q_r;
277  }

◆ setSODC()

void dsp::BiQuad::Coeffs::setSODC ( const float  pole)
inline

Calculate coefficients for second order DC filter.

Parameters
polePole position in radians

Definition at line 200 of file biquad.hpp.

200  {
201  ff0 = ff2 = 1.f;
202  ff1 = 2.f;
203  fb1 = -2.f * pole;
204  fb2 = pole * pole;
205  }

◆ setSOHP()

void dsp::BiQuad::Coeffs::setSOHP ( const float  k,
const float  q 
)
inline

Calculate coefficients for second order high pass filter.

Parameters
kTangent of PI x cutoff frequency in radians: tan(pi*wc)
qResonance with flat response at q = sqrt(2)

Definition at line 232 of file biquad.hpp.

232  {
233  // k = tan(pi*wc)
234  // flat response at q = sqrt(2)
235  const float qk2 = q * k * k;
236  const float qk2_k_q_r = 1.f / (qk2 + k + q);
237  ff0 = ff2 = q * qk2_k_q_r;
238  ff1 = -2.f * ff0;
239  fb1 = 2.f * (qk2 - q) * qk2_k_q_r;
240  fb2 = (qk2 - k + q) * qk2_k_q_r;
241  }

◆ setSOLP()

void dsp::BiQuad::Coeffs::setSOLP ( const float  k,
const float  q 
)
inline

Calculate coefficients for second order low pass filter.

Parameters
kTangent of PI x cutoff frequency in radians: tan(pi*wc)
qResonance with flat response at q = sqrt(2)

Definition at line 214 of file biquad.hpp.

214  {
215  // k = tan(pi*wc)
216  // flat response at q = sqrt(2)
217  const float qk2 = q * k * k;
218  const float qk2_k_q_r = 1.f / (qk2 + k + q);
219  ff0 = ff2 = qk2 * qk2_k_q_r;
220  ff1 = 2.f * ff0;
221  fb1 = 2.f * (qk2 - q) * qk2_k_q_r;
222  fb2 = (qk2 - k + q) * qk2_k_q_r;
223  }

◆ wc()

static float dsp::BiQuad::Coeffs::wc ( const float  fc,
const float  fsrecip 
)
inlinestatic

Convert Hz frequency to radians.

Parameters
fcFrequency in Hz
fsrecipReciprocal of sampling frequency (1/Fs)

Definition at line 89 of file biquad.hpp.

89  {
90  return fc * fsrecip;
91  }

The documentation for this struct was generated from the following file:
dsp::BiQuad::Coeffs::wc
static float wc(const float fc, const float fsrecip)
Convert Hz frequency to radians.
Definition: biquad.hpp:89