summaryrefslogtreecommitdiff
path: root/3rdparty/portaudio/qa/loopback/src/biquad_filter.h
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2022-08-27 23:52:56 -0500
committersanine <sanine.not@pm.me>2022-08-27 23:52:56 -0500
commita4dd0ad63c00f4dee3b86dfd3075d1d61b2b3180 (patch)
tree13bd5bfa15e6fea2a12f176bae79adf9c6fd0933 /3rdparty/portaudio/qa/loopback/src/biquad_filter.h
parentbde3e4f1bb7b8f8abca0884a7d994ee1c17a66b1 (diff)
add plibsys
Diffstat (limited to '3rdparty/portaudio/qa/loopback/src/biquad_filter.h')
-rwxr-xr-x3rdparty/portaudio/qa/loopback/src/biquad_filter.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/3rdparty/portaudio/qa/loopback/src/biquad_filter.h b/3rdparty/portaudio/qa/loopback/src/biquad_filter.h
new file mode 100755
index 0000000..0895aba
--- /dev/null
+++ b/3rdparty/portaudio/qa/loopback/src/biquad_filter.h
@@ -0,0 +1,38 @@
+#ifndef _BIQUADFILTER_H
+#define _BIQUADFILTER_H
+
+
+/**
+ * Unit_BiquadFilter implements a second order IIR filter.
+ *
+ * @author (C) 2002 Phil Burk, SoftSynth.com, All Rights Reserved
+ */
+
+#define BIQUAD_MIN_RATIO (0.000001)
+#define BIQUAD_MIN_Q (0.00001)
+
+typedef struct BiquadFilter_s
+{
+ double xn1; // storage for delayed signals
+ double xn2;
+ double yn1;
+ double yn2;
+
+ double a0; // coefficients
+ double a1;
+ double a2;
+
+ double b1;
+ double b2;
+
+ double cos_omega;
+ double sin_omega;
+ double alpha;
+} BiquadFilter;
+
+void BiquadFilter_SetupHighPass( BiquadFilter *filter, double ratio, double Q );
+void BiquadFilter_SetupNotch( BiquadFilter *filter, double ratio, double Q );
+
+void BiquadFilter_Filter( BiquadFilter *filter, float *inputs, float *outputs, int numSamples );
+
+#endif