2016-09-10 13:03:27 -07:00
|
|
|
/*
|
|
|
|
* @file biquad.h
|
|
|
|
*
|
|
|
|
* @date Sep 10, 2016
|
2020-01-13 18:57:43 -08:00
|
|
|
* @author Andrey Belomutskiy, (c) 2012-2020
|
2016-09-10 13:03:27 -07:00
|
|
|
*/
|
|
|
|
|
2020-04-01 18:32:21 -07:00
|
|
|
#pragma once
|
2016-09-10 13:03:27 -07:00
|
|
|
|
|
|
|
class Biquad {
|
|
|
|
public:
|
2020-08-21 16:47:12 -07:00
|
|
|
Biquad();
|
|
|
|
|
|
|
|
float filter(float input);
|
|
|
|
|
|
|
|
void configureBandpass(float samplingFrequency, float centerFrequency, float Q);
|
|
|
|
|
|
|
|
// Default Q = 1/sqrt(2) = 0.707 gives a maximally flat passband without any overshoot near the cutoff (ie, Butterworth)
|
|
|
|
void configureLowpass(float samplingFrequency, float cutoffFrequency, float Q = 0.707f);
|
2016-09-10 13:03:27 -07:00
|
|
|
|
2020-08-21 16:47:12 -07:00
|
|
|
private:
|
2016-09-10 13:03:27 -07:00
|
|
|
float a0, a1, a2, b1, b2;
|
|
|
|
float z1, z2;
|
|
|
|
};
|