36 #ifndef IIR1_CHEBYSHEVI_H
37 #define IIR1_CHEBYSHEVI_H
41 #include "PoleFilter.h"
50 namespace ChebyshevI {
60 void design (
const int numPoles,
76 void design (
int numPoles,
90 void setup (
int order,
91 double cutoffFrequency,
97 void setup (
int order,
98 double cutoffFrequency,
104 void setup (
int order,
105 double centerFrequency,
106 double widthFrequency,
112 void setup (
int order,
113 double centerFrequency,
114 double widthFrequency,
120 void setup (
int order,
121 double cutoffFrequency,
128 void setup (
int order,
129 double cutoffFrequency,
136 void setup (
int order,
137 double centerFrequency,
138 double widthFrequency,
154 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
164 double cutoffFrequency,
166 LowPassBase::setup (FilterOrder,
167 cutoffFrequency / sampleRate,
180 double cutoffFrequency,
182 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
183 LowPassBase::setup (reqOrder,
184 cutoffFrequency / sampleRate,
197 LowPassBase::setup (FilterOrder,
209 double cutoffFrequency,
211 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
212 LowPassBase::setup (reqOrder,
223 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
233 double cutoffFrequency,
235 HighPassBase::setup (FilterOrder,
236 cutoffFrequency / sampleRate,
249 double cutoffFrequency,
251 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
252 HighPassBase::setup (reqOrder,
253 cutoffFrequency / sampleRate,
266 HighPassBase::setup (FilterOrder,
278 double cutoffFrequency,
280 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
281 HighPassBase::setup (reqOrder,
292 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
303 double centerFrequency,
304 double widthFrequency,
306 BandPassBase::setup (FilterOrder,
307 centerFrequency / sampleRate,
308 widthFrequency / sampleRate,
322 double centerFrequency,
323 double widthFrequency,
325 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
326 BandPassBase::setup (reqOrder,
327 centerFrequency / sampleRate,
328 widthFrequency / sampleRate,
341 double widthFrequency,
343 BandPassBase::setup (FilterOrder,
357 double centerFrequency,
358 double widthFrequency,
360 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
361 BandPassBase::setup (reqOrder,
373 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
384 double centerFrequency,
385 double widthFrequency,
387 BandStopBase::setup (FilterOrder,
388 centerFrequency / sampleRate,
389 widthFrequency / sampleRate,
403 double centerFrequency,
404 double widthFrequency,
406 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
407 BandStopBase::setup (reqOrder,
408 centerFrequency / sampleRate,
409 widthFrequency / sampleRate,
422 double widthFrequency,
424 BandStopBase::setup (FilterOrder,
438 double centerFrequency,
439 double widthFrequency,
441 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
442 BandStopBase::setup (reqOrder,
455 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
466 double cutoffFrequency,
469 LowShelfBase::setup (FilterOrder,
470 cutoffFrequency / sampleRate,
485 double cutoffFrequency,
488 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
489 LowShelfBase::setup (reqOrder,
490 cutoffFrequency / sampleRate,
506 LowShelfBase::setup (FilterOrder,
520 double cutoffFrequency,
523 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
524 LowShelfBase::setup (reqOrder,
536 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
547 double cutoffFrequency,
550 HighShelfBase::setup (FilterOrder,
551 cutoffFrequency / sampleRate,
566 double cutoffFrequency,
569 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
570 HighShelfBase::setup (reqOrder,
571 cutoffFrequency / sampleRate,
588 HighShelfBase::setup (FilterOrder,
602 double cutoffFrequency,
605 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
606 HighShelfBase::setup (reqOrder,
619 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
631 double centerFrequency,
632 double widthFrequency,
635 BandShelfBase::setup (FilterOrder,
636 centerFrequency / sampleRate,
637 widthFrequency / sampleRate,
654 double centerFrequency,
655 double widthFrequency,
658 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
659 BandShelfBase::setup (reqOrder,
660 centerFrequency / sampleRate,
661 widthFrequency / sampleRate,
678 double widthFrequency,
681 BandShelfBase::setup (FilterOrder,
698 double centerFrequency,
699 double widthFrequency,
702 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
703 BandShelfBase::setup (reqOrder,