diff options
author | Robert Jonsson <spamatica@gmail.com> | 2011-09-15 12:14:55 +0000 |
---|---|---|
committer | Robert Jonsson <spamatica@gmail.com> | 2011-09-15 12:14:55 +0000 |
commit | b0546e5e7f7044019892543c6c82029db8d564a7 (patch) | |
tree | 1b96a6260900f3fbf3513fb48a5a72aa89052dc8 /attic/muse_qt4_evolution/plugins | |
parent | 583c73d1a07154d3d2672d65d8cce6495f490454 (diff) |
moved attic to a branch of it's own
Diffstat (limited to 'attic/muse_qt4_evolution/plugins')
22 files changed, 0 insertions, 2237 deletions
diff --git a/attic/muse_qt4_evolution/plugins/CMakeLists.txt b/attic/muse_qt4_evolution/plugins/CMakeLists.txt deleted file mode 100644 index 1293902f..00000000 --- a/attic/muse_qt4_evolution/plugins/CMakeLists.txt +++ /dev/null @@ -1,22 +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. -#============================================================================= - -subdirs( freeverb doublechorus pandelay ) - diff --git a/attic/muse_qt4_evolution/plugins/doublechorus/CMakeLists.txt b/attic/muse_qt4_evolution/plugins/doublechorus/CMakeLists.txt deleted file mode 100644 index ecb6dbe0..00000000 --- a/attic/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/attic/muse_qt4_evolution/plugins/doublechorus/doublechorus.cpp b/attic/muse_qt4_evolution/plugins/doublechorus/doublechorus.cpp deleted file mode 100644 index 27d84336..00000000 --- a/attic/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/attic/muse_qt4_evolution/plugins/doublechorus/doublechorusmodel.cpp b/attic/muse_qt4_evolution/plugins/doublechorus/doublechorusmodel.cpp deleted file mode 100644 index 01def026..00000000 --- a/attic/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/attic/muse_qt4_evolution/plugins/doublechorus/doublechorusmodel.h b/attic/muse_qt4_evolution/plugins/doublechorus/doublechorusmodel.h deleted file mode 100644 index 40ce9f3f..00000000 --- a/attic/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/attic/muse_qt4_evolution/plugins/doublechorus/simplechorusmodel.cpp b/attic/muse_qt4_evolution/plugins/doublechorus/simplechorusmodel.cpp deleted file mode 100644 index 72015465..00000000 --- a/attic/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/attic/muse_qt4_evolution/plugins/doublechorus/simplechorusmodel.h b/attic/muse_qt4_evolution/plugins/doublechorus/simplechorusmodel.h deleted file mode 100644 index 797e7030..00000000 --- a/attic/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 diff --git a/attic/muse_qt4_evolution/plugins/freeverb/CMakeLists.txt b/attic/muse_qt4_evolution/plugins/freeverb/CMakeLists.txt deleted file mode 100644 index 0a86454f..00000000 --- a/attic/muse_qt4_evolution/plugins/freeverb/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 ( freeverb SHARED - freeverb.cpp revmodel.cpp - ) - -# tell cmake to name the target freeverb.so instead of -# libfreeverb.so -# -set_target_properties (freeverb - PROPERTIES PREFIX "" - COMPILE_FLAGS "-O2" - ) - -install_targets ( /lib/${MusE_INSTALL_NAME}/plugins freeverb) diff --git a/attic/muse_qt4_evolution/plugins/freeverb/allpass.h b/attic/muse_qt4_evolution/plugins/freeverb/allpass.h deleted file mode 100644 index 2f27691e..00000000 --- a/attic/muse_qt4_evolution/plugins/freeverb/allpass.h +++ /dev/null @@ -1,47 +0,0 @@ -// Allpass filter declaration -// -// Written by Jezar at Dreampoint, June 2000 -// http://www.dreampoint.co.uk -// This code is public domain - -#ifndef _allpass_ -#define _allpass_ -#include "denormals.h" - -//--------------------------------------------------------- -// allpass -//--------------------------------------------------------- - -class allpass - { - float feedback; - float *buffer; - int bufsize; - int bufidx; - - public: - allpass() { bufidx = 0; } - void setbuffer(float *buf, int size) { - buffer = buf; - bufsize = size; - } - float process(float input) { - float bufout = buffer[bufidx]; - undenormalise(bufout); - float output = -input + bufout; - buffer[bufidx] = input + (bufout*feedback); - if (++bufidx >= bufsize) - bufidx = 0; -// bufidx = ++bufidx % bufsize; - return output; - } - void mute() { - for (int i=0; i<bufsize; i++) - buffer[i]=0; - } - void setfeedback(float val) { feedback = val; } - float getfeedback() { return feedback; } - }; - - -#endif//_allpass diff --git a/attic/muse_qt4_evolution/plugins/freeverb/comb.h b/attic/muse_qt4_evolution/plugins/freeverb/comb.h deleted file mode 100644 index 22f5591b..00000000 --- a/attic/muse_qt4_evolution/plugins/freeverb/comb.h +++ /dev/null @@ -1,63 +0,0 @@ -// Comb filter class declaration -// -// Written by Jezar at Dreampoint, June 2000 -// http://www.dreampoint.co.uk -// This code is public domain - -#ifndef _comb_ -#define _comb_ - -#include "denormals.h" - - -//--------------------------------------------------------- -// comb -//--------------------------------------------------------- - -class comb - { - float feedback; - float filterstore; - float damp1; - float damp2; - float *buffer; - int bufsize; - int bufidx; - -public: - comb() { - filterstore = 0; - bufidx = 0; - } - void setbuffer(float *buf, int size) { - buffer = buf; - bufsize = size; - } - float process(float input) { - float output = buffer[bufidx]; - undenormalise(output); - filterstore = (output*damp2) + (filterstore*damp1); - undenormalise(filterstore); - buffer[bufidx] = input + (filterstore*feedback); - if (++bufidx >= bufsize) - bufidx = 0; -// bufidx = ++bufidx % bufsize; - return output; - } - void mute() { - for (int i=0; i<bufsize; i++) - buffer[i]=0; - } - void setdamp(float val) { - damp1 = val; - damp2 = 1-val; - } - float getdamp() { return damp1; } - void setfeedback(float val) { feedback = val; } - float getfeedback() { return feedback; } - }; - - -#endif //_comb_ - -//ends diff --git a/attic/muse_qt4_evolution/plugins/freeverb/denormals.h b/attic/muse_qt4_evolution/plugins/freeverb/denormals.h deleted file mode 100644 index 37d3ed27..00000000 --- a/attic/muse_qt4_evolution/plugins/freeverb/denormals.h +++ /dev/null @@ -1,38 +0,0 @@ -// Macro for killing denormalled numbers -// -// Written by Jezar at Dreampoint, June 2000 -// http://www.dreampoint.co.uk -// Based on IS_DENORMAL macro by Jon Watte -// This code is public domain - -#ifndef _denormals_ -#define _denormals_ - -// this does not work with at least gcc3.3 and -O2: -// #define undenormalise(sample) if(((*(unsigned int*)&sample)&0x7f800000)==0) sample=0.0f -// -// from Laurent de Soras Paper: Denormal numbers in floating point -// signal processing applications -// (ws) - -#if 0 -#define undenormalise(sample) \ - { \ - float anti_denormal = 1e-18; \ - sample += anti_denormal; \ - sample -= anti_denormal; \ - } -#endif - -// from beast-0.7.2 (Tim Janik/Stefan Westerfeld): - -#define undenormalise(sample) \ - do { \ - volatile float __forced_float = 1e-29 + sample; \ - sample = __forced_float - 1e-29; \ - } while (0) - -#endif//_denormals_ - -//ends - diff --git a/attic/muse_qt4_evolution/plugins/freeverb/freeverb.cpp b/attic/muse_qt4_evolution/plugins/freeverb/freeverb.cpp deleted file mode 100644 index 0385e887..00000000 --- a/attic/muse_qt4_evolution/plugins/freeverb/freeverb.cpp +++ /dev/null @@ -1,166 +0,0 @@ -//========================================================= -// MusE -// Linux Music Editor -// $Id: freeverb.cpp,v 1.1.1.1 2003/10/27 18:57:03 wschweer Exp $ -// (C) Copyright 2000 Werner Schweer (ws@seh.de) -//========================================================= - -#include "revmodel.h" - -//--------------------------------------------------------- -// instantiateFreeverb -// Construct a new plugin instance. -//--------------------------------------------------------- - -LADSPA_Handle instantiate(const LADSPA_Descriptor* /*Descriptor*/, - unsigned long /* samplerate*/) - { - return new Revmodel; - } - -//--------------------------------------------------------- -// connectPortToFreeverb -// Connect a port to a data location. -//--------------------------------------------------------- - -void connect(LADSPA_Handle Instance, unsigned long port, - LADSPA_Data* data) - { - ((Revmodel *)Instance)->port[port] = data; - } - -//--------------------------------------------------------- -// activate -//--------------------------------------------------------- - -void activate(LADSPA_Handle instance) - { - ((Revmodel *)instance)->activate(); - } - -//--------------------------------------------------------- -// deactivate -//--------------------------------------------------------- - -void deactivate(LADSPA_Handle /*Instance*/) - { - } - -//--------------------------------------------------------- -// runFreeverb -//--------------------------------------------------------- - -void run(LADSPA_Handle Instance, unsigned long n) - { - ((Revmodel*)Instance)->processreplace(n); - } - -//--------------------------------------------------------- -// runAddingFreeverb -// *ADD* the output to the output buffer. -//--------------------------------------------------------- - -void runAdding(LADSPA_Handle Instance, unsigned long n) - { - ((Revmodel*)Instance)->processmix(n); - } - -//--------------------------------------------------------- -// setFreeverbRunAddingGain -//--------------------------------------------------------- - -void setGain(LADSPA_Handle /*Instance*/, LADSPA_Data /*Gain*/) - { -// ((Freeverb *)Instance)->m_fRunAddingGain = Gain; - } - -//--------------------------------------------------------- -// cleanupFreeverb -//--------------------------------------------------------- - -void cleanup(LADSPA_Handle Instance) - { - delete (Revmodel *)Instance; - } - -static const char* portNames[] = { - "Input (Left)", - "Input (Right)", - "Output (Left)", - "Output (Right)", - "Room Size", - "Damping", - "Wet Level", - }; - -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_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, 0.0, 1.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_LOGARITHMIC, 0.0, 1.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_LOGARITHMIC, 0.0, 1.0 }, - }; - -LADSPA_Descriptor descriptor = { - 1050, - "freeverb1", - LADSPA_PROPERTY_HARD_RT_CAPABLE, - "Freeverb", - "Werner Schweer", - "None", - 7, - 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/attic/muse_qt4_evolution/plugins/freeverb/readme.txt b/attic/muse_qt4_evolution/plugins/freeverb/readme.txt deleted file mode 100644 index 2c1349a3..00000000 --- a/attic/muse_qt4_evolution/plugins/freeverb/readme.txt +++ /dev/null @@ -1,147 +0,0 @@ -readme from original freeverb-source: -============================================== - - -Freeverb - Free, studio-quality reverb SOURCE CODE in the public domain ------------------------------------------------------------------------ - -Written by Jezar at Dreampoint - http://www.dreampoint.co.uk - - -Introduction ------------- - -Hello. - -I'll try to keep this "readme" reasonably small. -There are few things in the world that I hate more than long "readme" files. -Except "coding conventions" - but more on that later... - -In this zip file you will find two folders of C++ source code: - -"Components" - Contains files that should clean-compile - ON ANY TYPE OF COMPUTER OR SYSTEM WHATSOEVER. It should not be necessary - to make ANY changes to these files to get them to compile, except to make - up for inadequacies of certain compilers. These files create three classes - - a comb filter, an allpass filter, and a reverb model made up of a number - of instances of the filters, with some features to control the filters at - a macro level. You will need to link these classes into another program that - interfaces with them. The files in the components drawer are completely - independant, and can be built without dependancies on anything else. - Because of the simple interface, it should be possible to interface - these files to any system - VST, DirectX, anything - without changing - them AT ALL. - -"FreeverbVST" - Contains a Steinberg VST implementation of this version of - Freeverb, using the components in (surprise) the components folder. - It was built on a PC but may compile properly for the Macintosh with - no problems. I don't know - I don't have a Macintosh. If you've - figured out how to compile the examples in the Steinberg VST - Development Kit, then you should easilly figure out how to bring the - files into a project and get it working in a few minutes. It should - be very simple. - -Note that this version of Freeverb doesn't contain predelay, or any EQ. -I thought that might make it difficult to understand the "reverb" part of -the code. Once you figure out how Freeverb works, you should find it trivial -to add such features with little CPU overhead. - -Also, the code in this version of Freeverb has been optimised. This has changed -the sound *slightly*, but not significantly compared to how much processing -power it saves. - -Finally, note that there is also a built copy of this version of Freeverb called -"Freeverb3.dll" - this is a VST plugin for the PC. If you want a version for -the Mac or anything else, then you'll need to build it yourself from the code. - - -Technical Explanation ---------------------- - -Freeverb is a simple implementation of the standard Schroeder/Moorer reverb -model. I guess the only reason why it sounds better than other reverbs, -is simply because I spent a long while doing listening tests in order to create -the values found in "tuning.h". It uses 8 comb filters on both the left and right -channels), and you might possibly be able to get away with less if CPU power -is a serious constraint for you. It then feeds the result of the reverb through -4 allpass filters on both the left and right channels. These "smooth" the sound. -Adding more than four allpasses doesn't seem to add anything significant -to the sound, and if you use less, the sound gets a bit "grainy". -The filters on the right channel are slightly detuned compared to the left channel -in order to create a stereo effect. - -Hopefully, you should find the code in the components drawer a model of -brevity and clarity. Notice that I don't use any "coding conventions". -Personally, I think that coding conventions suck. They are meant to make -the code "clearer", but they inevitably do the complete opposite, making -the code completely unfathomable. Anyone whose done Windows programming -with its - frankly stupid - "Hungarian notation" will know exactly what -I mean. Coding conventions typically promote issues that are irrelevant -up to the status of appearing supremely important. It may have helped back -people in the days when compilers where somewhat feeble in their type-safety, -but not in the new millenium with advanced C++ compilers. - -Imagine if we rewrote the English language to conform to coding conventions. -After all, The arguments should be just as valid for the English language as -they are for a computer language. For example, we could put a lower-case "n" -in front of every noun, a lower-case "p" in front of a persons name, -a lower-case "v" in front of every verb, and a lower-case "a" in front -of every adjective. Can you imagine what the English language would look like? -All in the name of "clarity". It's just as stupid to do this for computer -code as it would be to do it for the English language. I hope that the -code for Freeverb in the components drawer demonstrates this, and helps start -a movement back towards sanity in coding practices. - - -Background ----------- - -Why is the Freeverb code now public domain? Simple. I only intended to create -Freeverb to provide me and my friends with studio-quality reverb for free. -I never intended to make any money out of it. However, I simply do not have the -time to develop it any further. I'm working on a "concept album" at the moment, -and I'll never finish it if I spend any more time programming. - -In any case, I make more far money as a contract programmer - making Mobile -Internet products - than I ever could writing plugins, so it simply doesn't -make financial sense for me to spend any more time on it. - -Rather than give Freeverb to any particular individual or organisation -to profit from it, I've decided to give it away to the internet community -at large, so that quality, FREE (or at the very least, low-cost) reverbs can -be developed for all platforms. - -Feel free to use the source code for Freeverb in any of your own products, -whether they are also available for free, or even if they are commercial - -I really don't mind. You may do with the code whatever you wish. If you use -it in a product (whether commercial or not), it would be very nice of you, -if you were to send me a copy of your product - although I appreciate that -this isn't always possible in all circumstances. - -HOWEVER, please don't bug me with questions about how to use this code. -I gave away Freeverb because I don't have time to maintain it. That means -I *certainly* don't have time to answer questions about the source code, so -please don't email questions to me. I *will* ignore them. If you can't figure -the code for Freeverb out - then find somebody who can. I hope that either -way, you enjoy experimenting with it. - - -Disclaimer ----------- - -This software and source code is given away for free, without any warranties -of any kind. It has been given away to the internet community as a free gift, -so please treat it in the same spirit. - - -I hope this code is useful and interesting to you all! -I hope you have lots of fun experimenting with it and make good products! - -Very best regards, -Jezar. -Technology Consultant -Dreampoint Design and Engineering -http://www.dreampoint.co.uk - - -//ends diff --git a/attic/muse_qt4_evolution/plugins/freeverb/revmodel.cpp b/attic/muse_qt4_evolution/plugins/freeverb/revmodel.cpp deleted file mode 100644 index c72ee22b..00000000 --- a/attic/muse_qt4_evolution/plugins/freeverb/revmodel.cpp +++ /dev/null @@ -1,232 +0,0 @@ -// Reverb model implementation -// -// Written by Jezar at Dreampoint, June 2000 -// http://www.dreampoint.co.uk -// This code is public domain - -#include <stdio.h> -#include "revmodel.h" - -//--------------------------------------------------------- -// Revmodel -//--------------------------------------------------------- - -Revmodel::Revmodel() - { - // Tie the components to their buffers - combL[0].setbuffer(bufcombL1,combtuningL1); - combR[0].setbuffer(bufcombR1,combtuningR1); - combL[1].setbuffer(bufcombL2,combtuningL2); - combR[1].setbuffer(bufcombR2,combtuningR2); - combL[2].setbuffer(bufcombL3,combtuningL3); - combR[2].setbuffer(bufcombR3,combtuningR3); - combL[3].setbuffer(bufcombL4,combtuningL4); - combR[3].setbuffer(bufcombR4,combtuningR4); - combL[4].setbuffer(bufcombL5,combtuningL5); - combR[4].setbuffer(bufcombR5,combtuningR5); - combL[5].setbuffer(bufcombL6,combtuningL6); - combR[5].setbuffer(bufcombR6,combtuningR6); - combL[6].setbuffer(bufcombL7,combtuningL7); - combR[6].setbuffer(bufcombR7,combtuningR7); - combL[7].setbuffer(bufcombL8,combtuningL8); - combR[7].setbuffer(bufcombR8,combtuningR8); - allpassL[0].setbuffer(bufallpassL1,allpasstuningL1); - allpassR[0].setbuffer(bufallpassR1,allpasstuningR1); - allpassL[1].setbuffer(bufallpassL2,allpasstuningL2); - allpassR[1].setbuffer(bufallpassR2,allpasstuningR2); - allpassL[2].setbuffer(bufallpassL3,allpasstuningL3); - allpassR[2].setbuffer(bufallpassR3,allpasstuningR3); - allpassL[3].setbuffer(bufallpassL4,allpasstuningL4); - allpassR[3].setbuffer(bufallpassR4,allpasstuningR4); - - // Set default values - allpassL[0].setfeedback(0.5f); - allpassR[0].setfeedback(0.5f); - allpassL[1].setfeedback(0.5f); - allpassR[1].setfeedback(0.5f); - allpassL[2].setfeedback(0.5f); - allpassR[2].setfeedback(0.5f); - allpassL[3].setfeedback(0.5f); - allpassR[3].setfeedback(0.5f); - - param[0] = initialroom; - param[1] = initialdamp; - param[2] = initialwet; - - setroomsize(initialroom); - setdamp(initialdamp); - setwidth(initialwidth); - setmode(initialmode); - - // Buffer will be full of rubbish - so we MUST mute them - - for (int i = 0; i < numcombs; i++) { - combL[i].mute(); - combR[i].mute(); - } - for (int i=0;i<numallpasses;i++) { - allpassL[i].mute(); - allpassR[i].mute(); - } - } - -//--------------------------------------------------------- -// activate -//--------------------------------------------------------- - -void Revmodel::activate() - { - *port[4] = param[0]; - *port[5] = param[1]; - *port[6] = param[2]; - } - -//--------------------------------------------------------- -// processreplace -//--------------------------------------------------------- - -void Revmodel::processreplace(long n) - { - if (param[0] != *port[4]) { - param[0] = *port[4]; - setroomsize(param[0]); - } - if (param[1] != *port[5]) { - param[1] = *port[5]; - setdamp(param[1]); - } - - float wet = (1.0f - *port[6]) * scalewet; - float dry = *port[6] * scaledry; - float wet1 = wet * (width/2 + 0.5f); - float wet2 = wet * ((1-width)/2); - - for (int i = 0; i < n; ++i) { - float outL = 0; - float outR = 0; - float input = (port[0][i] + port[1][i]) * gain; - - // Accumulate comb filters in parallel - for (int k = 0; k < numcombs; k++) { - outL += combL[k].process(input); - outR += combR[k].process(input); - } - - // Feed through allpasses in series - for (int k=0; k < numallpasses; k++) { - outL = allpassL[k].process(outL); - outR = allpassR[k].process(outR); - } - - // Calculate output REPLACING anything already there - port[2][i] = outL*wet1 + outR*wet2 + port[0][i]*dry; - port[3][i] = outR*wet1 + outL*wet2 + port[1][i]*dry; - } - } - -void Revmodel::processmix(long n) - { - if (param[0] != *port[4]) { - param[0] = *port[4]; - setroomsize(param[0]); - } - if (param[1] != *port[5]) { - param[1] = *port[5]; - setdamp(param[1]); - } - - float wet = (1.0f - *port[6]) * scalewet; - float dry = *port[6] * scaledry; - float wet1 = wet * (width/2 + 0.5f); - float wet2 = wet * ((1-width)/2); - - for (int i = 0; i < n; ++i) { - float outL = 0; - float outR = 0; - float input = (port[0][i] + port[1][i]) * gain; - - // Accumulate comb filters in parallel - for (int k = 0; k < numcombs; k++) { - outL += combL[k].process(input); - outR += combR[k].process(input); - } - - // Feed through allpasses in series - for (int k=0; k < numallpasses; k++) { - outL = allpassL[k].process(outL); - outR = allpassR[k].process(outR); - } - - // Calculate output REPLACING anything already there - port[2][i] += outL*wet1 + outR*wet2 + port[0][i]*dry; - port[3][i] += outR*wet1 + outL*wet2 + port[1][i]*dry; - } - } - -//--------------------------------------------------------- -// update -// Recalculate internal values after parameter change -//--------------------------------------------------------- - -void Revmodel::update() - { - if (mode >= freezemode) { - roomsize1 = 1; - damp1 = 0; - gain = muted; - } - else { - roomsize1 = roomsize; - damp1 = damp; - gain = fixedgain; - } - - for (int i = 0; i < numcombs; i++) { - combL[i].setfeedback(roomsize1); - combR[i].setfeedback(roomsize1); - } - - for (int i = 0; i < numcombs; i++) { - combL[i].setdamp(damp1); - combR[i].setdamp(damp1); - } - } - -// The following get/set functions are not inlined, because -// speed is never an issue when calling them, and also -// because as you develop the reverb model, you may -// wish to take dynamic action when they are called. - -void Revmodel::setroomsize(float value) - { - roomsize = (value*scaleroom) + offsetroom; - update(); - } - -float Revmodel::getroomsize() - { - return (roomsize-offsetroom)/scaleroom; - } - -void Revmodel::setdamp(float value) - { - damp = value*scaledamp; - update(); - } - -void Revmodel::setwidth(float value) - { - width = value; - update(); - } - -void Revmodel::setmode(float value) - { - mode = value; - update(); - } - -float Revmodel::getmode() - { - return (mode >= freezemode) ? 1 : 0; - } diff --git a/attic/muse_qt4_evolution/plugins/freeverb/revmodel.h b/attic/muse_qt4_evolution/plugins/freeverb/revmodel.h deleted file mode 100644 index bfa1f0b3..00000000 --- a/attic/muse_qt4_evolution/plugins/freeverb/revmodel.h +++ /dev/null @@ -1,79 +0,0 @@ -// Reverb model declaration -// -// Written by Jezar at Dreampoint, June 2000 -// http://www.dreampoint.co.uk -// This code is public domain - -#ifndef _revmodel_ -#define _revmodel_ - -#include "comb.h" -#include "allpass.h" -#include "tuning.h" -#include "../../muse/ladspa.h" - -//--------------------------------------------------------- -// Revmodel -//--------------------------------------------------------- - -class Revmodel { - float gain; - float roomsize,roomsize1; - float damp,damp1; - float width; - float mode; - - // Comb filters - comb combL[numcombs]; - comb combR[numcombs]; - - // Allpass filters - allpass allpassL[numallpasses]; - allpass allpassR[numallpasses]; - - // Buffers for the combs - float bufcombL1[combtuningL1]; - float bufcombR1[combtuningR1]; - float bufcombL2[combtuningL2]; - float bufcombR2[combtuningR2]; - float bufcombL3[combtuningL3]; - float bufcombR3[combtuningR3]; - float bufcombL4[combtuningL4]; - float bufcombR4[combtuningR4]; - float bufcombL5[combtuningL5]; - float bufcombR5[combtuningR5]; - float bufcombL6[combtuningL6]; - float bufcombR6[combtuningR6]; - float bufcombL7[combtuningL7]; - float bufcombR7[combtuningR7]; - float bufcombL8[combtuningL8]; - float bufcombR8[combtuningR8]; - - // Buffers for the allpasses - float bufallpassL1[allpasstuningL1]; - float bufallpassR1[allpasstuningR1]; - float bufallpassL2[allpasstuningL2]; - float bufallpassR2[allpasstuningR2]; - float bufallpassL3[allpasstuningL3]; - float bufallpassR3[allpasstuningR3]; - float bufallpassL4[allpasstuningL4]; - float bufallpassR4[allpasstuningR4]; - void update(); - - public: - LADSPA_Data* port[7]; - float param[3]; - - Revmodel(); - void processmix(long numsamples); - void processreplace(long numsamples); - void setroomsize(float value); - float getroomsize(); - void setdamp(float value); - void setwidth(float value); - void setmode(float value); - float getmode(); - void activate(); - }; - -#endif diff --git a/attic/muse_qt4_evolution/plugins/freeverb/tuning.h b/attic/muse_qt4_evolution/plugins/freeverb/tuning.h deleted file mode 100644 index ced89252..00000000 --- a/attic/muse_qt4_evolution/plugins/freeverb/tuning.h +++ /dev/null @@ -1,60 +0,0 @@ -// Reverb model tuning values
-//
-// Written by Jezar at Dreampoint, June 2000
-// http://www.dreampoint.co.uk
-// This code is public domain
-
-#ifndef _tuning_
-#define _tuning_
-
-const int numcombs = 8;
-const int numallpasses = 4;
-const float muted = 0;
-const float fixedgain = 0.015f;
-const float scalewet = 3;
-const float scaledry = 2;
-const float scaledamp = 0.4f;
-const float scaleroom = 0.28f;
-const float offsetroom = 0.7f;
-const float initialroom = 0.5f;
-const float initialdamp = 0.5f;
-const float initialwet = 1/scalewet;
-const float initialdry = 0;
-const float initialwidth = 1;
-const float initialmode = 0;
-const float freezemode = 0.5f;
-const int stereospread = 23;
-
-// These values assume 44.1KHz sample rate
-// they will probably be OK for 48KHz sample rate
-// but would need scaling for 96KHz (or other) sample rates.
-// The values were obtained by listening tests.
-const int combtuningL1 = 1116;
-const int combtuningR1 = 1116+stereospread;
-const int combtuningL2 = 1188;
-const int combtuningR2 = 1188+stereospread;
-const int combtuningL3 = 1277;
-const int combtuningR3 = 1277+stereospread;
-const int combtuningL4 = 1356;
-const int combtuningR4 = 1356+stereospread;
-const int combtuningL5 = 1422;
-const int combtuningR5 = 1422+stereospread;
-const int combtuningL6 = 1491;
-const int combtuningR6 = 1491+stereospread;
-const int combtuningL7 = 1557;
-const int combtuningR7 = 1557+stereospread;
-const int combtuningL8 = 1617;
-const int combtuningR8 = 1617+stereospread;
-const int allpasstuningL1 = 556;
-const int allpasstuningR1 = 556+stereospread;
-const int allpasstuningL2 = 441;
-const int allpasstuningR2 = 441+stereospread;
-const int allpasstuningL3 = 341;
-const int allpasstuningR3 = 341+stereospread;
-const int allpasstuningL4 = 225;
-const int allpasstuningR4 = 225+stereospread;
-
-#endif//_tuning_
-
-//ends
-
diff --git a/attic/muse_qt4_evolution/plugins/pandelay/CMakeLists.txt b/attic/muse_qt4_evolution/plugins/pandelay/CMakeLists.txt deleted file mode 100644 index 5ebb08a0..00000000 --- a/attic/muse_qt4_evolution/plugins/pandelay/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 ( pandelay SHARED - pandelay.cpp ladspapandelay.cpp pandelaymodel.cpp - ) - -# tell cmake to name the target pandelay.so instead of -# libpandelay.so -# -set_target_properties (pandelay - PROPERTIES PREFIX "" - #COMPILE_FLAGS "-O3" - ) - -install_targets ( /lib/${MusE_INSTALL_NAME}/plugins pandelay) diff --git a/attic/muse_qt4_evolution/plugins/pandelay/ladspapandelay.cpp b/attic/muse_qt4_evolution/plugins/pandelay/ladspapandelay.cpp deleted file mode 100644 index b5680d3e..00000000 --- a/attic/muse_qt4_evolution/plugins/pandelay/ladspapandelay.cpp +++ /dev/null @@ -1,100 +0,0 @@ -//=========================================================================== -// -// ladspapandelay -// -// 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 "ladspapandelay.h" - -//--------------------------------------------------------- -// PanDelay -//--------------------------------------------------------- - -LADSPAPanDelay::LADSPAPanDelay(unsigned long samplerate) - : PanDelayModel(samplerate) { - //TODO init param -} - -LADSPAPanDelay::~LADSPAPanDelay() { -} - -//--------------------------------------------------------- -// activate -//--------------------------------------------------------- - -void LADSPAPanDelay::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]; -} - -void LADSPAPanDelay::updateParameters() { - if (param[0] != *port[4]) { - param[0] = *port[4]; - setBPM(param[0]); - } - if (param[1] != *port[5]) { - param[1] = *port[5]; - setBeatRatio(param[1]); - } - if (param[2] != *port[6]) { - param[2] = *port[6]; - setFeedback(param[2]); - } - if (param[3] != *port[7]) { - param[3] = *port[7]; - setPanLFOFreq(param[3]); - } - if (param[4] != *port[8]) { - param[4] = *port[8]; - setPanLFODepth(param[4]); - } - if (param[5] != *port[9]) { - param[5] = *port[9]; - setDryWet(param[5]); - } -} - -//--------------------------------------------------------- -// processReplace -//--------------------------------------------------------- - -void LADSPAPanDelay::processReplace(long n) { - updateParameters(); - PanDelayModel::processReplace(port[0], port[1], port[2], port[3], n); -} - -//--------------------------------------------------------- -// processMix -//--------------------------------------------------------- - -void LADSPAPanDelay::processMix(long n) { - updateParameters(); - PanDelayModel::processMix(port[0], port[1], port[2], port[3], n); -} diff --git a/attic/muse_qt4_evolution/plugins/pandelay/ladspapandelay.h b/attic/muse_qt4_evolution/plugins/pandelay/ladspapandelay.h deleted file mode 100644 index ab5427a1..00000000 --- a/attic/muse_qt4_evolution/plugins/pandelay/ladspapandelay.h +++ /dev/null @@ -1,55 +0,0 @@ -//=========================================================================== -// -// ladspapandelay -// -// 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 __LADSPAPANDELAY_H -#define __LADSPAPANDELAY_H - -#include "pandelaymodel.h" -#include "../../muse/ladspa.h" - -#define NBRPARAM 6 - -class LADSPAPanDelay : public PanDelayModel { - private: - - public: - LADSPAPanDelay(unsigned long samplerate); - ~LADSPAPanDelay(); - - LADSPA_Data* port[NBRPARAM + 4]; - float param[NBRPARAM]; - - void updateParameters(); - void processMix(long numsamples); - void processReplace(long numsamples); - - void activate(); -}; - -#endif diff --git a/attic/muse_qt4_evolution/plugins/pandelay/pandelay.cpp b/attic/muse_qt4_evolution/plugins/pandelay/pandelay.cpp deleted file mode 100644 index 18ce1a41..00000000 --- a/attic/muse_qt4_evolution/plugins/pandelay/pandelay.cpp +++ /dev/null @@ -1,170 +0,0 @@ -//========================================================= -// PanDelay for MusE -// -// (C) Copyright 2006 Nil Geisweiller -//========================================================= - -#include "ladspapandelay.h" -#include <stdio.h> - -//--------------------------------------------------------- -// instantiate pandelay -// Construct a new plugin instance. -//--------------------------------------------------------- - -LADSPA_Handle instantiate(const LADSPA_Descriptor* /*Descriptor*/, - unsigned long samplerate) -{ - return new LADSPAPanDelay(samplerate); -} - -//--------------------------------------------------------- -// connect PortTo pandelay -// Connect a port to a data location. -//--------------------------------------------------------- - -void connect(LADSPA_Handle Instance, unsigned long port, - LADSPA_Data* data) -{ - ((LADSPAPanDelay*)Instance)->port[port] = data; -} - -//--------------------------------------------------------- -// activate -//--------------------------------------------------------- - -void activate(LADSPA_Handle instance) -{ - ((LADSPAPanDelay*)instance)->activate(); -} - -//--------------------------------------------------------- -// deactivate -//--------------------------------------------------------- - -void deactivate(LADSPA_Handle /*Instance*/) -{ -} - -//--------------------------------------------------------- -// run pandelay -//--------------------------------------------------------- - -void run(LADSPA_Handle Instance, unsigned long n) -{ - ((LADSPAPanDelay*)Instance)->processReplace(n); -} - -//--------------------------------------------------------- -// runAdding pandelay -// *ADD* the output to the output buffer. -//--------------------------------------------------------- - -void runAdding(LADSPA_Handle Instance, unsigned long n) -{ - ((LADSPAPanDelay*)Instance)->processMix(n); -} - -//--------------------------------------------------------- -// set pandelay RunAddingGain -//--------------------------------------------------------- - -void setGain(LADSPA_Handle /*Instance*/, LADSPA_Data /*Gain*/) -{ - printf("TEST setGain\n"); - // ((LADSPAPanDelay*)Instance)->m_fRunAddingGain = Gain; -} - -//--------------------------------------------------------- -// cleanup pandelay -//--------------------------------------------------------- - -void cleanup(LADSPA_Handle Instance) -{ - delete (LADSPAPanDelay*)Instance; -} - -static const char* portNames[] = { - "Input (Left)", - "Input (Right)", - "Output (Left)", - "Output (Right)", - "BMP", - "Beat Ratio", - "Feedback", - "Pan LFO Freq", - "Pan LFO Depth", - "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_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_100, MINBPM, MAXBPM }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_1, MINBEATRATIO, MAXBEATRATIO }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_HIGH, -1.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_HIGH, 0.0, 1.0 }, - { LADSPA_HINT_BOUNDED_ABOVE | LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_DEFAULT_MIDDLE, 0.0, 1.0 } -}; - -LADSPA_Descriptor descriptor = { - 1052, - "pandelay", - LADSPA_PROPERTY_HARD_RT_CAPABLE, - "PanDelay", - "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/attic/muse_qt4_evolution/plugins/pandelay/pandelaymodel.cpp b/attic/muse_qt4_evolution/plugins/pandelay/pandelaymodel.cpp deleted file mode 100644 index ab01ba9f..00000000 --- a/attic/muse_qt4_evolution/plugins/pandelay/pandelaymodel.cpp +++ /dev/null @@ -1,154 +0,0 @@ -//=========================================================================== -// -// PanDelay, panoramic rotating delay -// -// version 0.0.1 -// -// pandelaymodel.cpp -// -// -// 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 "pandelaymodel.h" - -PanDelayModel::PanDelayModel(int samplerate) { - for(int i = 0; i < MAXBUFFERLENGTH; i++) { - _leftBuffer[i] = 0.0; - _rightBuffer[i] = 0.0; - } - _bufferPointer = 0; - _inc = 0.0; - _l = 1.0; - _r = 1.0; - - _samplerate = samplerate; - setPanDelay(); -} - -PanDelayModel::~PanDelayModel() { -} - -void PanDelayModel::setSamplerate(int sr) { - _samplerate = sr; - setPanDelay(); -} - -void PanDelayModel::setBPM(float bpm) { - _BPM = bpm; - _delayTime = _beatRatio * 60.0 / _BPM; - setPanDelay(); -} - -void PanDelayModel::setBeatRatio(float br) { - _beatRatio = br; - _delayTime = _beatRatio * 60.0 / _BPM; - setPanDelay(); -} - -void PanDelayModel::setDelayTime(float dt) { - if(dt < MINDELAYTIME) _delayTime = MINDELAYTIME; - else if(dt > MAXDELAYTIME) _delayTime = MAXDELAYTIME; - else _delayTime = dt; - setPanDelay(); -} - -void PanDelayModel::setFeedback(float fb) { - _feedback = fb; - setPanDelay(); -} - -void PanDelayModel::setPanLFOFreq(float pf) { - _panLFOFreq = pf; - setPanDelay(); -} - -void PanDelayModel::setPanLFODepth(float pd) { - _panLFODepth = pd; - setPanDelay(); -} - -void PanDelayModel::setDryWet(float dw) { - _dryWet = dw; -} - -void PanDelayModel::setPanDelay() { - float numLFOSample = (1.0/_panLFOFreq) * (float)_samplerate; - _inc = 2.0 / numLFOSample; - _delaySampleSize = (int)(_delayTime * (float)_samplerate); - _lBound = 1.0 - _panLFODepth; - _rBound = 1.0 + _panLFODepth; -} - -void PanDelayModel::processMix(float* leftSamplesIn, float* rightSamplesIn, - float* leftSamplesOut, float* rightSamplesOut, - unsigned n) { - float ls, rs, p; - p = 1.0 - _dryWet; - for(unsigned i = 0; i < n; i++) { - //read buffer - ls = _leftBuffer[_bufferPointer]; - rs = _rightBuffer[_bufferPointer]; - //write buffer - _leftBuffer[_bufferPointer] *= _feedback; - _leftBuffer[_bufferPointer] += leftSamplesIn[i]; - _rightBuffer[_bufferPointer] *= _feedback; - _rightBuffer[_bufferPointer] += rightSamplesIn[i]; - //write out - leftSamplesOut[i] += _l * _dryWet * ls + p * leftSamplesIn[i]; - rightSamplesOut[i] += _r * _dryWet * rs + p * rightSamplesIn[i]; - //update _bufferPointer - _bufferPointer++; - _bufferPointer%=_delaySampleSize; - //update _l _r - _r += _inc; - _l -= _inc; - //update _inc - if(_r > _rBound || _r < _lBound) _inc = -_inc; - } -} - -void PanDelayModel::processReplace(float* leftSamplesIn, float* rightSamplesIn, - float* leftSamplesOut, - float* rightSamplesOut, unsigned n) { - float ls, rs, p; - p = 1.0 - _dryWet; - for(unsigned i = 0; i < n; i++) { - //read buffer - ls = _leftBuffer[_bufferPointer]; - rs = _rightBuffer[_bufferPointer]; - //write buffer - _leftBuffer[_bufferPointer] *= _feedback; - _leftBuffer[_bufferPointer] += leftSamplesIn[i]; - _rightBuffer[_bufferPointer] *= _feedback; - _rightBuffer[_bufferPointer] += rightSamplesIn[i]; - //write out - leftSamplesOut[i] = _l * _dryWet * ls + p * leftSamplesIn[i]; - rightSamplesOut[i] = _r * _dryWet * rs + p * rightSamplesIn[i]; - //update _bufferPointer - _bufferPointer++; - _bufferPointer%=_delaySampleSize; - //update _l _r - _r += _inc; - _l -= _inc; - //update _inc - if(_r > _rBound || _r < _lBound) _inc = -_inc; - } -} diff --git a/attic/muse_qt4_evolution/plugins/pandelay/pandelaymodel.h b/attic/muse_qt4_evolution/plugins/pandelay/pandelaymodel.h deleted file mode 100644 index 65983187..00000000 --- a/attic/muse_qt4_evolution/plugins/pandelay/pandelaymodel.h +++ /dev/null @@ -1,93 +0,0 @@ -//=========================================================================== -// -// PanDelay, panoramic rotating delay -// -// version 0.0.1 -// -// pandelaymodel.h -// -// -// 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 __PANDELAYMODEL_H -#define __PANDELAYMODEL_H - -#include <math.h> - -#define MAXBUFFERLENGTH 192000 -#define MINFREQ 0.1 //in Hz -#define MAXFREQ 10.0 //in Hz -#define MINBPM 60.0 -#define MAXBPM 255.0 -#define MINBEATRATIO 0.125 -#define MAXBEATRATIO 2.0 -#define MINDELAYTIME 0.01 //in second -#define MAXDELAYTIME 2.0 //in second - -#define NBRPARAM 5 - -class PanDelayModel { - private: - int _samplerate; - - //bool _beatFraction; //if true then the delay is calculated in beat fraction - float _BPM; - float _beatRatio; - float _delayTime; //delay is calculated according to BMP and ratioBMP - float _feedback; - float _panLFOFreq; - float _panLFODepth; - float _dryWet; //0.0 : dry, 1.0 : wet - - int _delaySampleSize; - float _lBound; - float _rBound; - float _inc; - float _l; - float _r; - - float _leftBuffer[MAXBUFFERLENGTH]; - float _rightBuffer[MAXBUFFERLENGTH]; - int _bufferPointer; - - public: - PanDelayModel(int samplerate); - ~PanDelayModel(); - - void setSamplerate(int sr); - void setBeatRatio(float br); - void setBPM(float bpm); - void setDelayTime(float dt); - void setFeedback(float dt); - void setPanLFOFreq(float pf); - void setPanLFODepth(float pd); - void setDryWet(float dw); - void setPanDelay(); - - void processMix(float* leftInSamples, float* rightInSamples, - float* leftOutSamples, float* rightOutSamples, - unsigned n); - void processReplace(float* leftInSamples, float* rightInSamples, - float* leftOutSamples, float* rightOutSamples, - unsigned n); -}; - -#endif /* __PANDELAYMODEL_H */ |