/[svn]/linuxsampler/trunk/src/engines/gig/Filter.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/gig/Filter.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2184 by persson, Mon Apr 25 08:12:36 2011 UTC revision 2185 by persson, Sun Jun 19 09:09:38 2011 UTC
# Line 103  namespace LinuxSampler { Line 103  namespace LinuxSampler {
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);
# Line 127  namespace LinuxSampler { Line 129  namespace LinuxSampler {
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);
# Line 216  namespace LinuxSampler { Line 220  namespace LinuxSampler {
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);
# Line 237  namespace LinuxSampler { Line 243  namespace LinuxSampler {
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);
# Line 267  namespace LinuxSampler { Line 275  namespace LinuxSampler {
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);
# Line 297  namespace LinuxSampler { Line 307  namespace LinuxSampler {
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);
# Line 318  namespace LinuxSampler { Line 330  namespace LinuxSampler {
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);
# Line 339  namespace LinuxSampler { Line 353  namespace LinuxSampler {
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);
# Line 360  namespace LinuxSampler { Line 376  namespace LinuxSampler {
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);
# Line 390  namespace LinuxSampler { Line 408  namespace LinuxSampler {
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);
# Line 443  namespace gig { Line 463  namespace gig {
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          }          }
# Line 460  namespace gig { Line 482  namespace gig {
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;
# Line 479  namespace gig { Line 503  namespace gig {
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;
# Line 498  namespace gig { Line 525  namespace gig {
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;
# Line 519  namespace gig { Line 549  namespace gig {
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;

Legend:
Removed from v.2184  
changed lines
  Added in v.2185

  ViewVC Help
Powered by ViewVC