36 #ifndef DSPFILTERS_BESSEL_H
37 #define DSPFILTERS_BESSEL_H
43 #include "PoleFilter.h"
44 #include "RootFinder.h"
71 template <
int MaxOrder>
92 void design (
const int numPoles,
106 void design (
int numPoles,
121 void setup (
int order,
123 double cutoffFrequency,
129 void setup (
int order,
131 double cutoffFrequency,
137 void setup (
int order,
139 double centerFrequency,
140 double widthFrequency,
146 void setup (
int order,
148 double centerFrequency,
149 double widthFrequency,
155 void setup (
int order,
157 double cutoffFrequency,
168 template <
int MaxOrder>
171 void setup (
int order,
173 double cutoffFrequency)
176 LowPassBase::setup (order,
183 template <
int MaxOrder>
186 void setup (
int order,
188 double cutoffFrequency)
191 HighPassBase::setup (order,
198 template <
int MaxOrder>
201 void setup (
int order,
203 double centerFrequency,
204 double widthFrequency)
207 BandPassBase::setup (order,
215 template <
int MaxOrder>
218 void setup (
int order,
220 double centerFrequency,
221 double widthFrequency)
224 BandStopBase::setup (order,
232 template <
int MaxOrder>
235 void setup (
int order,
237 double cutoffFrequency,
241 LowShelfBase::setup (order,
264 static int getNumParams ()
271 return ParamInfo::defaultCutoffFrequencyParam ();
275 template <
class FilterClass>
278 void setParams (
const Params& params)
280 FilterClass::setup (
int(params[1]), params[0], params[2]);
291 static int getNumParams ()
298 return ParamInfo::defaultCenterFrequencyParam ();
303 return ParamInfo::defaultBandwidthHzParam ();
307 template <
class FilterClass>
310 void setParams (
const Params& params)
312 FilterClass::setup (
int(params[1]), params[0], params[2], params[3]);
323 static int getNumParams ()
330 return ParamInfo::defaultCutoffFrequencyParam ();
335 return ParamInfo::defaultGainParam ();
339 template <
class FilterClass>
342 void setParams (
const Params& params)
344 FilterClass::setup (
int(params[1]),
358 static int getNumParams ()
365 return ParamInfo::defaultCenterFrequencyParam ();
370 return ParamInfo::defaultBandwidthHzParam ();
375 return ParamInfo::defaultGainParam ();
379 template <
class FilterClass>
382 void setParams (
const Params& params)
384 FilterClass::setup (
int(params[1]), params[0], params[2], params[3], params[4]);
392 static Kind getKind () {
return kindLowPass; }
393 static const char* getName() {
return "Bessel Low Pass"; }
398 static Kind getKind () {
return kindHighPass; }
399 static const char* getName() {
return "Bessel High Pass"; }
404 static Kind getKind () {
return kindHighPass; }
405 static const char* getName() {
return "Bessel Band Pass"; }
410 static Kind getKind () {
return kindHighPass; }
411 static const char* getName() {
return "Bessel Band Stop"; }
416 static Kind getKind () {
return kindLowShelf; }
417 static const char* getName() {
return "Bessel Low Shelf"; }
421 template <
int MaxOrder,
422 template <
class>
class TypeClass,
423 template <
int>
class FilterClass>
428 return ParamInfo (idOrder,
"Order",
"Order",
430 &ParamInfo::Int_toControlValue,
431 &ParamInfo::Int_toNativeValue,
432 &ParamInfo::Int_toString);
443 template <
int MaxOrder>
449 template <
int MaxOrder>
455 template <
int MaxOrder>
461 template <
int MaxOrder>
471 template <
int MaxOrder>