Open FFBoard
Open source force feedback firmware
Filters.h
Go to the documentation of this file.
1/*
2 * Filters.h
3 *
4 * Created on: Feb 13, 2020
5 * Author: Yannick
6 */
7
8#ifndef FILTERS_H_
9#define FILTERS_H_
10#include "cppmain.h"
11
12#ifdef __cplusplus
13
14// Frequency in hz, q in float q*100. Example: Q 0.5 -> 50
16 uint16_t freq;
17 uint8_t q;
18};
19
20enum class BiquadType : uint8_t {
21 lowpass = 0,
24 notch,
25 peak,
28};
29
30class TMC4671Biquad;
31class Biquad{
33public:
34 Biquad();
35 Biquad(BiquadType type, float Fc, float Q, float peakGainDB);
36 ~Biquad();
37 float process(float in);
38 void setBiquad(BiquadType type, float Fc, float Q, float peakGain);
39 void setFc(float Fc); //frequency
40 float getFc() const;
41 void setQ(float Q);
42 float getQ() const;
43 void calcBiquad(void);
44
45protected:
46
48 float a0, a1, a2, b1, b2;
49 float Fc, Q, peakGain;
50 float z1, z2;
51};
52
53
54#endif
55
56#endif /* FILTERS_H_ */
BiquadType
Definition: Filters.h:20
Definition: Filters.h:31
float a0
Definition: Filters.h:48
float b1
Definition: Filters.h:48
float z1
Definition: Filters.h:50
void setFc(float Fc)
Definition: Filters.cpp:28
friend TMC4671Biquad
Definition: Filters.h:32
float z2
Definition: Filters.h:50
float b2
Definition: Filters.h:48
float process(float in)
Definition: Filters.cpp:53
BiquadType type
Definition: Filters.h:47
float getQ() const
Definition: Filters.cpp:46
void setQ(float Q)
Definition: Filters.cpp:41
Biquad()
Definition: Filters.cpp:13
void calcBiquad(void)
Definition: Filters.cpp:72
float a1
Definition: Filters.h:48
float Q
Definition: Filters.h:49
float getFc() const
Definition: Filters.cpp:34
float a2
Definition: Filters.h:48
float peakGain
Definition: Filters.h:49
void setBiquad(BiquadType type, float Fc, float Q, float peakGain)
Definition: Filters.cpp:60
float Fc
Definition: Filters.h:49
~Biquad()
Definition: Filters.cpp:20
uint16_t freq
Definition: Filters.h:16