36 #ifndef IIR1_CHEBYSHEVII_H
37 #define IIR1_CHEBYSHEVII_H
41 #include "PoleFilter.h"
53 namespace ChebyshevII {
63 void design (
const int numPoles,
80 void design (
int numPoles,
94 void setup (
int order,
95 double cutoffFrequency,
101 void setup (
int order,
102 double cutoffFrequency,
108 void setup (
int order,
109 double centerFrequency,
110 double widthFrequency,
116 void setup (
int order,
117 double centerFrequency,
118 double widthFrequency,
124 void setup (
int order,
125 double cutoffFrequency,
132 void setup (
int order,
133 double cutoffFrequency,
140 void setup (
int order,
141 double centerFrequency,
142 double widthFrequency,
158 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
168 double cutoffFrequency,
170 LowPassBase::setup (FilterOrder,
171 cutoffFrequency / sampleRate,
184 double cutoffFrequency,
186 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
187 LowPassBase::setup (reqOrder,
188 cutoffFrequency / sampleRate,
203 LowPassBase::setup (FilterOrder,
215 double cutoffFrequency,
217 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
218 LowPassBase::setup (reqOrder,
230 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
240 double cutoffFrequency,
242 HighPassBase::setup (FilterOrder,
243 cutoffFrequency / sampleRate,
256 double cutoffFrequency,
258 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
259 HighPassBase::setup (reqOrder,
260 cutoffFrequency / sampleRate,
274 HighPassBase::setup (FilterOrder,
286 double cutoffFrequency,
288 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
289 HighPassBase::setup (reqOrder,
301 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
312 double centerFrequency,
313 double widthFrequency,
315 BandPassBase::setup (FilterOrder,
316 centerFrequency / sampleRate,
317 widthFrequency / sampleRate,
331 double centerFrequency,
332 double widthFrequency,
334 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
335 BandPassBase::setup (reqOrder,
336 centerFrequency / sampleRate,
337 widthFrequency / sampleRate,
351 double widthFrequency,
353 BandPassBase::setup (FilterOrder,
367 double centerFrequency,
368 double widthFrequency,
370 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
371 BandPassBase::setup (reqOrder,
383 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
394 double centerFrequency,
395 double widthFrequency,
397 BandStopBase::setup (FilterOrder,
398 centerFrequency / sampleRate,
399 widthFrequency / sampleRate,
413 double centerFrequency,
414 double widthFrequency,
416 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
417 BandStopBase::setup (reqOrder,
418 centerFrequency / sampleRate,
419 widthFrequency / sampleRate,
433 double widthFrequency,
435 BandStopBase::setup (FilterOrder,
449 double centerFrequency,
450 double widthFrequency,
452 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
453 BandStopBase::setup (reqOrder,
465 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
476 double cutoffFrequency,
479 LowShelfBase::setup (FilterOrder,
480 cutoffFrequency / sampleRate,
495 double cutoffFrequency,
498 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
499 LowShelfBase::setup (reqOrder,
500 cutoffFrequency / sampleRate,
518 LowShelfBase::setup (FilterOrder,
532 double cutoffFrequency,
535 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
536 LowShelfBase::setup (reqOrder,
549 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
560 double cutoffFrequency,
563 HighShelfBase::setup (FilterOrder,
564 cutoffFrequency / sampleRate,
579 double cutoffFrequency,
582 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
583 HighShelfBase::setup (reqOrder,
584 cutoffFrequency / sampleRate,
603 HighShelfBase::setup (FilterOrder,
617 double cutoffFrequency,
620 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
621 HighShelfBase::setup (reqOrder,
634 template <
int FilterOrder = DEFAULT_FILTER_ORDER,
class StateType = DEFAULT_STATE>
646 double centerFrequency,
647 double widthFrequency,
650 BandShelfBase::setup (FilterOrder,
651 centerFrequency / sampleRate,
652 widthFrequency / sampleRate,
669 double centerFrequency,
670 double widthFrequency,
673 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
674 BandShelfBase::setup (reqOrder,
675 centerFrequency / sampleRate,
676 widthFrequency / sampleRate,
695 double widthFrequency,
698 BandShelfBase::setup (FilterOrder,
715 double centerFrequency,
716 double widthFrequency,
719 if (reqOrder > FilterOrder)
throw std::invalid_argument(orderTooHigh);
720 BandShelfBase::setup (reqOrder,