diff options
| author | Nil Geisweiller <a-lin@sourceforge.net> | 2006-12-13 13:53:00 +0000 | 
|---|---|---|
| committer | Nil Geisweiller <a-lin@sourceforge.net> | 2006-12-13 13:53:00 +0000 | 
| commit | 657784c1a9bf557d2d8ac8f00ff9e2ee11cd2e0d (patch) | |
| tree | 69c5ed7ea89013695eddf899804becbb5373d4a8 | |
| parent | 6600007cdeb74da42d0a4fa47aaaa14942f9edab (diff) | |
add deicsonzefilter.h deicsonzefilter.cpp
| -rw-r--r-- | muse/synti/deicsonze/deicsonzefilter.cpp | 67 | ||||
| -rw-r--r-- | muse/synti/deicsonze/deicsonzefilter.h | 59 | 
2 files changed, 126 insertions, 0 deletions
diff --git a/muse/synti/deicsonze/deicsonzefilter.cpp b/muse/synti/deicsonze/deicsonzefilter.cpp new file mode 100644 index 00000000..d4bef946 --- /dev/null +++ b/muse/synti/deicsonze/deicsonzefilter.cpp @@ -0,0 +1,67 @@ +//=========================================================================== +// +//    DeicsOnze an emulator of the YAMAHA DX11 synthesizer +// +//    Version 0.5.5 +// +//    deicsonzefilter.cpp +// +// +//  Copyright (c) 2004-2006 Nil Geisweiller +// +// +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA or point your web browser to http://www.gnu.org. +//=========================================================================== + +#include "deicsonzefilter.h" + +LowFilter::LowFilter() { +  _li = 0.0; +  _ri = 0.0; +  _lo = 0.0; +  _ro = 0.0; +} + +void LowFilter::setSamplerate(int sr) { +  _samplerate = sr; +} + +void LowFilter::setCutoff(double cut) { +  _cutoff = cut; +  float w = 2.0 * (float)_samplerate; +  float fCut = _cutoff * 2.0 * M_PI; +  float norm = 1.0 / (fCut + w); +  _a = fCut * norm; +  _b = (w - fCut) * norm; +} + +void LowFilter::process(float* leftSamples, float* rightSamples, unsigned n) { +  float cl, cr; +  for(unsigned i = 0; i < n; i++) { +    cl = leftSamples[i]; +    cr = rightSamples[i]; + +    leftSamples[i] = _a * (cl + _li) + _b * _lo; +    rightSamples[i] = _a * (cr + _ri) + _b * _ro; + +    _li = cl; +    _ri = cr; +    _lo = leftSamples[i]; +    _ro = rightSamples[i]; +  } +} + diff --git a/muse/synti/deicsonze/deicsonzefilter.h b/muse/synti/deicsonze/deicsonzefilter.h new file mode 100644 index 00000000..fc92142a --- /dev/null +++ b/muse/synti/deicsonze/deicsonzefilter.h @@ -0,0 +1,59 @@ +//=========================================================================== +// +//    DeicsOnze an emulator of the YAMAHA DX11 synthesizer +// +//    Version 0.5.5 +// +//    deicsonzefilter.h +// +// +//  Copyright (c) 2004-2006 Nil Geisweiller +// +// +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +// 02111-1307, USA or point your web browser to http://www.gnu.org. +//=========================================================================== + +#ifndef __DEICSONZEFILTER_H +#define __DEICSONZEFILTER_H + +#include <math.h> + +class LowFilter { + private: +  int _samplerate; + +  double _cutoff; //frequency cutoff +  float _a; +  float _b; + +  float _li; //last left input sample +  float _ri; //last right input sample +  float _lo; //last left output sample +  float _ro; //last right output sample + public: +  LowFilter(); +  ~LowFilter() {} + +  void setSamplerate(int sr); +  void setCutoff(double cut); +  //int getSamplerate(); +  //double getCutoff(); + +  void process(float* leftSamples, float* RightSamples, unsigned n); +}; + +#endif /* __DEICSONZEFILTER_H */  | 
