summaryrefslogtreecommitdiff
path: root/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.h
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 /attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.h
parent1bd4f2e8d9745cabb667b043171cad22c8577768 (diff)
clean3
Diffstat (limited to 'attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.h')
-rw-r--r--attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.h169
1 files changed, 169 insertions, 0 deletions
diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.h
new file mode 100644
index 00000000..a2328e86
--- /dev/null
+++ b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.h
@@ -0,0 +1,169 @@
+/*
+ ZynAddSubFX - a software synthesizer
+
+ PADnoteParameters.h - Parameters for PADnote (PADsynth)
+ 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 PAD_NOTE_PARAMETERS_H
+#define PAD_NOTE_PARAMETERS_H
+
+#include "../Misc/XMLwrapper.h"
+#include "../DSP/FFTwrapper.h"
+#include "../globals.h"
+#include "../Synth/OscilGen.h"
+#include "../Synth/Resonance.h"
+#include "../Misc/Util.h"
+
+#include "EnvelopeParams.h"
+#include "LFOParams.h"
+#include "FilterParams.h"
+#include "Presets.h"
+
+class Master;
+
+class PADnoteParameters:public Presets{
+ public:
+ PADnoteParameters(FFTwrapper *fft_,Master* master);
+ ~PADnoteParameters();
+
+ void defaults();
+ void add2XML(XMLwrapper *xml);
+ void getfromXML(XMLwrapper *xml);
+
+ //returns a value between 0.0-1.0 that represents the estimation perceived bandwidth
+ REALTYPE getprofile(REALTYPE *smp,int size);
+
+ //parameters
+
+ //the mode: 0 - bandwidth, 1 - discrete (bandwidth=0), 2 - continous
+ //the harmonic profile is used only on mode 0
+ unsigned char Pmode;
+
+ //Harmonic profile (the frequency distribution of a single harmonic)
+ struct {
+ struct{//base function
+ unsigned char type;
+ unsigned char par1;
+ }base;
+ unsigned char freqmult;//frequency multiplier of the distribution
+ struct{//the modulator of the distribution
+ unsigned char par1;
+ unsigned char freq;
+ }modulator;
+
+ unsigned char width;//the width of the resulting function after the modulation
+ struct{//the amplitude multiplier of the harmonic profile
+ unsigned char mode;
+ unsigned char type;
+ unsigned char par1;
+ unsigned char par2;
+ }amp;
+ bool autoscale;//if the scale of the harmonic profile is computed automaticaly
+ unsigned char onehalf;//what part of the base function is used to make the distribution
+ }Php;
+
+
+ unsigned int Pbandwidth;//the values are from 0 to 1000
+ unsigned char Pbwscale;//how the bandwidth is increased according to the harmonic's frequency
+
+ struct{//where are positioned the harmonics (on integer multimplier or different places)
+ unsigned char type;
+ unsigned char par1,par2,par3;//0..255
+ }Phrpos;
+
+ struct {//quality of the samples (how many samples, the length of them,etc.)
+ unsigned char samplesize;
+ unsigned char basenote,oct,smpoct;
+ } Pquality;
+
+ //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;
+ unsigned short int PDetune;//fine detune
+ unsigned short int PCoarseDetune;//coarse detune+octave
+ unsigned char PDetuneType;//detune type
+
+ EnvelopeParams *FreqEnvelope; //Frequency Envelope
+ LFOParams *FreqLfo;//Frequency LFO
+
+ //Amplitude parameters
+ unsigned char PStereo;
+ /* 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 Parameters
+ FilterParams *GlobalFilter;
+
+ // filter velocity sensing
+ unsigned char PFilterVelocityScale;
+
+ // filter velocity sensing
+ unsigned char PFilterVelocityScaleFunction;
+
+ EnvelopeParams *FilterEnvelope;
+ LFOParams *FilterLfo;
+
+
+
+
+ REALTYPE setPbandwidth(int Pbandwidth);//returns the BandWidth in cents
+ REALTYPE getNhr(int n);//gets the n-th overtone position relatively to N harmonic
+
+ void applyparameters(bool lockmutex);
+
+ OscilGen *oscilgen;
+ Resonance *resonance;
+
+ struct{
+ int size;
+ REALTYPE basefreq;
+ REALTYPE *smp;
+ }sample[PAD_MAX_SAMPLES],newsample;
+
+ private:
+ void generatespectrum_bandwidthMode(REALTYPE *spectrum, int size,REALTYPE basefreq,REALTYPE *profile,int profilesize,REALTYPE bwadjust);
+ void generatespectrum_otherModes(REALTYPE *spectrum, int size,REALTYPE basefreq,REALTYPE *profile,int profilesize,REALTYPE bwadjust);
+ void deletesamples();
+ void deletesample(int n);
+
+ FFTwrapper *fft;
+ Master* master;
+};
+
+
+
+#endif