From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/Winamp/benskiQ/Biquad.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Src/Winamp/benskiQ/Biquad.h (limited to 'Src/Winamp/benskiQ/Biquad.h') 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); +}; + -- cgit