iir1
RBJ.h
1 
36 #ifndef IIR1_RBJ_H
37 #define IIR1_RBJ_H
38 
39 #include "Common.h"
40 #include "Biquad.h"
41 #include "State.h"
42 
43 namespace Iir {
44 
59 #define ONESQRT2 (1/sqrt(2))
60 
61 namespace RBJ {
62 
66  struct DllExport RBJbase : Biquad
67  {
68  public:
70  template <typename Sample>
71  inline Sample filter(Sample s) {
72  return static_cast<Sample>(state.filter((double)s,*this));
73  }
75  void reset() {
76  state.reset();
77  }
79  const DirectFormI& getState() {
80  return state;
81  }
82  private:
83  DirectFormI state;
84  };
85 
89  struct DllExport LowPass : RBJbase
90  {
96  void setupN(double cutoffFrequency,
97  double q = ONESQRT2);
98 
105  void setup(double sampleRate,
106  double cutoffFrequency,
107  double q = ONESQRT2) {
108  setupN(cutoffFrequency / sampleRate, q);
109  }
110  };
111 
115  struct DllExport HighPass : RBJbase
116  {
122  void setupN(double cutoffFrequency,
123  double q = ONESQRT2);
130  void setup (double sampleRate,
131  double cutoffFrequency,
132  double q = ONESQRT2) {
133  setupN(cutoffFrequency / sampleRate, q);
134  }
135  };
136 
140  struct DllExport BandPass1 : RBJbase
141  {
147  void setupN(double centerFrequency,
148  double bandWidth);
155  void setup (double sampleRate,
156  double centerFrequency,
157  double bandWidth) {
158  setupN(centerFrequency / sampleRate, bandWidth);
159  }
160  };
161 
165  struct DllExport BandPass2 : RBJbase
166  {
172  void setupN(double centerFrequency,
173  double bandWidth);
180  void setup (double sampleRate,
181  double centerFrequency,
182  double bandWidth) {
183  setupN(centerFrequency / sampleRate, bandWidth);
184  }
185  };
186 
191  struct DllExport BandStop : RBJbase
192  {
198  void setupN(double centerFrequency,
199  double bandWidth);
206  void setup (double sampleRate,
207  double centerFrequency,
208  double bandWidth) {
209  setupN(centerFrequency / sampleRate, bandWidth);
210  }
211  };
212 
224  struct DllExport IIRNotch : RBJbase
225  {
231  void setupN(double centerFrequency,
232  double q_factor = 10);
239  void setup (double sampleRate,
240  double centerFrequency,
241  double q_factor = 10) {
242  setupN(centerFrequency / sampleRate, q_factor);
243  }
244  };
245 
249  struct DllExport LowShelf : RBJbase
250  {
257  void setupN(double cutoffFrequency,
258  double gainDb,
259  double shelfSlope = 1);
267  void setup (double sampleRate,
268  double cutoffFrequency,
269  double gainDb,
270  double shelfSlope = 1) {
271  setupN( cutoffFrequency / sampleRate, gainDb, shelfSlope);
272  }
273  };
274 
278  struct DllExport HighShelf : RBJbase
279  {
286  void setupN(double cutoffFrequency,
287  double gainDb,
288  double shelfSlope = 1);
296  void setup (double sampleRate,
297  double cutoffFrequency,
298  double gainDb,
299  double shelfSlope = 1) {
300  setupN( cutoffFrequency / sampleRate, gainDb, shelfSlope);
301  }
302  };
303 
307  struct DllExport BandShelf : RBJbase
308  {
315  void setupN(double centerFrequency,
316  double gainDb,
317  double bandWidth);
325  void setup (double sampleRate,
326  double centerFrequency,
327  double gainDb,
328  double bandWidth) {
329  setupN(centerFrequency / sampleRate, gainDb, bandWidth);
330  }
331  };
332 
336  struct DllExport AllPass : RBJbase
337  {
343  void setupN(double phaseFrequency,
344  double q = ONESQRT2);
345 
352  void setup (double sampleRate,
353  double phaseFrequency,
354  double q = ONESQRT2) {
355  setupN( phaseFrequency / sampleRate, q);
356  }
357  };
358 
359 }
360 
361 }
362 
363 
364 #endif
Definition: Biquad.h:53
Definition: State.h:56
Definition: Biquad.cpp:40
Definition: RBJ.h:337
void setup(double sampleRate, double phaseFrequency, double q=(1/sqrt(2)))
Definition: RBJ.h:352
Definition: RBJ.h:141
void setup(double sampleRate, double centerFrequency, double bandWidth)
Definition: RBJ.h:155
Definition: RBJ.h:166
void setup(double sampleRate, double centerFrequency, double bandWidth)
Definition: RBJ.h:180
Definition: RBJ.h:308
void setup(double sampleRate, double centerFrequency, double gainDb, double bandWidth)
Definition: RBJ.h:325
Definition: RBJ.h:192
void setup(double sampleRate, double centerFrequency, double bandWidth)
Definition: RBJ.h:206
Definition: RBJ.h:116
void setup(double sampleRate, double cutoffFrequency, double q=(1/sqrt(2)))
Definition: RBJ.h:130
Definition: RBJ.h:279
void setup(double sampleRate, double cutoffFrequency, double gainDb, double shelfSlope=1)
Definition: RBJ.h:296
Definition: RBJ.h:225
void setup(double sampleRate, double centerFrequency, double q_factor=10)
Definition: RBJ.h:239
Definition: RBJ.h:90
void setup(double sampleRate, double cutoffFrequency, double q=(1/sqrt(2)))
Definition: RBJ.h:105
Definition: RBJ.h:250
void setup(double sampleRate, double cutoffFrequency, double gainDb, double shelfSlope=1)
Definition: RBJ.h:267
Definition: RBJ.h:67
void reset()
resets the delay lines to zero
Definition: RBJ.h:75
Sample filter(Sample s)
filter operation
Definition: RBJ.h:71
const DirectFormI & getState()
gets the delay lines (=state) of the filter
Definition: RBJ.h:79