summaryrefslogtreecommitdiff
path: root/muse_qt4_evolution/synti/zynaddsubfx/Effects/Phaser.C
diff options
context:
space:
mode:
authorRobert Jonsson <spamatica@gmail.com>2011-03-07 19:01:11 +0000
committerRobert Jonsson <spamatica@gmail.com>2011-03-07 19:01:11 +0000
commite40fc849149dd97c248866a4a1d026dda5e57b62 (patch)
treeb12b358f3b3a0608001d30403358f8443118ec5f /muse_qt4_evolution/synti/zynaddsubfx/Effects/Phaser.C
parent1bd4f2e8d9745cabb667b043171cad22c8577768 (diff)
clean3
Diffstat (limited to 'muse_qt4_evolution/synti/zynaddsubfx/Effects/Phaser.C')
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/Effects/Phaser.C260
1 files changed, 0 insertions, 260 deletions
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/Effects/Phaser.C b/muse_qt4_evolution/synti/zynaddsubfx/Effects/Phaser.C
deleted file mode 100644
index 6f21f39e..00000000
--- a/muse_qt4_evolution/synti/zynaddsubfx/Effects/Phaser.C
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- ZynAddSubFX - a software synthesizer
-
- Phaser.C - Phaser effect
- 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 <math.h>
-#include "Phaser.h"
-#include <stdio.h>
-#define PHASER_LFO_SHAPE 2
-
-Phaser::Phaser(int insertion_,REALTYPE *efxoutl_,REALTYPE *efxoutr_){
- efxoutl=efxoutl_;
- efxoutr=efxoutr_;
- filterpars=NULL;
-
- oldl=NULL;
- oldr=NULL;
- insertion=insertion_;
-
- Ppreset=0;
- setpreset(Ppreset);
- cleanup();
-};
-
-Phaser::~Phaser(){
- if (oldl!=NULL) delete [] oldl;
- if (oldr!=NULL) delete [] oldr;
-};
-
-
-/*
- * Effect output
- */
-void Phaser::out(REALTYPE *smpsl,REALTYPE *smpsr){
- int i,j;
- REALTYPE lfol,lfor,lgain,rgain,tmp;
-
- lfo.effectlfoout(&lfol,&lfor);
- lgain=lfol;
- rgain=lfor;
- lgain=(exp(lgain*PHASER_LFO_SHAPE)-1)/(exp(PHASER_LFO_SHAPE)-1.0);
- rgain=(exp(rgain*PHASER_LFO_SHAPE)-1)/(exp(PHASER_LFO_SHAPE)-1.0);
-
-
- lgain=1.0-phase*(1.0-depth)-(1.0-phase)*lgain*depth;
- rgain=1.0-phase*(1.0-depth)-(1.0-phase)*rgain*depth;
-
- if (lgain>1.0) lgain=1.0;else if (lgain<0.0) lgain=0.0;
- if (rgain>1.0) rgain=1.0;else if (rgain<0.0) rgain=0.0;
-
- for (i=0;i<SOUND_BUFFER_SIZE;i++){
- REALTYPE x=(REALTYPE) i /SOUND_BUFFER_SIZE;
- REALTYPE x1=1.0-x;
- REALTYPE gl=lgain*x+oldlgain*x1;
- REALTYPE gr=rgain*x+oldrgain*x1;
- REALTYPE inl=smpsl[i]*panning+fbl;
- REALTYPE inr=smpsr[i]*(1.0-panning)+fbr;
-
- //Left channel
- for (j=0;j<Pstages*2;j++){//Phasing routine
- tmp=oldl[j];
- oldl[j]=gl*tmp+inl;
- inl=tmp-gl*oldl[j];
- };
- //Right channel
- for (j=0;j<Pstages*2;j++){//Phasing routine
- tmp=oldr[j];
- oldr[j]=gr*tmp+inr;
- inr=tmp-gr*oldr[j];
- };
- //Left/Right crossing
- REALTYPE l=inl;
- REALTYPE r=inr;
- inl=l*(1.0-lrcross)+r*lrcross;
- inr=r*(1.0-lrcross)+l*lrcross;
-
- fbl=inl*fb;
- fbr=inr*fb;
- efxoutl[i]=inl;
- efxoutr[i]=inr;
-
- };
-
- oldlgain=lgain; oldrgain=rgain;
-
- if (Poutsub!=0)
- for (i=0;i<SOUND_BUFFER_SIZE;i++){
- efxoutl[i]*= -1.0;
- efxoutr[i]*= -1.0;
- };
-
-};
-
-/*
- * Cleanup the effect
- */
-void Phaser::cleanup(){
- fbl=0.0;fbr=0.0;
- oldlgain=0.0;
- oldrgain=0.0;
- for (int i=0;i<Pstages*2;i++) {
- oldl[i]=0.0;
- oldr[i]=0.0;
- };
-};
-
-/*
- * Parameter control
- */
-void Phaser::setdepth(unsigned char Pdepth){
- this->Pdepth=Pdepth;
- depth=(Pdepth/127.0);
-};
-
-
-void Phaser::setfb(unsigned char Pfb){
- this->Pfb=Pfb;
- fb=(Pfb-64.0)/64.1;
-};
-
-void Phaser::setvolume(unsigned char Pvolume){
- this->Pvolume=Pvolume;
- outvolume=Pvolume/127.0;
- if (insertion==0) volume=1.0;
- else volume=outvolume;
-};
-
-void Phaser::setpanning(unsigned char Ppanning){
- this->Ppanning=Ppanning;
- panning=Ppanning/127.0;
-};
-
-void Phaser::setlrcross(unsigned char Plrcross){
- this->Plrcross=Plrcross;
- lrcross=Plrcross/127.0;
-};
-
-void Phaser::setstages(unsigned char Pstages){
- if (oldl!=NULL) delete [] oldl;
- if (oldr!=NULL) delete [] oldr;
- if (Pstages>=MAX_PHASER_STAGES) Pstages=MAX_PHASER_STAGES-1;
- this->Pstages=Pstages;
- oldl=new REALTYPE[Pstages*2];
- oldr=new REALTYPE[Pstages*2];
- cleanup();
-};
-
-void Phaser::setphase(unsigned char Pphase){
- this->Pphase=Pphase;
- phase=(Pphase/127.0);
-};
-
-
-void Phaser::setpreset(unsigned char npreset){
- const int PRESET_SIZE=12;
- const int NUM_PRESETS=6;
- unsigned char presets[NUM_PRESETS][PRESET_SIZE]={
- //Phaser1
- {64,64,36,0,0,64,110,64,1,0,0,20},
- //Phaser2
- {64,64,35,0,0,88,40,64,3,0,0,20},
- //Phaser3
- {64,64,31,0,0,66,68,107,2,0,0,20},
- //Phaser4
- {39,64,22,0,0,66,67,10,5,0,1,20},
- //Phaser5
- {64,64,20,0,1,110,67,78,10,0,0,20},
- //Phaser6
- {64,64,53,100,0,58,37,78,3,0,0,20}};
- if (npreset>=NUM_PRESETS) npreset=NUM_PRESETS-1;
- for (int n=0;n<PRESET_SIZE;n++) changepar(n,presets[npreset][n]);
- Ppreset=npreset;
-};
-
-
-void Phaser::changepar(int npar,unsigned char value){
- switch(npar){
- case 0: setvolume(value);
- break;
- case 1: setpanning(value);
- break;
- case 2: lfo.Pfreq=value;
- lfo.updateparams();
- break;
- case 3: lfo.Prandomness=value;
- lfo.updateparams();
- break;
- case 4: lfo.PLFOtype=value;
- lfo.updateparams();
- break;
- case 5: lfo.Pstereo=value;
- lfo.updateparams();
- break;
- case 6: setdepth(value);
- break;
- case 7: setfb(value);
- break;
- case 8: setstages(value);
- break;
- case 9: setlrcross(value);
- break;
- case 10:if (value>1) value=1;
- Poutsub=value;
- break;
- case 11:setphase(value);
- break;
- };
-};
-
-unsigned char Phaser::getpar(int npar){
- switch (npar){
- case 0: return(Pvolume);
- break;
- case 1: return(Ppanning);
- break;
- case 2: return(lfo.Pfreq);
- break;
- case 3: return(lfo.Prandomness);
- break;
- case 4: return(lfo.PLFOtype);
- break;
- case 5: return(lfo.Pstereo);
- break;
- case 6: return(Pdepth);
- break;
- case 7: return(Pfb);
- break;
- case 8: return(Pstages);
- break;
- case 9: return(Plrcross);
- break;
- case 10:return(Poutsub);
- break;
- case 11:return(Pphase);
- break;
- default:return (0);
- };
-
-};
-
-
-
-