36#ifndef IIR1_BUTTERWORTH_H
37#define IIR1_BUTTERWORTH_H
41#include "PoleFilter.h"
52namespace Butterworth {
62 void design (
const int numPoles);
78 void design (
int numPoles,
double gainDb);
82 double m_gainDb = 0.0;
89 void setup (
int order,
90 double cutoffFrequency);
95 void setup (
int order,
96 double cutoffFrequency);
101 void setup (
int order,
102 double centerFrequency,
103 double widthFrequency);
108 void setup (
int order,
109 double centerFrequency,
110 double widthFrequency);
115 void setup (
int order,
116 double cutoffFrequency,
122 void setup (
int order,
123 double cutoffFrequency,
129 void setup (
int order,
130 double centerFrequency,
131 double widthFrequency,
146template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
155 double cutoffFrequency) {
156 LowPassBase::setup (FilterOrder,
157 cutoffFrequency / sampleRate);
168 double cutoffFrequency) {
169 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
170 LowPassBase::setup (reqOrder,
171 cutoffFrequency / sampleRate);
180 LowPassBase::setup (FilterOrder,
190 double cutoffFrequency) {
191 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
192 LowPassBase::setup (reqOrder,
202template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
211 double cutoffFrequency) {
212 HighPassBase::setup (FilterOrder,
213 cutoffFrequency / sampleRate);
223 double cutoffFrequency) {
224 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
225 HighPassBase::setup (reqOrder,
226 cutoffFrequency / sampleRate);
235 HighPassBase::setup (FilterOrder,
244 double cutoffFrequency) {
245 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
246 HighPassBase::setup (reqOrder,
256template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
266 double centerFrequency,
267 double widthFrequency) {
268 BandPassBase::setup(FilterOrder,
269 centerFrequency / sampleRate,
270 widthFrequency / sampleRate);
282 double centerFrequency,
283 double widthFrequency) {
284 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
285 BandPassBase::setup(reqOrder,
286 centerFrequency / sampleRate,
287 widthFrequency / sampleRate);
298 double widthFrequency) {
299 BandPassBase::setup(FilterOrder,
311 double centerFrequency,
312 double widthFrequency) {
313 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
314 BandPassBase::setup(reqOrder,
326template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
336 double centerFrequency,
337 double widthFrequency) {
338 BandStopBase::setup (FilterOrder,
339 centerFrequency / sampleRate,
340 widthFrequency / sampleRate);
352 double centerFrequency,
353 double widthFrequency) {
354 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
355 BandStopBase::setup (reqOrder,
356 centerFrequency / sampleRate,
357 widthFrequency / sampleRate);
368 double widthFrequency) {
369 BandStopBase::setup (FilterOrder,
381 double centerFrequency,
382 double widthFrequency) {
383 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
384 BandStopBase::setup (reqOrder,
397template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
407 double cutoffFrequency,
409 LowShelfBase::setup (FilterOrder,
410 cutoffFrequency / sampleRate,
423 double cutoffFrequency,
425 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
426 LowShelfBase::setup (reqOrder,
427 cutoffFrequency / sampleRate,
441 LowShelfBase::setup (FilterOrder,
453 double cutoffFrequency,
455 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
456 LowShelfBase::setup (reqOrder,
470template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
480 double cutoffFrequency,
482 HighShelfBase::setup (FilterOrder,
483 cutoffFrequency / sampleRate,
496 double cutoffFrequency,
498 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
499 HighShelfBase::setup (reqOrder,
500 cutoffFrequency / sampleRate,
513 HighShelfBase::setup (FilterOrder,
525 double cutoffFrequency,
527 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
528 HighShelfBase::setup (reqOrder,
541template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
552 double centerFrequency,
553 double widthFrequency,
555 BandShelfBase::setup (FilterOrder,
556 centerFrequency / sampleRate,
557 widthFrequency / sampleRate,
571 double centerFrequency,
572 double widthFrequency,
574 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
575 BandShelfBase::setup (reqOrder,
576 centerFrequency / sampleRate,
577 widthFrequency / sampleRate,
590 double widthFrequency,
592 BandShelfBase::setup (FilterOrder,
606 double centerFrequency,
607 double widthFrequency,
609 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
610 BandShelfBase::setup (reqOrder,
Definition: Butterworth.h:58
Definition: Butterworth.h:74
Definition: PoleFilter.h:90
Definition: Biquad.cpp:40
Definition: Butterworth.h:100
Definition: Butterworth.h:258
void setup(int reqOrder, double sampleRate, double centerFrequency, double widthFrequency)
Definition: Butterworth.h:280
void setupN(int reqOrder, double centerFrequency, double widthFrequency)
Definition: Butterworth.h:310
void setup(double sampleRate, double centerFrequency, double widthFrequency)
Definition: Butterworth.h:265
void setupN(double centerFrequency, double widthFrequency)
Definition: Butterworth.h:297
Definition: Butterworth.h:128
Definition: Butterworth.h:543
void setup(double sampleRate, double centerFrequency, double widthFrequency, double gainDb)
Definition: Butterworth.h:551
void setupN(double centerFrequency, double widthFrequency, double gainDb)
Definition: Butterworth.h:589
void setupN(int reqOrder, double centerFrequency, double widthFrequency, double gainDb)
Definition: Butterworth.h:605
void setup(int reqOrder, double sampleRate, double centerFrequency, double widthFrequency, double gainDb)
Definition: Butterworth.h:569
Definition: Butterworth.h:107
Definition: Butterworth.h:328
void setupN(int reqOrder, double sampleRate, double centerFrequency, double widthFrequency)
Definition: Butterworth.h:350
void setup(double sampleRate, double centerFrequency, double widthFrequency)
Definition: Butterworth.h:335
void setupN(int reqOrder, double centerFrequency, double widthFrequency)
Definition: Butterworth.h:380
void setupN(double centerFrequency, double widthFrequency)
Definition: Butterworth.h:367
Definition: Butterworth.h:94
Definition: Butterworth.h:204
void setupN(int reqOrder, double cutoffFrequency)
Definition: Butterworth.h:243
void setupN(double cutoffFrequency)
Definition: Butterworth.h:234
void setup(int reqOrder, double sampleRate, double cutoffFrequency)
Definition: Butterworth.h:221
void setup(double sampleRate, double cutoffFrequency)
Definition: Butterworth.h:210
Definition: Butterworth.h:121
Definition: Butterworth.h:472
void setup(double sampleRate, double cutoffFrequency, double gainDb)
Definition: Butterworth.h:479
void setupN(int reqOrder, double cutoffFrequency, double gainDb)
Definition: Butterworth.h:524
void setup(int reqOrder, double sampleRate, double cutoffFrequency, double gainDb)
Definition: Butterworth.h:494
void setupN(double cutoffFrequency, double gainDb)
Definition: Butterworth.h:511
Definition: Butterworth.h:88
Definition: Butterworth.h:148
void setup(int reqOrder, double sampleRate, double cutoffFrequency)
Definition: Butterworth.h:166
void setup(double sampleRate, double cutoffFrequency)
Definition: Butterworth.h:154
void setupN(double cutoffFrequency)
Definition: Butterworth.h:179
void setupN(int reqOrder, double cutoffFrequency)
Definition: Butterworth.h:189
Definition: Butterworth.h:114
Definition: Butterworth.h:399
void setupN(int reqOrder, double cutoffFrequency, double gainDb)
Definition: Butterworth.h:452
void setup(int reqOrder, double sampleRate, double cutoffFrequency, double gainDb)
Definition: Butterworth.h:421
void setup(double sampleRate, double cutoffFrequency, double gainDb)
Definition: Butterworth.h:406
void setupN(double cutoffFrequency, double gainDb)
Definition: Butterworth.h:439
Definition: PoleFilter.h:114