summaryrefslogtreecommitdiff
path: root/muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.h
diff options
context:
space:
mode:
Diffstat (limited to 'muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.h')
-rw-r--r--muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.h282
1 files changed, 282 insertions, 0 deletions
diff --git a/muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.h b/muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.h
new file mode 100644
index 00000000..1773f2cd
--- /dev/null
+++ b/muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.h
@@ -0,0 +1,282 @@
+/*
+ ZynAddSubFX - a software synthesizer
+
+ ADnoteParameters.h - Parameters for ADnote (ADsynth)
+ 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 AD_NOTE_PARAMETERS_H
+#define AD_NOTE_PARAMETERS_H
+
+
+#include "../globals.h"
+#include "EnvelopeParams.h"
+#include "LFOParams.h"
+#include "FilterParams.h"
+#include "../Synth/OscilGen.h"
+#include "../Synth/Resonance.h"
+#include "../Misc/Util.h"
+#include "../Misc/XMLwrapper.h"
+#include "../DSP/FFTwrapper.h"
+#include "Presets.h"
+
+ enum FMTYPE{NONE,MORPH,RING_MOD,PHASE_MOD,FREQ_MOD,PITCH_MOD};
+
+ /*****************************************************************/
+ /* GLOBAL PARAMETERS */
+ /*****************************************************************/
+
+ struct ADnoteGlobalParam{
+
+ /* The instrument type - MONO/STEREO
+ If the mode is MONO, the panning of voices are not used
+ Stereo=1, Mono=0. */
+
+ unsigned char PStereo;
+
+
+ /******************************************
+ * FREQUENCY GLOBAL PARAMETERS *
+ ******************************************/
+ unsigned short int PDetune;//fine detune
+ unsigned short int PCoarseDetune;//coarse detune+octave
+ unsigned char PDetuneType;//detune type
+
+ unsigned char PBandwidth;//how much the relative fine detunes of the voices are changed
+
+ EnvelopeParams *FreqEnvelope; //Frequency Envelope
+
+ LFOParams *FreqLfo;//Frequency LFO
+
+ /********************************************
+ * AMPLITUDE GLOBAL PARAMETERS *
+ ********************************************/
+
+ /* Panning - 0 - random
+ 1 - left
+ 64 - center
+ 127 - right */
+ unsigned char PPanning;
+
+ unsigned char PVolume;
+
+ unsigned char PAmpVelocityScaleFunction;
+
+ EnvelopeParams *AmpEnvelope;
+
+ LFOParams *AmpLfo;
+
+ unsigned char PPunchStrength,PPunchTime,PPunchStretch,PPunchVelocitySensing;
+
+ /******************************************
+ * FILTER GLOBAL PARAMETERS *
+ ******************************************/
+ FilterParams *GlobalFilter;
+
+ // filter velocity sensing
+ unsigned char PFilterVelocityScale;
+
+ // filter velocity sensing
+ unsigned char PFilterVelocityScaleFunction;
+
+ EnvelopeParams *FilterEnvelope;
+
+ LFOParams *FilterLfo;
+
+ // RESONANCE
+ Resonance *Reson;
+
+ //how the randomness is applied to the harmonics on more voices using the same oscillator
+ unsigned char Hrandgrouping;
+ };
+
+
+
+ /***********************************************************/
+ /* VOICE PARAMETERS */
+ /***********************************************************/
+ struct ADnoteVoiceParam{
+
+ /* If the voice is enabled */
+ unsigned char Enabled;
+
+ /* Type of the voice (0=Sound,1=Noise)*/
+ unsigned char Type;
+
+ /* Voice Delay */
+ unsigned char PDelay;
+
+ /* If the resonance is enabled for this voice */
+ unsigned char Presonance;
+
+ // What external oscil should I use, -1 for internal OscilSmp&FMSmp
+ short int Pextoscil,PextFMoscil;
+ // it is not allowed that the externoscil,externFMoscil => current voice
+
+ // oscillator phases
+ unsigned char Poscilphase,PFMoscilphase;
+
+ // filter bypass
+ unsigned char Pfilterbypass;
+
+ /* Voice oscillator */
+ OscilGen *OscilSmp;
+
+ /**********************************
+ * FREQUENCY PARAMETERS *
+ **********************************/
+
+ /* If the base frequency is fixed to 440 Hz*/
+ unsigned char Pfixedfreq;
+
+ /* Equal temperate (this is used only if the Pfixedfreq is enabled)
+ If this parameter is 0, the frequency is fixed (to 440 Hz);
+ if this parameter is 64, 1 MIDI halftone -> 1 frequency halftone */
+ unsigned char PfixedfreqET;
+
+ /* Fine detune */
+ unsigned short int PDetune;
+
+ /* Coarse detune + octave */
+ unsigned short int PCoarseDetune;
+
+ /* Detune type */
+ unsigned char PDetuneType;
+
+ /* Frequency Envelope */
+ unsigned char PFreqEnvelopeEnabled;
+ EnvelopeParams *FreqEnvelope;
+
+ /* Frequency LFO */
+ unsigned char PFreqLfoEnabled;
+ LFOParams *FreqLfo;
+
+
+ /***************************
+ * AMPLITUDE PARAMETERS *
+ ***************************/
+
+ /* Panning 0 - random
+ 1 - left
+ 64 - center
+ 127 - right
+ The Panning is ignored if the instrument is mono */
+ unsigned char PPanning;
+
+ /* Voice Volume */
+ unsigned char PVolume;
+
+ /* If the Volume negative */
+ unsigned char PVolumeminus;
+
+ /* Velocity sensing */
+ unsigned char PAmpVelocityScaleFunction;
+
+ /* Amplitude Envelope */
+ unsigned char PAmpEnvelopeEnabled;
+ EnvelopeParams *AmpEnvelope;
+
+ /* Amplitude LFO */
+ unsigned char PAmpLfoEnabled;
+ LFOParams *AmpLfo;
+
+
+
+ /*************************
+ * FILTER PARAMETERS *
+ *************************/
+
+ /* Voice Filter */
+ unsigned char PFilterEnabled;
+ FilterParams *VoiceFilter;
+
+ /* Filter Envelope */
+ unsigned char PFilterEnvelopeEnabled;
+ EnvelopeParams *FilterEnvelope;
+
+ /* LFO Envelope */
+ unsigned char PFilterLfoEnabled;
+ LFOParams *FilterLfo;
+
+ /****************************
+ * MODULLATOR PARAMETERS *
+ ****************************/
+
+ /* Modullator Parameters (0=off,1=Morph,2=RM,3=PM,4=FM.. */
+ unsigned char PFMEnabled;
+
+ /* Voice that I use as modullator instead of FMSmp.
+ It is -1 if I use FMSmp(default).
+ It maynot be equal or bigger than current voice */
+ short int PFMVoice;
+
+ /* Modullator oscillator */
+ OscilGen *FMSmp;
+
+ /* Modullator Volume */
+ unsigned char PFMVolume;
+
+ /* Modullator damping at higher frequencies */
+ unsigned char PFMVolumeDamp;
+
+ /* Modullator Velocity Sensing */
+ unsigned char PFMVelocityScaleFunction;
+
+ /* Fine Detune of the Modullator*/
+ unsigned short int PFMDetune;
+
+ /* Coarse Detune of the Modullator */
+ unsigned short int PFMCoarseDetune;
+
+ /* The detune type */
+ unsigned char PFMDetuneType;
+
+ /* Frequency Envelope of the Modullator */
+ unsigned char PFMFreqEnvelopeEnabled;
+ EnvelopeParams *FMFreqEnvelope;
+
+ /* Frequency Envelope of the Modullator */
+ unsigned char PFMAmpEnvelopeEnabled;
+ EnvelopeParams *FMAmpEnvelope;
+ };
+
+class ADnoteParameters:public Presets{
+ public:
+ ADnoteParameters(FFTwrapper *fft_);
+ ~ADnoteParameters();
+
+ ADnoteGlobalParam GlobalPar;
+ ADnoteVoiceParam VoicePar[NUM_VOICES];
+
+ void defaults();
+ void add2XML(XMLwrapper *xml);
+ void getfromXML(XMLwrapper *xml);
+
+ REALTYPE getBandwidthDetuneMultiplier();
+ private:
+ void defaults(int n);//n is the nvoice
+
+ void EnableVoice(int nvoice);
+ void KillVoice(int nvoice);
+ FFTwrapper *fft;
+
+ void add2XMLsection(XMLwrapper *xml,int n);
+ void getfromXMLsection(XMLwrapper *xml,int n);
+};
+
+#endif