iir1
Loading...
Searching...
No Matches
RBJ.h
1
35
36#pragma once
37
38#include "Common.h"
39#include "Biquad.h"
40#include "State.h"
41
42namespace Iir {
43
57
58#define ONESQRT2 (1/sqrt(2))
59
60namespace RBJ {
61
65 struct IIR_EXPORT RBJbase : Biquad
66 {
67 public:
69 template <typename Sample>
70 inline Sample filter(Sample s) {
71 return static_cast<Sample>(state.filter((double)s,*this));
72 }
73
74 void reset() {
75 state.reset();
76 }
77
79 return state;
80 }
81 private:
82 DirectFormI state = {};
83 };
84
88 struct IIR_EXPORT LowPass : RBJbase
89 {
95 void setupN(double cutoffFrequency,
96 double q = ONESQRT2);
97
104 void setup(double sampleRate,
105 double cutoffFrequency,
106 double q = ONESQRT2) {
107 setupN(cutoffFrequency / sampleRate, q);
108 }
109 };
110
114 struct IIR_EXPORT HighPass : RBJbase
115 {
121 void setupN(double cutoffFrequency,
122 double q = ONESQRT2);
129 void setup (double sampleRate,
130 double cutoffFrequency,
131 double q = ONESQRT2) {
132 setupN(cutoffFrequency / sampleRate, q);
133 }
134 };
135
139 struct IIR_EXPORT BandPass1 : RBJbase
140 {
146 void setupN(double centerFrequency,
147 double bandWidth);
154 void setup (double sampleRate,
155 double centerFrequency,
156 double bandWidth) {
157 setupN(centerFrequency / sampleRate, bandWidth);
158 }
159 };
160
164 struct IIR_EXPORT BandPass2 : RBJbase
165 {
171 void setupN(double centerFrequency,
172 double bandWidth);
179 void setup (double sampleRate,
180 double centerFrequency,
181 double bandWidth) {
182 setupN(centerFrequency / sampleRate, bandWidth);
183 }
184 };
185
190 struct IIR_EXPORT BandStop : RBJbase
191 {
197 void setupN(double centerFrequency,
198 double bandWidth);
205 void setup (double sampleRate,
206 double centerFrequency,
207 double bandWidth) {
208 setupN(centerFrequency / sampleRate, bandWidth);
209 }
210 };
211
223 struct IIR_EXPORT IIRNotch : RBJbase
224 {
230 void setupN(double centerFrequency,
231 double q_factor = 10);
238 void setup (double sampleRate,
239 double centerFrequency,
240 double q_factor = 10) {
241 setupN(centerFrequency / sampleRate, q_factor);
242 }
243 };
244
248 struct IIR_EXPORT LowShelf : RBJbase
249 {
256 void setupN(double cutoffFrequency,
257 double gainDb,
258 double shelfSlope = 1);
266 void setup (double sampleRate,
267 double cutoffFrequency,
268 double gainDb,
269 double shelfSlope = 1) {
270 setupN( cutoffFrequency / sampleRate, gainDb, shelfSlope);
271 }
272 };
273
277 struct IIR_EXPORT HighShelf : RBJbase
278 {
285 void setupN(double cutoffFrequency,
286 double gainDb,
287 double shelfSlope = 1);
295 void setup (double sampleRate,
296 double cutoffFrequency,
297 double gainDb,
298 double shelfSlope = 1) {
299 setupN( cutoffFrequency / sampleRate, gainDb, shelfSlope);
300 }
301 };
302
306 struct IIR_EXPORT BandShelf : RBJbase
307 {
314 void setupN(double centerFrequency,
315 double gainDb,
316 double bandWidth);
324 void setup (double sampleRate,
325 double centerFrequency,
326 double gainDb,
327 double bandWidth) {
328 setupN(centerFrequency / sampleRate, gainDb, bandWidth);
329 }
330 };
331
335 struct IIR_EXPORT AllPass : RBJbase
336 {
342 void setupN(double phaseFrequency,
343 double q = ONESQRT2);
344
351 void setup (double sampleRate,
352 double phaseFrequency,
353 double q = ONESQRT2) {
354 setupN( phaseFrequency / sampleRate, q);
355 }
356 };
357
358}
359
360}
Definition State.h:55
Definition Biquad.cpp:40
Definition RBJ.h:336
void setupN(double phaseFrequency, double q=(1/sqrt(2)))
Definition RBJ.cpp:198
void setup(double sampleRate, double phaseFrequency, double q=(1/sqrt(2)))
Definition RBJ.h:351
Definition RBJ.h:140
void setupN(double centerFrequency, double bandWidth)
Definition RBJ.cpp:75
void setup(double sampleRate, double centerFrequency, double bandWidth)
Definition RBJ.h:154
Definition RBJ.h:165
void setup(double sampleRate, double centerFrequency, double bandWidth)
Definition RBJ.h:179
void setupN(double centerFrequency, double bandWidth)
Definition RBJ.cpp:91
Definition RBJ.h:307
void setup(double sampleRate, double centerFrequency, double gainDb, double bandWidth)
Definition RBJ.h:324
void setupN(double centerFrequency, double gainDb, double bandWidth)
Definition RBJ.cpp:178
Definition RBJ.h:191
void setupN(double centerFrequency, double bandWidth)
Definition RBJ.cpp:107
void setup(double sampleRate, double centerFrequency, double bandWidth)
Definition RBJ.h:205
Definition RBJ.h:115
void setup(double sampleRate, double cutoffFrequency, double q=(1/sqrt(2)))
Definition RBJ.h:129
void setupN(double cutoffFrequency, double q=(1/sqrt(2)))
Definition RBJ.cpp:59
Definition RBJ.h:278
void setupN(double cutoffFrequency, double gainDb, double shelfSlope=1)
Definition RBJ.cpp:158
void setup(double sampleRate, double cutoffFrequency, double gainDb, double shelfSlope=1)
Definition RBJ.h:295
Definition RBJ.h:224
void setupN(double centerFrequency, double q_factor=10)
Definition RBJ.cpp:123
void setup(double sampleRate, double centerFrequency, double q_factor=10)
Definition RBJ.h:238
Definition RBJ.h:89
void setupN(double cutoffFrequency, double q=(1/sqrt(2)))
Definition RBJ.cpp:43
void setup(double sampleRate, double cutoffFrequency, double q=(1/sqrt(2)))
Definition RBJ.h:104
Definition RBJ.h:249
void setupN(double cutoffFrequency, double gainDb, double shelfSlope=1)
Definition RBJ.cpp:138
void setup(double sampleRate, double cutoffFrequency, double gainDb, double shelfSlope=1)
Definition RBJ.h:266
Definition RBJ.h:66
void reset()
resets the delay lines to zero
Definition RBJ.h:74
Sample filter(Sample s)
filter operation
Definition RBJ.h:70
const DirectFormI & getState()
gets the delay lines (=state) of the filter
Definition RBJ.h:78