36 #ifndef DSPFILTERS_LEGENDRE_H
37 #define DSPFILTERS_LEGENDRE_H
43 #include "PoleFilter.h"
44 #include "RootFinder.h"
68 void legendre (
double* p,
int n);
100 PolynomialFinderBase::solve (n);
104 double m_ws [2 * maxN + 1];
105 double m_as [ maxN + 1];
106 double m_ps [2 * maxN + 1];
107 double m_ss [2 * maxN + 1];
108 double m_vs [2 * maxN + 4];
109 double m_aas [ maxN + 1];
110 double m_bbs [ maxN + 1];
134 template <
int MaxOrder>
168 void setup (
int order,
170 double cutoffFrequency,
176 void setup (
int order,
178 double cutoffFrequency,
184 void setup (
int order,
186 double centerFrequency,
187 double widthFrequency,
193 void setup (
int order,
195 double centerFrequency,
196 double widthFrequency,
206 template <
int MaxOrder>
209 void setup (
int order,
211 double cutoffFrequency)
214 LowPassBase::setup (order,
221 template <
int MaxOrder>
224 void setup (
int order,
226 double cutoffFrequency)
229 HighPassBase::setup (order,
236 template <
int MaxOrder>
239 void setup (
int order,
241 double centerFrequency,
242 double widthFrequency)
245 BandPassBase::setup (order,
253 template <
int MaxOrder>
256 void setup (
int order,
258 double centerFrequency,
259 double widthFrequency)
262 BandStopBase::setup (order,
285 static int getNumParams ()
292 return ParamInfo::defaultCutoffFrequencyParam ();
296 template <
class FilterClass>
299 void setParams (
const Params& params)
301 FilterClass::setup (
int(params[1]), params[0], params[2]);
312 static int getNumParams ()
319 return ParamInfo::defaultCenterFrequencyParam ();
324 return ParamInfo::defaultBandwidthHzParam ();
328 template <
class FilterClass>
331 void setParams (
const Params& params)
333 FilterClass::setup (
int(params[1]), params[0], params[2], params[3]);
341 static Kind getKind () {
return kindLowPass; }
342 static const char* getName() {
return "Legendre Low Pass"; }
347 static Kind getKind () {
return kindHighPass; }
348 static const char* getName() {
return "Legendre High Pass"; }
353 static Kind getKind () {
return kindHighPass; }
354 static const char* getName() {
return "Legendre Band Pass"; }
359 static Kind getKind () {
return kindHighPass; }
360 static const char* getName() {
return "Legendre Band Stop"; }
364 template <
int MaxOrder,
365 template <
class>
class TypeClass,
366 template <
int>
class FilterClass>
371 return ParamInfo (idOrder,
"Order",
"Order",
373 &ParamInfo::Int_toControlValue,
374 &ParamInfo::Int_toNativeValue,
375 &ParamInfo::Int_toString);
386 template <
int MaxOrder>
392 template <
int MaxOrder>
398 template <
int MaxOrder>
404 template <
int MaxOrder>