diff options
author | Robert Jonsson <spamatica@gmail.com> | 2011-04-15 18:52:45 +0000 |
---|---|---|
committer | Robert Jonsson <spamatica@gmail.com> | 2011-04-15 18:52:45 +0000 |
commit | 47a10173ea203de2036dd00791fe5c24fb673135 (patch) | |
tree | 6cb2e59a1e099adb30ec4f394097e33974c54ac4 /attic/muse_qt4_evolution/synti/zynaddsubfx/Effects/EffectMgr.C | |
parent | 8edb9ca0e8e056faa0b488c947e7447a8148f880 (diff) |
removing unnecessary duplication
Diffstat (limited to 'attic/muse_qt4_evolution/synti/zynaddsubfx/Effects/EffectMgr.C')
-rw-r--r-- | attic/muse_qt4_evolution/synti/zynaddsubfx/Effects/EffectMgr.C | 292 |
1 files changed, 0 insertions, 292 deletions
diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Effects/EffectMgr.C b/attic/muse_qt4_evolution/synti/zynaddsubfx/Effects/EffectMgr.C deleted file mode 100644 index efdb672a..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Effects/EffectMgr.C +++ /dev/null @@ -1,292 +0,0 @@ -/* - ZynAddSubFX - a software synthesizer - - EffectMgr.C - Effect manager, an interface betwen the program and effects - Copyright (C) 2002-2005 Nasca Octavian Paul - Author: Nasca Octavian Paul - - This program is free software; you can redistribute it and/or modify - it under the terms of version 2 of the GNU General Public License - as published by the Free Software Foundation. - - 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 (version 2) for more details. - - You should have received a copy of the GNU General Public License (version 2) - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -#include <stdlib.h> -#include <stdio.h> -#include "EffectMgr.h" -#include "../Misc/Master.h" - -EffectMgr::EffectMgr(int insertion_,Master* master_){ - setpresettype("Peffect"); - efx=NULL; - nefx=0; - insertion=insertion_; - master=master_; - efxoutl=new REALTYPE[SOUND_BUFFER_SIZE]; - efxoutr=new REALTYPE[SOUND_BUFFER_SIZE];; - for (int i=0;i<SOUND_BUFFER_SIZE;i++){ - efxoutl[i]=0.0; - efxoutr[i]=0.0; - }; - filterpars=NULL; - dryonly=false; - defaults(); -}; - - -EffectMgr::~EffectMgr(){ - if (efx!=NULL) delete (efx); - delete (efxoutl); - delete (efxoutr); -}; - -void EffectMgr::defaults(){ - changeeffect(0); - setdryonly(false); -}; - -/* - * Change the effect - */ -void EffectMgr::changeeffect(int nefx_){ - cleanup(); - if (nefx==nefx_) return; - nefx=nefx_; - for (int i=0;i<SOUND_BUFFER_SIZE;i++){ - efxoutl[i]=0.0; - efxoutr[i]=0.0; - }; - - if (efx!=NULL) delete (efx); - switch (nefx){ - case 1:efx=new Reverb(insertion,efxoutl,efxoutr);break; - case 2:efx=new Echo(insertion,efxoutl,efxoutr);break; - case 3:efx=new Chorus(insertion,efxoutl,efxoutr);break; - case 4:efx=new Phaser(insertion,efxoutl,efxoutr);break; - case 5:efx=new Alienwah(insertion,efxoutl,efxoutr);break; - case 6:efx=new Distorsion(insertion,efxoutl,efxoutr);break; - case 7:efx=new EQ(insertion,efxoutl,efxoutr);break; - case 8:efx=new DynamicFilter(insertion,efxoutl,efxoutr);break; - //put more effect here - default:efx=NULL;break;//no effect (thru) - }; - - if (efx!=NULL) filterpars=efx->filterpars; -}; - -/* - * Obtain the effect number - */ -int EffectMgr::geteffect(){ - return (nefx); -}; - -/* - * Cleanup the current effect - */ -void EffectMgr::cleanup(){ - if (efx!=NULL) efx->cleanup(); -}; - - -/* - * Get the preset of the current effect - */ - -unsigned char EffectMgr::getpreset(){ - if (efx!=NULL) return(efx->Ppreset); - else return(0); -}; - -/* - * Change the preset of the current effect - */ -void EffectMgr::changepreset_nolock(unsigned char npreset){ - if (efx!=NULL) efx->setpreset(npreset); -}; - -/* - * Change the preset of the current effect(with thread locking) - */ -void EffectMgr::changepreset(unsigned char npreset){ - master->lock(); - changepreset_nolock(npreset); - master->unlock(); -}; - - -/* - * Change a parameter of the current effect - */ -void EffectMgr::seteffectpar_nolock(int npar,unsigned char value){ - if (efx==NULL) return; - efx->changepar(npar,value); -}; - -/* - * Change a parameter of the current effect (with thread locking) - */ -void EffectMgr::seteffectpar(int npar,unsigned char value){ - master->lock(); - seteffectpar_nolock(npar,value); - master->unlock(); -}; - -/* - * Get a parameter of the current effect - */ -unsigned char EffectMgr::geteffectpar(int npar){ - if (efx==NULL) return(0); - return(efx->getpar(npar)); -}; - - -/* - * Apply the effect - */ -void EffectMgr::out(REALTYPE *smpsl,REALTYPE *smpsr){ - int i; - if (efx==NULL){ - if (insertion==0) - for (i=0;i<SOUND_BUFFER_SIZE;i++){ - smpsl[i]=0.0;smpsr[i]=0.0; - efxoutl[i]=0.0;efxoutr[i]=0.0; - }; - return; - }; - for (i=0;i<SOUND_BUFFER_SIZE;i++){ - smpsl[i]+=denormalkillbuf[i]; - smpsr[i]+=denormalkillbuf[i]; - efxoutl[i]=0.0; - efxoutr[i]=0.0; - }; - efx->out(smpsl,smpsr); - - REALTYPE volume=efx->volume; - - if (nefx==7){//this is need only for the EQ effect - for (i=0;i<SOUND_BUFFER_SIZE;i++){ - smpsl[i]=efxoutl[i]; - smpsr[i]=efxoutr[i]; - }; - return; - }; - - //Insertion effect - if (insertion!=0) { - REALTYPE v1,v2; - if (volume<0.5) { - v1=1.0; - v2=volume*2.0; - } else { - v1=(1.0-volume)*2.0; - v2=1.0; - }; - if ((nefx==1)||(nefx==2)) v2*=v2;//for Reverb and Echo, the wet function is not liniar - - if (dryonly){//this is used for instrument effect only - for (i=0;i<SOUND_BUFFER_SIZE;i++){ - smpsl[i]*=v1; - smpsr[i]*=v1; - efxoutl[i]*=v2; - efxoutr[i]*=v2; - }; - }else{//normal instrument/insertion effect - for (i=0;i<SOUND_BUFFER_SIZE;i++){ - smpsl[i]=smpsl[i]*v1+efxoutl[i]*v2; - smpsr[i]=smpsr[i]*v1+efxoutr[i]*v2; - }; - }; - } else {//System effect - for (i=0;i<SOUND_BUFFER_SIZE;i++){ - efxoutl[i]*=2.0*volume; - efxoutr[i]*=2.0*volume; - smpsl[i]=efxoutl[i]; - smpsr[i]=efxoutr[i]; - }; - }; - -}; - -/* - * Get the effect volume for the system effect - */ -REALTYPE EffectMgr::sysefxgetvolume(){ - if (efx==NULL) return (1.0); - else return(efx->outvolume); -}; - - -/* - * Get the EQ response - */ -REALTYPE EffectMgr::getEQfreqresponse(REALTYPE freq){ - if (nefx==7) return(efx->getfreqresponse(freq)); - else return(0.0); -}; - - -void EffectMgr::setdryonly(bool value){ - dryonly=value; -}; - -void EffectMgr::add2XML(XMLwrapper *xml){ - xml->addpar("type",geteffect()); - - if ((efx==NULL)||(geteffect()==0)) return; - xml->addpar("preset",efx->Ppreset); - - xml->beginbranch("EFFECT_PARAMETERS"); - for (int n=0;n<128;n++){ - int par=geteffectpar(n); - if (par==0) continue; - xml->beginbranch("par_no",n); - xml->addpar("par",par); - xml->endbranch(); - }; - if (filterpars!=NULL){ - xml->beginbranch("FILTER"); - filterpars->add2XML(xml); - xml->endbranch(); - }; - xml->endbranch(); -}; - -void EffectMgr::getfromXML(XMLwrapper *xml){ - changeeffect(xml->getpar127("type",geteffect())); - - if ((efx==NULL)||(geteffect()==0)) return; - - efx->Ppreset=xml->getpar127("preset",efx->Ppreset); - - if (xml->enterbranch("EFFECT_PARAMETERS")){ - for (int n=0;n<128;n++){ - seteffectpar_nolock(n,0);//erase effect parameter - if (xml->enterbranch("par_no",n)==0) continue; - - int par=geteffectpar(n); - seteffectpar_nolock(n,xml->getpar127("par",par)); - xml->exitbranch(); - }; - if (filterpars!=NULL){ - if (xml->enterbranch("FILTER")){ - filterpars->getfromXML(xml); - xml->exitbranch(); - }; - }; - xml->exitbranch(); - }; - cleanup(); -}; - - - |