summaryrefslogtreecommitdiff
path: root/muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.h
diff options
context:
space:
mode:
Diffstat (limited to 'muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.h')
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.h179
1 files changed, 179 insertions, 0 deletions
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.h b/muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.h
new file mode 100644
index 00000000..12257b59
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.h
@@ -0,0 +1,179 @@
+/*
+ ZynAddSubFX - a software synthesizer
+
+ Controller.h - (Midi) Controllers implementation
+ 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
+
+*/
+
+
+#ifndef CONTROLLER_H
+#define CONTROLLER_H
+
+#include "../globals.h"
+#include "../Misc/XMLwrapper.h"
+
+class Controller{
+ public:
+ Controller();
+ ~Controller();
+ void resetall();
+
+ void add2XML(XMLwrapper *xml);
+ void defaults();
+ void getfromXML(XMLwrapper *xml);
+
+ //Controllers functions
+ void setpitchwheel(int value);
+ void setpitchwheelbendrange(unsigned short int value);
+ void setexpression(int value);
+ void setpanning(int value);
+ void setfiltercutoff(int value);
+ void setfilterq(int value);
+ void setbandwidth(int value);
+ void setmodwheel(int value);
+ void setfmamp(int value);
+ void setvolume(int value);
+ void setsustain(int value);
+ void setportamento(int value);
+ void setresonancecenter(int value);
+ void setresonancebw(int value);
+
+
+ void setparameternumber(unsigned int type,int value);//used for RPN and NRPN's
+ int getnrpn(int *parhi, int *parlo, int *valhi, int *vallo);
+
+ int initportamento(REALTYPE oldfreq,REALTYPE newfreq);//returns 1 if the portamento's conditions are true, else return 0
+ void updateportamento(); //update portamento values
+
+ // Controllers values
+ struct {//Pitch Wheel
+ int data;
+ short int bendrange;//bendrange is in cents
+ REALTYPE relfreq;//the relative frequency (default is 1.0)
+ } pitchwheel;
+
+ struct{//Expression
+ int data;
+ REALTYPE relvolume;
+ unsigned char receive;
+ } expression;
+
+ struct{//Panning
+ int data;
+ REALTYPE pan;
+ unsigned char depth;
+ } panning;
+
+
+ struct{//Filter cutoff
+ int data;
+ REALTYPE relfreq;
+ unsigned char depth;
+ } filtercutoff;
+
+ struct{//Filter Q
+ int data;
+ REALTYPE relq;
+ unsigned char depth;
+ } filterq;
+
+ struct{//Bandwidth
+ int data;
+ REALTYPE relbw;
+ unsigned char depth;
+ unsigned char exponential;
+ } bandwidth;
+
+ struct {//Modulation Wheel
+ int data;
+ REALTYPE relmod;
+ unsigned char depth;
+ unsigned char exponential;
+ } modwheel;
+
+ struct{//FM amplitude
+ int data;
+ REALTYPE relamp;
+ unsigned char receive;
+ } fmamp;
+
+ struct{//Volume
+ int data;
+ REALTYPE volume;
+ unsigned char receive;
+ } volume;
+
+ struct{//Sustain
+ int data,sustain;
+ unsigned char receive;
+ } sustain;
+
+ struct{//Portamento
+ //parameters
+ int data;
+ unsigned char portamento;
+
+ //pitchthresh is the threshold of enabling protamento
+ //pitchthreshtype -> enable the portamento only below(0)/above(1) the threshold
+ unsigned char receive,time,pitchthresh,pitchthreshtype;
+
+ //'up portanemto' means when the frequency is rising (eg: the portamento is from 200Hz to 300 Hz)
+ //'down portanemto' means when the frequency is lowering (eg: the portamento is from 300Hz to 200 Hz)
+ unsigned char updowntimestretch;//this value represent how the portamento time is reduced
+ //0 - for down portamento, 1..63 - the up portamento's time is smaller than the down portamento
+ //64 - the portamento time is always the same
+ //64-126 - the down portamento's time is smaller than the up portamento
+ //127 - for upper portamento
+
+ REALTYPE freqrap;//this value is used to compute the actual portamento
+ int noteusing;//this is used by the Part:: for knowing which note uses the portamento
+ int used;//if a the portamento is used by a note
+ //internal data
+ REALTYPE x,dx;//x is from 0.0 (start portamento) to 1.0 (finished portamento), dx is x increment
+ REALTYPE origfreqrap;// this is used for computing oldfreq value from x
+ } portamento;
+
+ struct{//Resonance Center Frequency
+ int data;
+ REALTYPE relcenter;
+ unsigned char depth;
+ } resonancecenter;
+
+ struct{//Resonance Bandwidth
+ int data;
+ REALTYPE relbw;
+ unsigned char depth;
+ } resonancebandwidth;
+
+
+ /* RPN and NPRPN */
+ struct{//nrpn
+ int parhi,parlo;
+ int valhi,vallo;
+ unsigned char receive;//this is saved to disk by Master
+ } NRPN;
+
+ private:
+};
+
+
+
+
+
+#endif
+