aboutsummaryrefslogtreecommitdiff
path: root/Src/Winamp/benskiQ/Biquad.h
diff options
context:
space:
mode:
authorJean-Francois Mauguit <jfmauguit@mac.com>2024-09-24 09:03:25 -0400
committerGitHub <noreply@github.com>2024-09-24 09:03:25 -0400
commitbab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Winamp/benskiQ/Biquad.h
parent4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff)
parent20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff)
downloadwinamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/Winamp/benskiQ/Biquad.h')
-rw-r--r--Src/Winamp/benskiQ/Biquad.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/Src/Winamp/benskiQ/Biquad.h b/Src/Winamp/benskiQ/Biquad.h
new file mode 100644
index 00000000..ad7ab3a5
--- /dev/null
+++ b/Src/Winamp/benskiQ/Biquad.h
@@ -0,0 +1,29 @@
+#pragma once
+
+class Biquad
+{
+public:
+ Biquad();
+ void copy_filter(const Biquad &other);
+ void SetSampleRate(double fs);
+ void set_freq(double f0);
+ void set_s_eq(const double b[3], const double a[3]);
+ void transform_s_to_z();
+
+ void process_block(float *dest_ptr, const float *src_ptr, long nbr_spl);
+ void clear_buffers();
+
+private:
+ double _s_eq_b[3]; // Coefs for numerator (zeros)
+ double _s_eq_a[3]; // Coefs for denominator (poles)
+ double _z_eq_b[3]; // Direct coefficients, order z^(-n)
+ double _z_eq_a[3]; // Recursive coefficients, order z^(-n)
+ double sampleRate; // Hz, > 0
+ double _f0; // Hz, > 0, _f0 % (_sample_freq/2) != 0
+ double xn[2]; // Input memory, order z^(-n)
+ double yn[2]; // Output memory, order z^(-n)
+ int _mem_pos; // 0 or 1
+
+ inline double process_sample(double x);
+};
+