diff options
| author | Robert Jonsson <spamatica@gmail.com> | 2011-03-07 19:01:11 +0000 | 
|---|---|---|
| committer | Robert Jonsson <spamatica@gmail.com> | 2011-03-07 19:01:11 +0000 | 
| commit | e40fc849149dd97c248866a4a1d026dda5e57b62 (patch) | |
| tree | b12b358f3b3a0608001d30403358f8443118ec5f /muse_qt4_evolution/plugins/doublechorus | |
| parent | 1bd4f2e8d9745cabb667b043171cad22c8577768 (diff) | |
clean3
Diffstat (limited to 'muse_qt4_evolution/plugins/doublechorus')
6 files changed, 0 insertions, 745 deletions
| diff --git a/muse_qt4_evolution/plugins/doublechorus/CMakeLists.txt b/muse_qt4_evolution/plugins/doublechorus/CMakeLists.txt deleted file mode 100644 index ecb6dbe0..00000000 --- a/muse_qt4_evolution/plugins/doublechorus/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -#============================================================================= -#  MusE -#  Linux Music Editor -#  $Id:$ -# -#  Copyright (C) 2002-2006 by Werner Schweer and others -# -#  This program is free software; you can redistribute it and/or modify -#  it under the terms of the GNU General Public License version 2. -# -#  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., 675 Mass Ave, Cambridge, MA 02139, USA. -#============================================================================= - -add_library ( doublechorus SHARED -      doublechorus.cpp doublechorusmodel.cpp simplechorusmodel.cpp -      ) - -# tell cmake to name the target doublechorus.so instead of -# libdoublechorus.so -# -set_target_properties (doublechorus -      PROPERTIES PREFIX "" -      #COMPILE_FLAGS "-O3" -      ) - -install_targets ( /lib/${MusE_INSTALL_NAME}/plugins doublechorus) diff --git a/muse_qt4_evolution/plugins/doublechorus/doublechorus.cpp b/muse_qt4_evolution/plugins/doublechorus/doublechorus.cpp deleted file mode 100644 index 27d84336..00000000 --- a/muse_qt4_evolution/plugins/doublechorus/doublechorus.cpp +++ /dev/null @@ -1,173 +0,0 @@ -//========================================================= -//  DoubleChorus for MusE -//   -//  (C) Copyright 2006 Nil Geisweiller -//========================================================= - -#include "doublechorusmodel.h" -#include <stdio.h> - -//--------------------------------------------------------- -//   instantiate doublechorus -//    Construct a new plugin instance. -//--------------------------------------------------------- - -LADSPA_Handle instantiate(const LADSPA_Descriptor* /*Descriptor*/, -			  unsigned long samplerate) -{ -  return new DoubleChorusModel(samplerate); -} - -//--------------------------------------------------------- -//   connect PortTo doublechorus -//    Connect a port to a data location. -//--------------------------------------------------------- - -void connect(LADSPA_Handle Instance, unsigned long port, -	     LADSPA_Data* data) -{ -  ((DoubleChorusModel *)Instance)->port[port] = data; -} - -//--------------------------------------------------------- -//   activate -//--------------------------------------------------------- - -void activate(LADSPA_Handle instance) -{ -  ((DoubleChorusModel *)instance)->activate(); -} - -//--------------------------------------------------------- -//   deactivate -//--------------------------------------------------------- - -void deactivate(LADSPA_Handle /*Instance*/) -{ -} - -//--------------------------------------------------------- -//   run doublechorus -//--------------------------------------------------------- - -void run(LADSPA_Handle Instance, unsigned long n) -{ -  ((DoubleChorusModel *)Instance)->processReplace(n); -} - -//--------------------------------------------------------- -//   runAdding doublechorus -//    *ADD* the output to the output buffer. -//--------------------------------------------------------- - -void runAdding(LADSPA_Handle Instance, unsigned long n) -{ -  ((DoubleChorusModel *)Instance)->processMix(n); -} - -//--------------------------------------------------------- -//   set doublechorus RunAddingGain -//--------------------------------------------------------- - -void setGain(LADSPA_Handle /*Instance*/, LADSPA_Data /*Gain*/) -{ -  printf("TEST setGain\n"); -  //      ((DoubleChorusModel *)Instance)->m_fRunAddingGain = Gain; -} - -//--------------------------------------------------------- -//   cleanup doublechorus -//--------------------------------------------------------- - -void cleanup(LADSPA_Handle Instance) -{ -  delete (DoubleChorusModel *)Instance; -} - -static const char* portNames[] = { -  "Input (Left)", -  "Input (Right)", -  "Output (Left)", -  "Output (Right)", -  "Pan 1", -  "LFOFreq 1", -  "Depth 1", -  "Pan 2", -  "LFOFreq 2", -  "Depth 2", -  "Dry/Wet" -}; - -LADSPA_PortDescriptor portDescriptors[] = { -  LADSPA_PORT_INPUT  | LADSPA_PORT_AUDIO, -  LADSPA_PORT_INPUT  | LADSPA_PORT_AUDIO, -  LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO, -  LADSPA_PORT_OUTPUT | LADSPA_PORT_AUDIO, -  LADSPA_PORT_INPUT  | LADSPA_PORT_CONTROL, -  LADSPA_PORT_INPUT  | LADSPA_PORT_CONTROL, -  LADSPA_PORT_INPUT  | LADSPA_PORT_CONTROL, -  LADSPA_PORT_INPUT  | LADSPA_PORT_CONTROL, -  LADSPA_PORT_INPUT  | LADSPA_PORT_CONTROL, -  LADSPA_PORT_INPUT  | LADSPA_PORT_CONTROL, -  LADSPA_PORT_INPUT  | LADSPA_PORT_CONTROL -}; - -LADSPA_PortRangeHint portRangeHints[] = { -  { 0, 0.0, 0.0 }, -  { 0, 0.0, 0.0 }, -  { 0, 0.0, 0.0 }, -  { 0, 0.0, 0.0 }, -  { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_HIGH,  0.0, 1.0 }, -  { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_DEFAULT_HIGH, MINFREQ, MAXFREQ }, -  { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_LOW, 0.0, 1.0 }, -  { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_LOW,  0.0, 1.0 }, -  { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_LOGARITHMIC | LADSPA_HINT_DEFAULT_MIDDLE, MINFREQ, MAXFREQ }, -  { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_LOW, 0.0, 1.0 }, -  { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_MIDDLE, 0.0, 1.0 }, -}; - -LADSPA_Descriptor descriptor = { -  1051, -  "doublechorus1", -  LADSPA_PROPERTY_HARD_RT_CAPABLE, -  "DoubleChorus", -  "Nil Geisweiller", -  "GPL", -  NBRPARAM + 4, -  portDescriptors, -  portNames, -  portRangeHints, -  0,                // impl. data -  instantiate, -  connect, -  activate, -  run, -  runAdding, -  setGain, -  deactivate, -  cleanup -}; - -//--------------------------------------------------------- -//   _init -//    called automatically when the plugin library is first -//    loaded. -//--------------------------------------------------------- -void _init() { -} - -//--------------------------------------------------------- -//   _fini -//    called automatically when the library is unloaded. -//--------------------------------------------------------- -void _fini() { -} - -//--------------------------------------------------------- -//   ladspa_descriptor -//    Return a descriptor of the requested plugin type. -//--------------------------------------------------------- -const LADSPA_Descriptor* ladspa_descriptor(unsigned long i) { -  return (i == 0) ? &descriptor : 0; -} - diff --git a/muse_qt4_evolution/plugins/doublechorus/doublechorusmodel.cpp b/muse_qt4_evolution/plugins/doublechorus/doublechorusmodel.cpp deleted file mode 100644 index 01def026..00000000 --- a/muse_qt4_evolution/plugins/doublechorus/doublechorusmodel.cpp +++ /dev/null @@ -1,214 +0,0 @@ -//=========================================================================== -// -//    doublechorusmodel -// -//    Version 0.0.1 -// -// -// -// -//  Copyright (c) 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 "doublechorusmodel.h" - -//--------------------------------------------------------- -// DoubleChorusModel -//--------------------------------------------------------- - -DoubleChorusModel::DoubleChorusModel(unsigned long samplerate) { -  _simpleChorus1 = new SimpleChorusModel((float)samplerate); -  _simpleChorus2 = new SimpleChorusModel((float)samplerate); - -  param[0] = getPan1(); -  param[1] = getLFOFreq1(); -  param[2] = getDepth1(); -  param[3] = getPan2(); -  param[4] = getLFOFreq2(); -  param[5] = getDepth2(); -  param[6] = getDryWet(); -} - -DoubleChorusModel::~DoubleChorusModel() { -  delete(_simpleChorus1); -  delete(_simpleChorus2); -} - -//--------------------------------------------------------- -//   activate -//--------------------------------------------------------- - -void DoubleChorusModel::activate() { -  *port[4] = param[0]; -  *port[5] = param[1]; -  *port[6] = param[2]; -  *port[7] = param[3]; -  *port[8] = param[4]; -  *port[9] = param[5]; -  *port[10] = param[6]; -} - -//--------------------------------------------------------- -//   processReplace -//--------------------------------------------------------- - -void DoubleChorusModel::processReplace(long n) { -  float tmpLeftOutput1; -  float tmpRightOutput1; -  float tmpLeftOutput2; -  float tmpRightOutput2; -  //update parameters -  if (param[0] != *port[4]) { -    param[0] = *port[4]; -    setPan1(param[0]); -  } -  if (param[1] != *port[5]) { -    param[1] = *port[5]; -    setLFOFreq1(param[1]); -  } -  if (param[2] != *port[6]) { -    param[2] = *port[6]; -    setDepth1(param[2]); -  } -  if (param[3] != *port[7]) { -    param[3] = *port[7]; -    setPan2(param[3]); -  } -  if (param[4] != *port[8]) { -    param[4] = *port[8]; -    setLFOFreq2(param[4]); -  } -  if (param[5] != *port[9]) { -    param[5] = *port[9]; -    setDepth2(param[5]); -  } -  if (param[6] != *port[10]) { -    param[6] = *port[10]; -    setDryWet(param[6]); -  } -  //process the effect -  for (int i = 0; i < n; ++i) { -    _simpleChorus1->process_chorus(port[0][i], port[1][i], -				   &tmpLeftOutput1, &tmpRightOutput1);   -    _simpleChorus2->process_chorus(port[0][i], port[1][i], -				   &tmpLeftOutput2, &tmpRightOutput2); -    port[2][i] = _dryWet * (tmpLeftOutput1 + tmpLeftOutput2) -      + (1.0 - _dryWet) * port[0][i]; -    port[3][i] = _dryWet * (tmpRightOutput1 + tmpRightOutput2) -      + (1.0 - _dryWet) * port[1][i]; -  } -} - -void DoubleChorusModel::processMix(long n) { -  float tmpLeftOutput1; -  float tmpRightOutput1; -  float tmpLeftOutput2; -  float tmpRightOutput2; -  //update parameters -  if (param[0] != *port[4]) { -    param[0] = *port[4]; -    setPan1(param[0]); -  } -  if (param[1] != *port[5]) { -    param[1] = *port[5]; -    setLFOFreq1(param[1]); -  } -  if (param[2] != *port[6]) { -    param[2] = *port[6]; -    setDepth1(param[2]); -  } -  if (param[3] != *port[7]) { -    param[3] = *port[7]; -    setPan2(param[3]); -  } -  if (param[4] != *port[8]) { -    param[4] = *port[8]; -    setLFOFreq2(param[4]); -  } -  if (param[5] != *port[9]) { -    param[5] = *port[9]; -    setDepth2(param[5]); -  } -  if (param[6] != *port[10]) { -    param[6] = *port[10]; -    setDryWet(param[6]); -  } -  //process the effect -  for (int i = 0; i < n; ++i) { -    _simpleChorus1->process_chorus(port[0][i], port[1][i], -				   &tmpLeftOutput1, &tmpRightOutput1);   -    _simpleChorus2->process_chorus(port[0][i], port[1][i], -				   &tmpLeftOutput2, &tmpRightOutput2); -    port[2][i] += _dryWet * (tmpLeftOutput1 + tmpLeftOutput2) -      + (1.0 - _dryWet) * port[0][i]; -    port[3][i] += _dryWet * (tmpRightOutput1 + tmpRightOutput2) -      + (1.0 - _dryWet) * port[1][i]; -  } -} - -//------------------------------------------------------------------ -// set parameters -//------------------------------------------------------------------ -void DoubleChorusModel::setPan1(float value) { -  _simpleChorus1->setPan(value); -} -void DoubleChorusModel::setLFOFreq1(float value) { -  _simpleChorus1->setLFOFreq(value); -} -void DoubleChorusModel::setDepth1(float value) { -  _simpleChorus1->setDepth(value); -} -void DoubleChorusModel::setPan2(float value) { -  _simpleChorus2->setPan(value); -} -void DoubleChorusModel::setLFOFreq2(float value) { -  _simpleChorus2->setLFOFreq(value); -} -void DoubleChorusModel::setDepth2(float value) { -  _simpleChorus2->setDepth(value); -} -void DoubleChorusModel::setDryWet(float value) { -  _dryWet = value; -} - -//---------------------------------------------------------------- -// get parameters -//---------------------------------------------------------------- -float DoubleChorusModel::getPan1() { -  return _simpleChorus1->getPan(); -} -float DoubleChorusModel::getLFOFreq1() { -  return _simpleChorus1->getLFOFreq(); -} -float DoubleChorusModel::getDepth1() { -  return _simpleChorus1->getDepth(); -} -float DoubleChorusModel::getPan2() { -  return _simpleChorus2->getPan(); -} -float DoubleChorusModel::getLFOFreq2() { -  return _simpleChorus2->getLFOFreq(); -} -float DoubleChorusModel::getDepth2() { -  return _simpleChorus2->getDepth(); -} -float DoubleChorusModel::getDryWet() { -  return _dryWet; -} diff --git a/muse_qt4_evolution/plugins/doublechorus/doublechorusmodel.h b/muse_qt4_evolution/plugins/doublechorus/doublechorusmodel.h deleted file mode 100644 index 40ce9f3f..00000000 --- a/muse_qt4_evolution/plugins/doublechorus/doublechorusmodel.h +++ /dev/null @@ -1,72 +0,0 @@ -//=========================================================================== -// -//    doublechorusmodel -// -//    Version 0.0.1 -// -// -// -// -//  Copyright (c) 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 __DOUBLECHORUSMODEL_H -#define __DOUBLECHORUSMODEL_H - -#include "simplechorusmodel.h" -#include "../../muse/ladspa.h" - -#define NBRPARAM 7 - -class SimpleChorusModel; - -class DoubleChorusModel { -  SimpleChorusModel* _simpleChorus1; -  SimpleChorusModel* _simpleChorus2; - -  float _dryWet; //0.0 : dry, 1.0 : wet -   - public: -  LADSPA_Data* port[NBRPARAM + 4]; -  float param[NBRPARAM]; -   -  DoubleChorusModel(unsigned long samplerate); -  ~DoubleChorusModel(); -  void processMix(long numsamples); -  void processReplace(long numsamples); -  void setPan1(float value); -  void setLFOFreq1(float value); -  void setDepth1(float value); -  void setPan2(float value); -  void setLFOFreq2(float value); -  void setDepth2(float value); -  void setDryWet(float value); -  float	getPan1(); -  float	getLFOFreq1(); -  float	getDepth1(); -  float	getPan2(); -  float	getLFOFreq2(); -  float	getDepth2(); -  float getDryWet(); - -  void activate(); -}; - -#endif diff --git a/muse_qt4_evolution/plugins/doublechorus/simplechorusmodel.cpp b/muse_qt4_evolution/plugins/doublechorus/simplechorusmodel.cpp deleted file mode 100644 index 72015465..00000000 --- a/muse_qt4_evolution/plugins/doublechorus/simplechorusmodel.cpp +++ /dev/null @@ -1,157 +0,0 @@ -//=========================================================================== -// -//    simplechorus -// -//    Version 0.0.1 -// -// -// -// -//  Copyright (c) 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 "simplechorusmodel.h" -#include <math.h> -#include <stdio.h> - -#define ABS(x) (x>=0?x:-x) - -// Linearly interpolate [ = a * (1 - f) + b * f] -inline float lin_interp(float f, float a, float b) { -  return a + f * (b - a); -} - -// Cubic interpolation function -inline float cube_interp(const float fr, -			 const float inm1, -			 const float in, -			 const float inp1, -			 const float inp2) { -  return in + 0.5f * fr * (inp1 - inm1 + -			   fr * (4.0f * inp1 + 2.0f * inm1 - 5.0f * in - inp2 + -				 fr * (3.0f * (in - inp1) - inm1 + inp2))); -} - -float SimpleChorusModel::sinus[MAXSINUSRESOLUTION]; -int SimpleChorusModel::useCount = 0; - -SimpleChorusModel::SimpleChorusModel(float samplerate) { -  _sampleRate = samplerate; -  //sinus -  if (useCount++ == 0) -    for(int i = 0; i < MAXSINUSRESOLUTION; i++) -      sinus[i] = (float)(sin(((double)i * 2.0 * M_PI) / -			      (double)MAXSINUSRESOLUTION)); -  _index = 0.0; -  //init buffer -  for(int i = 0; i < MAXBUFFERLENGTH; i++) { -    _leftBuffer[i] = 0.0; -    _rightBuffer[i] = 0.0; -  } -  _position = 0; -  //initial parameters -  _pan = 0.5; -  _LFOFreq = 1.0; -  _depth = 0.5; -  setChorus(); -} - -SimpleChorusModel::~SimpleChorusModel() { -} - -void SimpleChorusModel::process_chorus(float leftInput, float rightInput, -				       float* leftOutput, float* rightOutput) { -  float ocsDiff; - -  _ocsDistance = _depthAmp * sinus[(int)_index]; -   -  ocsDiff = _ocsDistance - floorf(_ocsDistance); - -  _past_position_left = MAXBUFFERLENGTH //to be sure that _past_position_left>0 -    + _position - _leftMidDistance + (int)_ocsDistance; -  _past_position_right = MAXBUFFERLENGTH -    + _position - _rightMidDistance + (int)_ocsDistance; - -  *leftOutput = _leftAmp * -    lin_interp(ocsDiff, _leftBuffer[_past_position_left%MAXBUFFERLENGTH], -	       _leftBuffer[(_past_position_left+1)%MAXBUFFERLENGTH]); -  *rightOutput = _rightAmp * -    lin_interp(ocsDiff, _rightBuffer[_past_position_right%MAXBUFFERLENGTH], -	       _rightBuffer[(_past_position_right+1)%MAXBUFFERLENGTH]); - -  _leftBuffer[_position] = leftInput; -  _rightBuffer[_position] = rightInput; -   -  _position++; -  _position %= MAXBUFFERLENGTH; -   -  _index += _inct; -  _index = (_index<MAXSINUSRESOLUTION?_index:_index-MAXSINUSRESOLUTION); -} - -void SimpleChorusModel::setPan(float p) { -  _pan = p; -  setChorus(); -} -void SimpleChorusModel::setLFOFreq(float l) { -  _LFOFreq = l; -  setChorus(); -} -void SimpleChorusModel::setDepth(float d) { -  _depth = d; -  setChorus(); -} -void SimpleChorusModel::setSampleRate(float s) { -  _sampleRate = s; -  setChorus(); -} - -float SimpleChorusModel::getPan() { -  return _pan; -} -float SimpleChorusModel::getLFOFreq() { -  return _LFOFreq; -} -float SimpleChorusModel::getDepth() { -  return _depth; -} - -void SimpleChorusModel::setChorus() { -  //inct -  _inct = (float)MAXSINUSRESOLUTION/_sampleRate * _LFOFreq; -  //left & right amp -  _leftAmp = lin_interp(1.0 - _pan, 1.0 - PANAMP, 1.0 + PANAMP); -  _rightAmp = lin_interp(_pan, 1.0 - PANAMP, 1.0 + PANAMP); -  //left & right midDistance -  float leftmdm; //left mid distance in meter -  float rightmdm; //right mid distance in meter -  leftmdm = MIDSOURCEDISTANCE - EARSDISTANCE * (0.5 - _pan); -  rightmdm = MIDSOURCEDISTANCE + EARSDISTANCE * (0.5 - _pan); - -  _leftMidDistance = (int)(_sampleRate * leftmdm / SOUNDSPEED); -  _rightMidDistance = (int)(_sampleRate * rightmdm / SOUNDSPEED); - -  //depthAmp -  _depthAmp = -    _sampleRate * (MAXDEPTH * _depth) /SOUNDSPEED; -  //filter coef -  _filterCoef1 = 1 - COEFFILTER; -  _filterCoef2 = COEFFILTER; -} diff --git a/muse_qt4_evolution/plugins/doublechorus/simplechorusmodel.h b/muse_qt4_evolution/plugins/doublechorus/simplechorusmodel.h deleted file mode 100644 index 797e7030..00000000 --- a/muse_qt4_evolution/plugins/doublechorus/simplechorusmodel.h +++ /dev/null @@ -1,96 +0,0 @@ -//=========================================================================== -// -//    simplechorus -// -//    Version 0.0.1 -// -// -// -// -//  Copyright (c) 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 __SIMPLECHORUSMODEL_H -#define __SIMPLECHORUSMODEL_H - -#define MAXBUFFERLENGTH 192000 -#define MAXSINUSRESOLUTION 192000 -#define MINFREQ 0.05 //in Hz -#define MAXFREQ 5.0 //in Hz -#define EARSDISTANCE 0.12 //in meter -#define MIDSOURCEDISTANCE 2.0 //in meter -#define MAXDEPTH 1.0 //in meter, radius -#define SOUNDSPEED 330.0 //in meter per second -#define MINDELAYSEC 0.01 //in second -#define MAXDELAYSEC 1.0 //in second -#define COEFFILTER 0.97576 //0.26795 -#define PANAMP 0.75 -//with cutoff = samplerate/256 -//following (2-cos(x)) - sqrt((2-cos(x))^2 - 1) with x = 2*pi*cutoff/samplerate -//#define M_PI 3.14159265358979 - -class SimpleChorusModel { - private : -  //parameters -  float _pan; -  float _LFOFreq; -  float _depth; -  //parameter state -  float _sampleRate; -  float _depthAmp;  -  float _leftAmp; -  float _rightAmp; -  float _filterCoef1; -  float _filterCoef2; -  int _leftMidDistance; //distance of the left micro in samples -  int _rightMidDistance; //distance of the right micro in samples -  //state -  float _inct; -  float _index; //time at the scale of sampleRate -  float _leftBuffer[MAXBUFFERLENGTH]; -  float _rightBuffer[MAXBUFFERLENGTH]; -  float _ocsDistance; //in sample, distance of the micro with initial position  -  int _past_position_left; -  int _past_position_right; -  int _position; - public : -  static int useCount; -  static float sinus[MAXSINUSRESOLUTION]; - - -  void process_chorus(float leftInput, float rightInput, -		      float* leftOutput, float* rightOutput); - -  void setPan(float); -  void setLFOFreq(float); -  void setDepth(float); -  void setSampleRate(float); -  float getPan(); -  float getLFOFreq(); -  float getDepth(); - -  void setChorus(); - -  SimpleChorusModel(float samplerate); -  ~SimpleChorusModel(); -   -}; - -#endif | 
