summaryrefslogtreecommitdiff
path: root/attic/muse_qt4_evolution/synti/zynaddsubfx/Synth/ADnote.h
diff options
context:
space:
mode:
Diffstat (limited to 'attic/muse_qt4_evolution/synti/zynaddsubfx/Synth/ADnote.h')
-rw-r--r--attic/muse_qt4_evolution/synti/zynaddsubfx/Synth/ADnote.h258
1 files changed, 0 insertions, 258 deletions
diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Synth/ADnote.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Synth/ADnote.h
deleted file mode 100644
index 28c18975..00000000
--- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Synth/ADnote.h
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- ZynAddSubFX - a software synthesizer
-
- ADnote.h - The "additive" synthesizer
- 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_H
-#define AD_NOTE_H
-
-#include "../globals.h"
-#include "Envelope.h"
-#include "LFO.h"
-#include "../DSP/Filter.h"
-#include "../Params/ADnoteParameters.h"
-#include "../Params/Controller.h"
-
-//Globals
-
-//FM amplitude tune
-#define FM_AMP_MULTIPLIER 14.71280603
-
-#define OSCIL_SMP_EXTRA_SAMPLES 5
-
-class ADnote{ //ADDitive note
- public:
- ADnote(ADnoteParameters *pars,Controller *ctl_,REALTYPE freq,REALTYPE velocity,int portamento_,int midinote_);
- ~ADnote();
- int noteout(REALTYPE *outl,REALTYPE *outr);
- void relasekey();
- int finished();
-
-
- /*ready - this is 0 if it is not ready (the parameters has to be computed)
- or other value if the parameters has been computed and if it is ready to output*/
- char ready;
-
- private:
-
- void setfreq(int nvoice,REALTYPE freq);
- void setfreqFM(int nvoice,REALTYPE freq);
- void computecurrentparameters();
- void initparameters();
- void KillVoice(int nvoice);
- void KillNote();
- inline REALTYPE getvoicebasefreq(int nvoice);
- inline REALTYPE getFMvoicebasefreq(int nvoice);
- inline void ComputeVoiceOscillator_LinearInterpolation(int nvoice);
- inline void ComputeVoiceOscillator_CubicInterpolation(int nvoice);
- inline void ComputeVoiceOscillatorMorph(int nvoice);
- inline void ComputeVoiceOscillatorRingModulation(int nvoice);
- inline void ComputeVoiceOscillatorFrequencyModulation(int nvoice,int FMmode);//FMmode=0 for phase modulation, 1 for Frequency modulation
-// inline void ComputeVoiceOscillatorFrequencyModulation(int nvoice);
- inline void ComputeVoiceOscillatorPitchModulation(int nvoice);
-
- inline void ComputeVoiceNoise(int nvoice);
-
- inline void fadein(REALTYPE *smps);
-
-
- //GLOBALS
- ADnoteParameters *partparams;
- unsigned char stereo;//if the note is stereo (allows note Panning)
- int midinote;
- REALTYPE velocity,basefreq;
-
- ONOFFTYPE NoteEnabled;
- Controller *ctl;
-
- /*****************************************************************/
- /* GLOBAL PARAMETERS */
- /*****************************************************************/
-
- struct ADnoteGlobal{
- /******************************************
- * FREQUENCY GLOBAL PARAMETERS *
- ******************************************/
- REALTYPE Detune;//cents
-
- Envelope *FreqEnvelope;
- LFO *FreqLfo;
-
- /********************************************
- * AMPLITUDE GLOBAL PARAMETERS *
- ********************************************/
- REALTYPE Volume;// [ 0 .. 1 ]
-
- REALTYPE Panning;// [ 0 .. 1 ]
-
- Envelope *AmpEnvelope;
- LFO *AmpLfo;
-
- struct {
- int Enabled;
- REALTYPE initialvalue,dt,t;
- } Punch;
-
- /******************************************
- * FILTER GLOBAL PARAMETERS *
- ******************************************/
- Filter *GlobalFilterL,*GlobalFilterR;
-
- REALTYPE FilterCenterPitch;//octaves
- REALTYPE FilterQ;
- REALTYPE FilterFreqTracking;
-
- Envelope *FilterEnvelope;
-
- LFO *FilterLfo;
- } NoteGlobalPar;
-
-
-
- /***********************************************************/
- /* VOICE PARAMETERS */
- /***********************************************************/
- struct ADnoteVoice{
- /* If the voice is enabled */
- ONOFFTYPE Enabled;
-
- /* Voice Type (sound/noise)*/
- int noisetype;
-
- /* Filter Bypass */
- int filterbypass;
-
- /* Delay (ticks) */
- int DelayTicks;
-
- /* Waveform of the Voice */
- REALTYPE *OscilSmp;
-
- /************************************
- * FREQUENCY PARAMETERS *
- ************************************/
- int fixedfreq;//if the frequency is fixed to 440 Hz
- int fixedfreqET;//if the "fixed" frequency varies according to the note (ET)
-
- // cents = basefreq*VoiceDetune
- REALTYPE Detune,FineDetune;
-
- Envelope *FreqEnvelope;
- LFO *FreqLfo;
-
-
- /***************************
- * AMPLITUDE PARAMETERS *
- ***************************/
-
- /* Panning 0.0=left, 0.5 - center, 1.0 = right */
- REALTYPE Panning;
- REALTYPE Volume;// [-1.0 .. 1.0]
-
- Envelope *AmpEnvelope;
- LFO *AmpLfo;
-
- /*************************
- * FILTER PARAMETERS *
- *************************/
-
- Filter *VoiceFilter;
-
- REALTYPE FilterCenterPitch;/* Filter center Pitch*/
- REALTYPE FilterFreqTracking;
-
- Envelope *FilterEnvelope;
- LFO *FilterLfo;
-
-
- /****************************
- * MODULLATOR PARAMETERS *
- ****************************/
-
- FMTYPE FMEnabled;
-
- int FMVoice;
-
- // Voice Output used by other voices if use this as modullator
- REALTYPE *VoiceOut;
-
- /* Wave of the Voice */
- REALTYPE *FMSmp;
-
- REALTYPE FMVolume;
- REALTYPE FMDetune; //in cents
-
- Envelope *FMFreqEnvelope;
- Envelope *FMAmpEnvelope;
- } NoteVoicePar[NUM_VOICES];
-
-
- /********************************************************/
- /* INTERNAL VALUES OF THE NOTE AND OF THE VOICES */
- /********************************************************/
-
- //time from the start of the note
- REALTYPE time;
-
- //fractional part (skip)
- REALTYPE oscposlo[NUM_VOICES],oscfreqlo[NUM_VOICES];
-
- //integer part (skip)
- int oscposhi[NUM_VOICES],oscfreqhi[NUM_VOICES];
-
- //fractional part (skip) of the Modullator
- REALTYPE oscposloFM[NUM_VOICES],oscfreqloFM[NUM_VOICES];
-
- //integer part (skip) of the Modullator
- unsigned short int oscposhiFM[NUM_VOICES],oscfreqhiFM[NUM_VOICES];
-
- //used to compute and interpolate the amplitudes of voices and modullators
- REALTYPE oldamplitude[NUM_VOICES],
- newamplitude[NUM_VOICES],
- FMoldamplitude[NUM_VOICES],
- FMnewamplitude[NUM_VOICES];
-
- //used by Frequency Modulation (for integration)
- REALTYPE FMoldsmp[NUM_VOICES];
-
- //temporary buffer
- REALTYPE *tmpwave;
-
- //Filter bypass samples
- REALTYPE *bypassl,*bypassr;
-
- //interpolate the amplitudes
- REALTYPE globaloldamplitude,globalnewamplitude;
-
- //1 - if it is the fitst tick (used to fade in the sound)
- char firsttick[NUM_VOICES];
-
- //1 if the note has portamento
- int portamento;
-
- //how the fine detunes are made bigger or smaller
- REALTYPE bandwidthDetuneMultiplier;
-};
-
-#endif
-
-
-
-