-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBiquad.cpp
More file actions
41 lines (31 loc) · 724 Bytes
/
Copy pathBiquad.cpp
File metadata and controls
41 lines (31 loc) · 724 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//
// Biquad.cpp
// LZLPF
//
// Created by Luke Zeitlin on 23/05/2017.
//
//
#include "Biquad.hpp"
void Biquad::flushDelays()
{
m_f_Xz_1 = 0;
m_f_Xz_2 = 0;
m_f_Yz_1 = 0;
m_f_Yz_2 = 0;
}
float Biquad::doBiQuad(float f_xn)
{
//simply implements transfer function of a standard BiQuad filter
float yn = m_f_a0*f_xn + m_f_a1*m_f_Xz_1 + m_f_a2*m_f_Xz_2 - m_f_b1*m_f_Yz_1 - m_f_b2*m_f_Yz_2;
// underflow check
if(yn > 0.0 && yn < FLT_MIN_PLUS) yn = 0;
if(yn < 0.0 && yn > FLT_MIN_MINUS) yn = 0;
// shuffle delays
// Y delays
m_f_Yz_2 = m_f_Yz_1;
m_f_Yz_1 = yn;
// X delays
m_f_Xz_2 = m_f_Xz_1;
m_f_Xz_1 = f_xn;
return yn;
}