103 |
*/ |
*/ |
104 |
class LowpassFilter1p : public FilterBase { |
class LowpassFilter1p : public FilterBase { |
105 |
public: |
public: |
106 |
|
LowpassFilter1p() { } |
107 |
|
|
108 |
float Apply(FilterData& d, float x) const { |
float Apply(FilterData& d, float x) const { |
109 |
float y = x + d.a1 * (x - d.y1); // d.b0 * x - d.a1 * d.y1; |
float y = x + d.a1 * (x - d.y1); // d.b0 * x - d.a1 * d.y1; |
110 |
KillDenormal(y); |
KillDenormal(y); |
129 |
*/ |
*/ |
130 |
class HighpassFilter1p : public FilterBase { |
class HighpassFilter1p : public FilterBase { |
131 |
public: |
public: |
132 |
|
HighpassFilter1p() { } |
133 |
|
|
134 |
float Apply(FilterData& d, float x) const { |
float Apply(FilterData& d, float x) const { |
135 |
// d.b0 * x + d.b1 * d.x1 - d.a1 * d.y1; |
// d.b0 * x + d.b1 * d.x1 - d.a1 * d.y1; |
136 |
float y = d.a1 * (-x + d.x1 - d.y1); |
float y = d.a1 * (-x + d.x1 - d.y1); |
220 |
*/ |
*/ |
221 |
class LowpassFilter : public BiquadFilter { |
class LowpassFilter : public BiquadFilter { |
222 |
public: |
public: |
223 |
|
LowpassFilter() { } |
224 |
|
|
225 |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
226 |
float omega = 2.0 * M_PI * fc / fs; |
float omega = 2.0 * M_PI * fc / fs; |
227 |
float sn = sin(omega); |
float sn = sin(omega); |
243 |
*/ |
*/ |
244 |
class LowpassFilter4p : public DoubleBiquadFilter { |
class LowpassFilter4p : public DoubleBiquadFilter { |
245 |
public: |
public: |
246 |
|
LowpassFilter4p() { } |
247 |
|
|
248 |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
249 |
float omega = 2.0 * M_PI * fc / fs; |
float omega = 2.0 * M_PI * fc / fs; |
250 |
float sn = sin(omega); |
float sn = sin(omega); |
275 |
*/ |
*/ |
276 |
class LowpassFilter6p : public TripleBiquadFilter { |
class LowpassFilter6p : public TripleBiquadFilter { |
277 |
public: |
public: |
278 |
|
LowpassFilter6p() { } |
279 |
|
|
280 |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
281 |
float omega = 2.0 * M_PI * fc / fs; |
float omega = 2.0 * M_PI * fc / fs; |
282 |
float sn = sin(omega); |
float sn = sin(omega); |
307 |
*/ |
*/ |
308 |
class BandpassFilter : public BiquadFilter { |
class BandpassFilter : public BiquadFilter { |
309 |
public: |
public: |
310 |
|
BandpassFilter() { } |
311 |
|
|
312 |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
313 |
float omega = 2.0 * M_PI * fc / fs; |
float omega = 2.0 * M_PI * fc / fs; |
314 |
float sn = sin(omega); |
float sn = sin(omega); |
330 |
*/ |
*/ |
331 |
class BandrejectFilter : public BiquadFilter { |
class BandrejectFilter : public BiquadFilter { |
332 |
public: |
public: |
333 |
|
BandrejectFilter() { } |
334 |
|
|
335 |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
336 |
float omega = 2.0 * M_PI * fc / fs; |
float omega = 2.0 * M_PI * fc / fs; |
337 |
float sn = sin(omega); |
float sn = sin(omega); |
353 |
*/ |
*/ |
354 |
class HighpassFilter : public BiquadFilter { |
class HighpassFilter : public BiquadFilter { |
355 |
public: |
public: |
356 |
|
HighpassFilter() { } |
357 |
|
|
358 |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
359 |
float omega = 2.0 * M_PI * fc / fs; |
float omega = 2.0 * M_PI * fc / fs; |
360 |
float sn = sin(omega); |
float sn = sin(omega); |
376 |
*/ |
*/ |
377 |
class HighpassFilter4p : public DoubleBiquadFilter { |
class HighpassFilter4p : public DoubleBiquadFilter { |
378 |
public: |
public: |
379 |
|
HighpassFilter4p() { } |
380 |
|
|
381 |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
382 |
float omega = 2.0 * M_PI * fc / fs; |
float omega = 2.0 * M_PI * fc / fs; |
383 |
float sn = sin(omega); |
float sn = sin(omega); |
408 |
*/ |
*/ |
409 |
class HighpassFilter6p : public TripleBiquadFilter { |
class HighpassFilter6p : public TripleBiquadFilter { |
410 |
public: |
public: |
411 |
|
HighpassFilter6p() { } |
412 |
|
|
413 |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
void SetParameters(FilterData& d, float fc, float r, float fs) const { |
414 |
float omega = 2.0 * M_PI * fc / fs; |
float omega = 2.0 * M_PI * fc / fs; |
415 |
float sn = sin(omega); |
float sn = sin(omega); |
463 |
|
|
464 |
class LowpassFilter : public GigFilter { |
class LowpassFilter : public GigFilter { |
465 |
public: |
public: |
466 |
|
LowpassFilter() { } |
467 |
|
|
468 |
float Apply(FilterData& d, float x) const { |
float Apply(FilterData& d, float x) const { |
469 |
return ApplyA(d, d.b0 * x); |
return ApplyA(d, d.b0 * x); |
470 |
} |
} |
482 |
|
|
483 |
class BandpassFilter : public GigFilter { |
class BandpassFilter : public GigFilter { |
484 |
public: |
public: |
485 |
|
BandpassFilter() { } |
486 |
|
|
487 |
float Apply(FilterData& d, float x) const { |
float Apply(FilterData& d, float x) const { |
488 |
float y = ApplyA(d, d.b0 * x + d.b2 * d.x2); |
float y = ApplyA(d, d.b0 * x + d.b2 * d.x2); |
489 |
d.x2 = d.x1; |
d.x2 = d.x1; |
503 |
}; |
}; |
504 |
|
|
505 |
class HighpassFilter : public GigFilter { |
class HighpassFilter : public GigFilter { |
506 |
|
public: |
507 |
|
HighpassFilter() { } |
508 |
|
|
509 |
float Apply(FilterData& d, float x) const { |
float Apply(FilterData& d, float x) const { |
510 |
float y = ApplyA(d, -x + d.x1 + d.x2 - d.x3); |
float y = ApplyA(d, -x + d.x1 + d.x2 - d.x3); |
511 |
d.x3 = d.x2; |
d.x3 = d.x2; |
525 |
}; |
}; |
526 |
|
|
527 |
class BandrejectFilter : public GigFilter { |
class BandrejectFilter : public GigFilter { |
528 |
|
public: |
529 |
|
BandrejectFilter() { } |
530 |
|
|
531 |
float Apply(FilterData& d, float x) const { |
float Apply(FilterData& d, float x) const { |
532 |
float y = ApplyA(d, x - d.x1 + d.b2 * d.x2 + d.x3); |
float y = ApplyA(d, x - d.x1 + d.b2 * d.x2 + d.x3); |
533 |
d.x3 = d.x2; |
d.x3 = d.x2; |
549 |
|
|
550 |
class LowpassTurboFilter : public LowpassFilter { |
class LowpassTurboFilter : public LowpassFilter { |
551 |
public: |
public: |
552 |
|
LowpassTurboFilter() { } |
553 |
|
|
554 |
float Apply(FilterData& d, float x) const { |
float Apply(FilterData& d, float x) const { |
555 |
float y = d.b20 * LowpassFilter::Apply(d, x) |
float y = d.b20 * LowpassFilter::Apply(d, x) |
556 |
- d.a1 * d.y21 - d.a2 * d.y22 - d.a3 * d.y23; |
- d.a1 * d.y21 - d.a2 * d.y22 - d.a3 * d.y23; |