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>
212 double cutoffFrequency) {
213 HighPassBase::setup (FilterOrder,
214 cutoffFrequency / sampleRate);
224 double cutoffFrequency) {
225 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
226 HighPassBase::setup (reqOrder,
227 cutoffFrequency / sampleRate);
236 HighPassBase::setup (FilterOrder,
245 double cutoffFrequency) {
246 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
247 HighPassBase::setup (reqOrder,
257template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
267 double centerFrequency,
268 double widthFrequency) {
269 BandPassBase::setup(FilterOrder,
270 centerFrequency / sampleRate,
271 widthFrequency / sampleRate);
283 double centerFrequency,
284 double widthFrequency) {
285 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
286 BandPassBase::setup(reqOrder,
287 centerFrequency / sampleRate,
288 widthFrequency / sampleRate);
299 double widthFrequency) {
300 BandPassBase::setup(FilterOrder,
312 double centerFrequency,
313 double widthFrequency) {
314 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
315 BandPassBase::setup(reqOrder,
327template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
337 double centerFrequency,
338 double widthFrequency) {
339 BandStopBase::setup (FilterOrder,
340 centerFrequency / sampleRate,
341 widthFrequency / sampleRate);
353 double centerFrequency,
354 double widthFrequency) {
355 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
356 BandStopBase::setup (reqOrder,
357 centerFrequency / sampleRate,
358 widthFrequency / sampleRate);
369 double widthFrequency) {
370 BandStopBase::setup (FilterOrder,
382 double centerFrequency,
383 double widthFrequency) {
384 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
385 BandStopBase::setup (reqOrder,
398template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
408 double cutoffFrequency,
410 LowShelfBase::setup (FilterOrder,
411 cutoffFrequency / sampleRate,
424 double cutoffFrequency,
426 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
427 LowShelfBase::setup (reqOrder,
428 cutoffFrequency / sampleRate,
442 LowShelfBase::setup (FilterOrder,
454 double cutoffFrequency,
456 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
457 LowShelfBase::setup (reqOrder,
471template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
481 double cutoffFrequency,
483 HighShelfBase::setup (FilterOrder,
484 cutoffFrequency / sampleRate,
497 double cutoffFrequency,
499 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
500 HighShelfBase::setup (reqOrder,
501 cutoffFrequency / sampleRate,
514 HighShelfBase::setup (FilterOrder,
526 double cutoffFrequency,
528 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
529 HighShelfBase::setup (reqOrder,
542template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
553 double centerFrequency,
554 double widthFrequency,
556 BandShelfBase::setup (FilterOrder,
557 centerFrequency / sampleRate,
558 widthFrequency / sampleRate,
572 double centerFrequency,
573 double widthFrequency,
575 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
576 BandShelfBase::setup (reqOrder,
577 centerFrequency / sampleRate,
578 widthFrequency / sampleRate,
591 double widthFrequency,
593 BandShelfBase::setup (FilterOrder,
607 double centerFrequency,
608 double widthFrequency,
610 if (reqOrder > FilterOrder) throw_invalid_argument(orderTooHigh);
611 BandShelfBase::setup (reqOrder,
Definition Butterworth.h:58
Definition Butterworth.h:74
Definition PoleFilter.h:95
Definition Butterworth.h:100
Definition Butterworth.h:259
void setup(int reqOrder, double sampleRate, double centerFrequency, double widthFrequency)
Definition Butterworth.h:281
void setupN(int reqOrder, double centerFrequency, double widthFrequency)
Definition Butterworth.h:311
void setup(double sampleRate, double centerFrequency, double widthFrequency)
Definition Butterworth.h:266
void setupN(double centerFrequency, double widthFrequency)
Definition Butterworth.h:298
Definition Butterworth.h:128
Definition Butterworth.h:544
void setup(double sampleRate, double centerFrequency, double widthFrequency, double gainDb)
Definition Butterworth.h:552
void setupN(double centerFrequency, double widthFrequency, double gainDb)
Definition Butterworth.h:590
void setupN(int reqOrder, double centerFrequency, double widthFrequency, double gainDb)
Definition Butterworth.h:606
void setup(int reqOrder, double sampleRate, double centerFrequency, double widthFrequency, double gainDb)
Definition Butterworth.h:570
Definition Butterworth.h:107
Definition Butterworth.h:329
void setup(double sampleRate, double centerFrequency, double widthFrequency)
Definition Butterworth.h:336
void setupN(int reqOrder, double centerFrequency, double widthFrequency)
Definition Butterworth.h:381
void setup(int reqOrder, double sampleRate, double centerFrequency, double widthFrequency)
Definition Butterworth.h:351
void setupN(double centerFrequency, double widthFrequency)
Definition Butterworth.h:368
Definition Butterworth.h:94
Definition Butterworth.h:204
void setupN(int reqOrder, double cutoffFrequency)
Definition Butterworth.h:244
void setupN(double cutoffFrequency)
Definition Butterworth.h:235
void setup(int reqOrder, double sampleRate, double cutoffFrequency)
Definition Butterworth.h:222
void setup(double sampleRate, double cutoffFrequency)
Definition Butterworth.h:211
Definition Butterworth.h:121
Definition Butterworth.h:473
void setup(double sampleRate, double cutoffFrequency, double gainDb)
Definition Butterworth.h:480
void setupN(int reqOrder, double cutoffFrequency, double gainDb)
Definition Butterworth.h:525
void setup(int reqOrder, double sampleRate, double cutoffFrequency, double gainDb)
Definition Butterworth.h:495
void setupN(double cutoffFrequency, double gainDb)
Definition Butterworth.h:512
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:400
void setupN(int reqOrder, double cutoffFrequency, double gainDb)
Definition Butterworth.h:453
void setup(int reqOrder, double sampleRate, double cutoffFrequency, double gainDb)
Definition Butterworth.h:422
void setup(double sampleRate, double cutoffFrequency, double gainDb)
Definition Butterworth.h:407
void setupN(double cutoffFrequency, double gainDb)
Definition Butterworth.h:440
Definition PoleFilter.h:119