diff options
Diffstat (limited to 'attic/muse_qt4_evolution/synti/zynaddsubfx/Params')
18 files changed, 0 insertions, 3995 deletions
| diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.C b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.C deleted file mode 100644 index fdbbbe83..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.C +++ /dev/null @@ -1,637 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  ADnoteParameters.C - 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 - -*/ - -#include <stdlib.h> -#include <stdio.h> -#include <math.h> - -#include "ADnoteParameters.h" - -ADnoteParameters::ADnoteParameters(FFTwrapper *fft_):Presets(){ -    setpresettype("Padsyth"); -    fft=fft_; - -    GlobalPar.FreqEnvelope=new EnvelopeParams(0,0); -    GlobalPar.FreqEnvelope->ASRinit(64,50,64,60); -    GlobalPar.FreqLfo=new LFOParams(70,0,64,0,0,0,0,0); -     -    GlobalPar.AmpEnvelope=new EnvelopeParams(64,1); -    GlobalPar.AmpEnvelope->ADSRinit_dB(0,40,127,25); -    GlobalPar.AmpLfo=new LFOParams(80,0,64,0,0,0,0,1); - -    GlobalPar.GlobalFilter=new FilterParams(2,94,40); -    GlobalPar.FilterEnvelope=new EnvelopeParams(0,1); -    GlobalPar.FilterEnvelope->ADSRinit_filter(64,40,64,70,60,64); -    GlobalPar.FilterLfo=new LFOParams(80,0,64,0,0,0,0,2); -    GlobalPar.Reson=new Resonance(); - -    for (int nvoice=0;nvoice<NUM_VOICES;nvoice++) EnableVoice(nvoice); -     -    defaults(); -}; - -void ADnoteParameters::defaults(){ -    //Default Parameters -    /* Frequency Global Parameters */ -    GlobalPar.PStereo=1;//stereo -    GlobalPar.PDetune=8192;//zero -    GlobalPar.PCoarseDetune=0; -    GlobalPar.PDetuneType=1; -    GlobalPar.FreqEnvelope->defaults(); -    GlobalPar.FreqLfo->defaults(); -    GlobalPar.PBandwidth=64; -     -    /* Amplitude Global Parameters */ -    GlobalPar.PVolume=90; -    GlobalPar.PPanning=64;//center -    GlobalPar.PAmpVelocityScaleFunction=64; -    GlobalPar.AmpEnvelope->defaults(); -    GlobalPar.AmpLfo->defaults(); -    GlobalPar.PPunchStrength=0; -    GlobalPar.PPunchTime=60; -    GlobalPar.PPunchStretch=64; -    GlobalPar.PPunchVelocitySensing=72; -    GlobalPar.Hrandgrouping=0; -     -    /* Filter Global Parameters*/ -    GlobalPar.PFilterVelocityScale=64; -    GlobalPar.PFilterVelocityScaleFunction=64; -    GlobalPar.GlobalFilter->defaults(); -    GlobalPar.FilterEnvelope->defaults(); -    GlobalPar.FilterLfo->defaults(); -    GlobalPar.Reson->defaults(); - - -    for (int nvoice=0;nvoice<NUM_VOICES;nvoice++){ -	defaults(nvoice); -    }; -    VoicePar[0].Enabled=1; -}; - -/* - * Defaults a voice - */ -void ADnoteParameters::defaults(int n){ -	int nvoice=n; -	VoicePar[nvoice].Enabled=0; -	VoicePar[nvoice].Type=0; -	VoicePar[nvoice].Pfixedfreq=0; -	VoicePar[nvoice].PfixedfreqET=0; -	VoicePar[nvoice].Presonance=1; -	VoicePar[nvoice].Pfilterbypass=0; -	VoicePar[nvoice].Pextoscil=-1; -	VoicePar[nvoice].PextFMoscil=-1; -	VoicePar[nvoice].Poscilphase=64; -	VoicePar[nvoice].PFMoscilphase=64; -	VoicePar[nvoice].PDelay=0; -	VoicePar[nvoice].PVolume=100; -	VoicePar[nvoice].PVolumeminus=0; -	VoicePar[nvoice].PPanning=64;//center -	VoicePar[nvoice].PDetune=8192;//8192=0 -	VoicePar[nvoice].PCoarseDetune=0; -	VoicePar[nvoice].PDetuneType=0; -	VoicePar[nvoice].PFreqLfoEnabled=0; -	VoicePar[nvoice].PFreqEnvelopeEnabled=0; -	VoicePar[nvoice].PAmpEnvelopeEnabled=0; -	VoicePar[nvoice].PAmpLfoEnabled=0; -	VoicePar[nvoice].PAmpVelocityScaleFunction=127; -	VoicePar[nvoice].PFilterEnabled=0; -	VoicePar[nvoice].PFilterEnvelopeEnabled=0; -	VoicePar[nvoice].PFilterLfoEnabled=0; -	VoicePar[nvoice].PFMEnabled=0; - -	//I use the internal oscillator (-1) -	VoicePar[nvoice].PFMVoice=-1; - -	VoicePar[nvoice].PFMVolume=90; -	VoicePar[nvoice].PFMVolumeDamp=64; -	VoicePar[nvoice].PFMDetune=8192; -	VoicePar[nvoice].PFMCoarseDetune=0; -	VoicePar[nvoice].PFMDetuneType=0; -	VoicePar[nvoice].PFMFreqEnvelopeEnabled=0; -	VoicePar[nvoice].PFMAmpEnvelopeEnabled=0; -	VoicePar[nvoice].PFMVelocityScaleFunction=64;	 - -	VoicePar[nvoice].OscilSmp->defaults(); -	VoicePar[nvoice].FMSmp->defaults(); - -	VoicePar[nvoice].AmpEnvelope->defaults(); -	VoicePar[nvoice].AmpLfo->defaults(); - -	VoicePar[nvoice].FreqEnvelope->defaults(); -	VoicePar[nvoice].FreqLfo->defaults(); - -	VoicePar[nvoice].VoiceFilter->defaults(); -	VoicePar[nvoice].FilterEnvelope->defaults(); -	VoicePar[nvoice].FilterLfo->defaults(); - -	VoicePar[nvoice].FMFreqEnvelope->defaults(); -	VoicePar[nvoice].FMAmpEnvelope->defaults(); -}; - - - -/* - * Init the voice parameters - */ -void ADnoteParameters::EnableVoice(int nvoice){ -    VoicePar[nvoice].OscilSmp=new OscilGen(fft,GlobalPar.Reson); -    VoicePar[nvoice].FMSmp=new OscilGen(fft,NULL); - -    VoicePar[nvoice].AmpEnvelope=new EnvelopeParams(64,1); -    VoicePar[nvoice].AmpEnvelope->ADSRinit_dB(0,100,127,100);	 -    VoicePar[nvoice].AmpLfo=new LFOParams(90,32,64,0,0,30,0,1); - -    VoicePar[nvoice].FreqEnvelope=new EnvelopeParams(0,0); -    VoicePar[nvoice].FreqEnvelope->ASRinit(30,40,64,60); -    VoicePar[nvoice].FreqLfo=new LFOParams(50,40,0,0,0,0,0,0); - -    VoicePar[nvoice].VoiceFilter=new FilterParams(2,50,60); -    VoicePar[nvoice].FilterEnvelope=new EnvelopeParams(0,0); -    VoicePar[nvoice].FilterEnvelope->ADSRinit_filter(90,70,40,70,10,40); -    VoicePar[nvoice].FilterLfo=new LFOParams(50,20,64,0,0,0,0,2); - -    VoicePar[nvoice].FMFreqEnvelope=new EnvelopeParams(0,0); -    VoicePar[nvoice].FMFreqEnvelope->ASRinit(20,90,40,80); -    VoicePar[nvoice].FMAmpEnvelope=new EnvelopeParams(64,1); -    VoicePar[nvoice].FMAmpEnvelope->ADSRinit(80,90,127,100); -}; - -/* - * Get the Multiplier of the fine detunes of the voices - */ -REALTYPE ADnoteParameters::getBandwidthDetuneMultiplier(){ -    REALTYPE bw=(GlobalPar.PBandwidth-64.0)/64.0; -    bw=pow(2.0,bw*pow(fabs(bw),0.2)*5.0); -     -    return(bw); -}; - - -/* - * Kill the voice - */ -void ADnoteParameters::KillVoice(int nvoice){ -    delete (VoicePar[nvoice].OscilSmp); -    delete (VoicePar[nvoice].FMSmp); - -    delete (VoicePar[nvoice].AmpEnvelope); -    delete (VoicePar[nvoice].AmpLfo); - -    delete (VoicePar[nvoice].FreqEnvelope); -    delete (VoicePar[nvoice].FreqLfo); - -    delete (VoicePar[nvoice].VoiceFilter); -    delete (VoicePar[nvoice].FilterEnvelope); -    delete (VoicePar[nvoice].FilterLfo); - -    delete (VoicePar[nvoice].FMFreqEnvelope); -    delete (VoicePar[nvoice].FMAmpEnvelope); -}; - -ADnoteParameters::~ADnoteParameters(){ -    delete(GlobalPar.FreqEnvelope); -    delete(GlobalPar.FreqLfo); -    delete(GlobalPar.AmpEnvelope); -    delete(GlobalPar.AmpLfo); -    delete(GlobalPar.GlobalFilter); -    delete(GlobalPar.FilterEnvelope); -    delete(GlobalPar.FilterLfo); -    delete(GlobalPar.Reson); - -    for (int nvoice=0;nvoice<NUM_VOICES;nvoice++){ -        KillVoice(nvoice); -    }; -}; - - - - -void ADnoteParameters::add2XMLsection(XMLwrapper *xml,int n){ -    int nvoice=n; -    if (nvoice>=NUM_VOICES) return; -     -    int oscilused=0,fmoscilused=0;//if the oscil or fmoscil are used by another voice - -    for (int i=0;i<NUM_VOICES;i++){ -	if (VoicePar[i].Pextoscil==nvoice) oscilused=1; -	if (VoicePar[i].PextFMoscil==nvoice) fmoscilused=1; -    }; -     -    xml->addparbool("enabled",VoicePar[nvoice].Enabled); -    if (((VoicePar[nvoice].Enabled==0)&&(oscilused==0)&&(fmoscilused==0))&&(xml->minimal)) return; - -    xml->addpar("type",VoicePar[nvoice].Type); -    xml->addpar("delay",VoicePar[nvoice].PDelay); -    xml->addparbool("resonance",VoicePar[nvoice].Presonance); -     -    xml->addpar("ext_oscil",VoicePar[nvoice].Pextoscil); -    xml->addpar("ext_fm_oscil",VoicePar[nvoice].PextFMoscil); - -    xml->addpar("oscil_phase",VoicePar[nvoice].Poscilphase); -    xml->addpar("oscil_fm_phase",VoicePar[nvoice].PFMoscilphase); - -    xml->addparbool("filter_enabled",VoicePar[nvoice].PFilterEnabled); -    xml->addparbool("filter_bypass",VoicePar[nvoice].Pfilterbypass); - -    xml->addpar("fm_enabled",VoicePar[nvoice].PFMEnabled); - -    xml->beginbranch("OSCIL"); -	VoicePar[nvoice].OscilSmp->add2XML(xml); -    xml->endbranch(); - - -    xml->beginbranch("AMPLITUDE_PARAMETERS"); -	xml->addpar("panning",VoicePar[nvoice].PPanning); -    	xml->addpar("volume",VoicePar[nvoice].PVolume); -    	xml->addparbool("volume_minus",VoicePar[nvoice].PVolumeminus); -    	xml->addpar("velocity_sensing",VoicePar[nvoice].PAmpVelocityScaleFunction); - -	xml->addparbool("amp_envelope_enabled",VoicePar[nvoice].PAmpEnvelopeEnabled); -	if ((VoicePar[nvoice].PAmpEnvelopeEnabled!=0)||(!xml->minimal)){ -	    xml->beginbranch("AMPLITUDE_ENVELOPE"); -		VoicePar[nvoice].AmpEnvelope->add2XML(xml); -	    xml->endbranch(); -	}; -	xml->addparbool("amp_lfo_enabled",VoicePar[nvoice].PAmpLfoEnabled); -	if ((VoicePar[nvoice].PAmpLfoEnabled!=0)||(!xml->minimal)){ -	    xml->beginbranch("AMPLITUDE_LFO"); -		VoicePar[nvoice].AmpLfo->add2XML(xml); -	    xml->endbranch(); -	}; -    xml->endbranch(); - -    xml->beginbranch("FREQUENCY_PARAMETERS"); -	xml->addparbool("fixed_freq",VoicePar[nvoice].Pfixedfreq); -	xml->addpar("fixed_freq_et",VoicePar[nvoice].PfixedfreqET); -	xml->addpar("detune",VoicePar[nvoice].PDetune); -	xml->addpar("coarse_detune",VoicePar[nvoice].PCoarseDetune); -	xml->addpar("detune_type",VoicePar[nvoice].PDetuneType); - -	xml->addparbool("freq_envelope_enabled",VoicePar[nvoice].PFreqEnvelopeEnabled); -	if ((VoicePar[nvoice].PFreqEnvelopeEnabled!=0)||(!xml->minimal)){ -	    xml->beginbranch("FREQUENCY_ENVELOPE"); -		VoicePar[nvoice].FreqEnvelope->add2XML(xml); -	    xml->endbranch(); -	}; -	xml->addparbool("freq_lfo_enabled",VoicePar[nvoice].PFreqLfoEnabled); -	if ((VoicePar[nvoice].PFreqLfoEnabled!=0)||(!xml->minimal)){ -	    xml->beginbranch("FREQUENCY_LFO"); -		VoicePar[nvoice].FreqLfo->add2XML(xml); -	    xml->endbranch(); -	}; -    xml->endbranch(); - - -    if ((VoicePar[nvoice].PFilterEnabled!=0)||(!xml->minimal)){ -	xml->beginbranch("FILTER_PARAMETERS"); -	    xml->beginbranch("FILTER"); -		VoicePar[nvoice].VoiceFilter->add2XML(xml); -	    xml->endbranch(); - -	    xml->addparbool("filter_envelope_enabled",VoicePar[nvoice].PFilterEnvelopeEnabled); -	    if ((VoicePar[nvoice].PFilterEnvelopeEnabled!=0)||(!xml->minimal)){ -		xml->beginbranch("FILTER_ENVELOPE"); -		    VoicePar[nvoice].FilterEnvelope->add2XML(xml); -		xml->endbranch(); -	    }; - -	    xml->addparbool("filter_lfo_enabled",VoicePar[nvoice].PFilterLfoEnabled); -	    if ((VoicePar[nvoice].PFilterLfoEnabled!=0)||(!xml->minimal)){ -		xml->beginbranch("FILTER_LFO"); -		    VoicePar[nvoice].FilterLfo->add2XML(xml); -		xml->endbranch(); -	    }; -	xml->endbranch(); -    }; - -    if ((VoicePar[nvoice].PFMEnabled!=0)||(fmoscilused!=0)||(!xml->minimal)){ -	xml->beginbranch("FM_PARAMETERS"); -	    xml->addpar("input_voice",VoicePar[nvoice].PFMVoice); - -    	    xml->addpar("volume",VoicePar[nvoice].PFMVolume); -    	    xml->addpar("volume_damp",VoicePar[nvoice].PFMVolumeDamp); -    	    xml->addpar("velocity_sensing",VoicePar[nvoice].PFMVelocityScaleFunction); - -	    xml->addparbool("amp_envelope_enabled",VoicePar[nvoice].PFMAmpEnvelopeEnabled); -	    if ((VoicePar[nvoice].PFMAmpEnvelopeEnabled!=0)||(!xml->minimal)){ -		xml->beginbranch("AMPLITUDE_ENVELOPE"); -		    VoicePar[nvoice].FMAmpEnvelope->add2XML(xml); -		xml->endbranch(); -	    }; -	    xml->beginbranch("MODULATOR"); -    		xml->addpar("detune",VoicePar[nvoice].PFMDetune); -    		xml->addpar("coarse_detune",VoicePar[nvoice].PFMCoarseDetune); -    		xml->addpar("detune_type",VoicePar[nvoice].PFMDetuneType); - -		xml->addparbool("freq_envelope_enabled",VoicePar[nvoice].PFMFreqEnvelopeEnabled); -		if ((VoicePar[nvoice].PFMFreqEnvelopeEnabled!=0)||(!xml->minimal)){ -		    xml->beginbranch("FREQUENCY_ENVELOPE"); -			VoicePar[nvoice].FMFreqEnvelope->add2XML(xml); -		    xml->endbranch(); -		}; - -		xml->beginbranch("OSCIL"); -		    VoicePar[nvoice].FMSmp->add2XML(xml); -		xml->endbranch(); - -	    xml->endbranch(); -	xml->endbranch(); -    }; -}; - - -void ADnoteParameters::add2XML(XMLwrapper *xml){ -    xml->addparbool("stereo",GlobalPar.PStereo); - -    xml->beginbranch("AMPLITUDE_PARAMETERS"); -	xml->addpar("volume",GlobalPar.PVolume); -	xml->addpar("panning",GlobalPar.PPanning); -	xml->addpar("velocity_sensing",GlobalPar.PAmpVelocityScaleFunction); -	xml->addpar("punch_strength",GlobalPar.PPunchStrength); -	xml->addpar("punch_time",GlobalPar.PPunchTime); -	xml->addpar("punch_stretch",GlobalPar.PPunchStretch); -	xml->addpar("punch_velocity_sensing",GlobalPar.PPunchVelocitySensing); -	xml->addpar("harmonic_randomness_grouping",GlobalPar.Hrandgrouping); -	 -	xml->beginbranch("AMPLITUDE_ENVELOPE"); -	    GlobalPar.AmpEnvelope->add2XML(xml); -	xml->endbranch(); -	 -	xml->beginbranch("AMPLITUDE_LFO"); -	    GlobalPar.AmpLfo->add2XML(xml); -	xml->endbranch(); -    xml->endbranch(); - -    xml->beginbranch("FREQUENCY_PARAMETERS"); -	xml->addpar("detune",GlobalPar.PDetune); -	 -	xml->addpar("coarse_detune",GlobalPar.PCoarseDetune); -        xml->addpar("detune_type",GlobalPar.PDetuneType); - -        xml->addpar("bandwidth",GlobalPar.PBandwidth); -	 -	xml->beginbranch("FREQUENCY_ENVELOPE"); -	    GlobalPar.FreqEnvelope->add2XML(xml); -	xml->endbranch(); -	 -	xml->beginbranch("FREQUENCY_LFO"); -	    GlobalPar.FreqLfo->add2XML(xml); -	xml->endbranch(); -    xml->endbranch(); -     -     -    xml->beginbranch("FILTER_PARAMETERS"); -	xml->addpar("velocity_sensing_amplitude",GlobalPar.PFilterVelocityScale); -	xml->addpar("velocity_sensing",GlobalPar.PFilterVelocityScaleFunction); -	 -	xml->beginbranch("FILTER"); -	    GlobalPar.GlobalFilter->add2XML(xml); -	xml->endbranch(); -	 -	xml->beginbranch("FILTER_ENVELOPE"); -	    GlobalPar.FilterEnvelope->add2XML(xml); -	xml->endbranch(); -	 -	xml->beginbranch("FILTER_LFO"); -	    GlobalPar.FilterLfo->add2XML(xml); -	xml->endbranch(); -    xml->endbranch(); -     -    xml->beginbranch("RESONANCE"); -        GlobalPar.Reson->add2XML(xml); -    xml->endbranch(); - -    for (int nvoice=0;nvoice<NUM_VOICES;nvoice++){ -	xml->beginbranch("VOICE",nvoice); -	    add2XMLsection(xml,nvoice); -	xml->endbranch(); -    }; -}; - - -void ADnoteParameters::getfromXML(XMLwrapper *xml){ -    GlobalPar.PStereo=xml->getparbool("stereo",GlobalPar.PStereo); -     -    if (xml->enterbranch("AMPLITUDE_PARAMETERS")){ -	GlobalPar.PVolume=xml->getpar127("volume",GlobalPar.PVolume); -	GlobalPar.PPanning=xml->getpar127("panning",GlobalPar.PPanning); -	GlobalPar.PAmpVelocityScaleFunction=xml->getpar127("velocity_sensing",GlobalPar.PAmpVelocityScaleFunction); - -	GlobalPar.PPunchStrength=xml->getpar127("punch_strength",GlobalPar.PPunchStrength); -	GlobalPar.PPunchTime=xml->getpar127("punch_time",GlobalPar.PPunchTime); -	GlobalPar.PPunchStretch=xml->getpar127("punch_stretch",GlobalPar.PPunchStretch); -	GlobalPar.PPunchVelocitySensing=xml->getpar127("punch_velocity_sensing",GlobalPar.PPunchVelocitySensing); -	GlobalPar.Hrandgrouping=xml->getpar127("harmonic_randomness_grouping",GlobalPar.Hrandgrouping); -	 -	if (xml->enterbranch("AMPLITUDE_ENVELOPE")){ -	    GlobalPar.AmpEnvelope->getfromXML(xml); -	    xml->exitbranch(); -	}; -	 -	if (xml->enterbranch("AMPLITUDE_LFO")){ -	    GlobalPar.AmpLfo->getfromXML(xml); -	    xml->exitbranch(); -	}; -	 -      xml->exitbranch(); -    }; - -    if (xml->enterbranch("FREQUENCY_PARAMETERS")){ -	GlobalPar.PDetune=xml->getpar("detune",GlobalPar.PDetune,0,16383); -	GlobalPar.PCoarseDetune=xml->getpar("coarse_detune",GlobalPar.PCoarseDetune,0,16383); -        GlobalPar.PDetuneType=xml->getpar127("detune_type",GlobalPar.PDetuneType); - -        GlobalPar.PBandwidth=xml->getpar127("bandwidth",GlobalPar.PBandwidth); -	 -	xml->enterbranch("FREQUENCY_ENVELOPE"); -	    GlobalPar.FreqEnvelope->getfromXML(xml); -	xml->exitbranch(); -	 -	xml->enterbranch("FREQUENCY_LFO"); -	    GlobalPar.FreqLfo->getfromXML(xml); -	xml->exitbranch(); - -      xml->exitbranch(); -    }; -     -     -    if (xml->enterbranch("FILTER_PARAMETERS")){ -	GlobalPar.PFilterVelocityScale=xml->getpar127("velocity_sensing_amplitude",GlobalPar.PFilterVelocityScale); -	GlobalPar.PFilterVelocityScaleFunction=xml->getpar127("velocity_sensing",GlobalPar.PFilterVelocityScaleFunction); -	 -	xml->enterbranch("FILTER"); -	    GlobalPar.GlobalFilter->getfromXML(xml); -	xml->exitbranch(); -	 -	xml->enterbranch("FILTER_ENVELOPE"); -	    GlobalPar.FilterEnvelope->getfromXML(xml); -	xml->exitbranch(); -	 -	xml->enterbranch("FILTER_LFO"); -	    GlobalPar.FilterLfo->getfromXML(xml); -	xml->exitbranch(); -     xml->exitbranch(); -    }; - -    if (xml->enterbranch("RESONANCE")){ -	GlobalPar.Reson->getfromXML(xml); -     xml->exitbranch(); -    }; - -    for (int nvoice=0;nvoice<NUM_VOICES;nvoice++){ -	VoicePar[nvoice].Enabled=0; -	if (xml->enterbranch("VOICE",nvoice)==0) continue; -	    getfromXMLsection(xml,nvoice); -	xml->exitbranch(); -    }; -     -     -}; - -void ADnoteParameters::getfromXMLsection(XMLwrapper *xml,int n){ -    int nvoice=n; -    if (nvoice>=NUM_VOICES) return; - -    VoicePar[nvoice].Enabled=xml->getparbool("enabled",0); - -    VoicePar[nvoice].Type=xml->getpar127("type",VoicePar[nvoice].Type); -    VoicePar[nvoice].PDelay=xml->getpar127("delay",VoicePar[nvoice].PDelay); -    VoicePar[nvoice].Presonance=xml->getparbool("resonance",VoicePar[nvoice].Presonance); -     -    VoicePar[nvoice].Pextoscil=xml->getpar("ext_oscil",-1,-1,nvoice-1); -    VoicePar[nvoice].PextFMoscil=xml->getpar("ext_fm_oscil",-1,-1,nvoice-1); - -    VoicePar[nvoice].Poscilphase=xml->getpar127("oscil_phase",VoicePar[nvoice].Poscilphase); -    VoicePar[nvoice].PFMoscilphase=xml->getpar127("oscil_fm_phase",VoicePar[nvoice].PFMoscilphase); - -    VoicePar[nvoice].PFilterEnabled=xml->getparbool("filter_enabled",VoicePar[nvoice].PFilterEnabled); -    VoicePar[nvoice].Pfilterbypass=xml->getparbool("filter_bypass",VoicePar[nvoice].Pfilterbypass); - -    VoicePar[nvoice].PFMEnabled=xml->getpar127("fm_enabled",VoicePar[nvoice].PFMEnabled); - -    if (xml->enterbranch("OSCIL")){ -	VoicePar[nvoice].OscilSmp->getfromXML(xml); -     xml->exitbranch(); -    }; - - -    if (xml->enterbranch("AMPLITUDE_PARAMETERS")){ -	VoicePar[nvoice].PPanning=xml->getpar127("panning",VoicePar[nvoice].PPanning); -	VoicePar[nvoice].PVolume=xml->getpar127("volume",VoicePar[nvoice].PVolume); -    	VoicePar[nvoice].PVolumeminus=xml->getparbool("volume_minus",VoicePar[nvoice].PVolumeminus); -    	VoicePar[nvoice].PAmpVelocityScaleFunction=xml->getpar127("velocity_sensing",VoicePar[nvoice].PAmpVelocityScaleFunction); - -	VoicePar[nvoice].PAmpEnvelopeEnabled=xml->getparbool("amp_envelope_enabled",VoicePar[nvoice].PAmpEnvelopeEnabled); -	if (xml->enterbranch("AMPLITUDE_ENVELOPE")){ -		VoicePar[nvoice].AmpEnvelope->getfromXML(xml); -	    xml->exitbranch(); -	}; - -	VoicePar[nvoice].PAmpLfoEnabled=xml->getparbool("amp_lfo_enabled",VoicePar[nvoice].PAmpLfoEnabled); -	if (xml->enterbranch("AMPLITUDE_LFO")){ -		VoicePar[nvoice].AmpLfo->getfromXML(xml); -	    xml->exitbranch(); -	}; -     xml->exitbranch(); -    }; - -    if (xml->enterbranch("FREQUENCY_PARAMETERS")){ -	VoicePar[nvoice].Pfixedfreq=xml->getparbool("fixed_freq",VoicePar[nvoice].Pfixedfreq); -	VoicePar[nvoice].PfixedfreqET=xml->getpar127("fixed_freq_et",VoicePar[nvoice].PfixedfreqET); -	 -	 -	VoicePar[nvoice].PDetune=xml->getpar("detune",VoicePar[nvoice].PDetune,0,16383); -	 -	VoicePar[nvoice].PCoarseDetune=xml->getpar("coarse_detune",VoicePar[nvoice].PCoarseDetune,0,16383); -	VoicePar[nvoice].PDetuneType=xml->getpar127("detune_type",VoicePar[nvoice].PDetuneType); - -	VoicePar[nvoice].PFreqEnvelopeEnabled=xml->getparbool("freq_envelope_enabled",VoicePar[nvoice].PFreqEnvelopeEnabled); -	if (xml->enterbranch("FREQUENCY_ENVELOPE")){ -		VoicePar[nvoice].FreqEnvelope->getfromXML(xml); -	    xml->exitbranch(); -	}; - -	VoicePar[nvoice].PFreqLfoEnabled=xml->getparbool("freq_lfo_enabled",VoicePar[nvoice].PFreqLfoEnabled); -	if (xml->enterbranch("FREQUENCY_LFO")){ -		VoicePar[nvoice].FreqLfo->getfromXML(xml); -	    xml->exitbranch(); -	}; -     xml->exitbranch(); -    }; - -    if (xml->enterbranch("FILTER_PARAMETERS")){ -	    if (xml->enterbranch("FILTER")){ -		VoicePar[nvoice].VoiceFilter->getfromXML(xml); -	        xml->exitbranch(); -	    }; - -	    VoicePar[nvoice].PFilterEnvelopeEnabled=xml->getparbool("filter_envelope_enabled",VoicePar[nvoice].PFilterEnvelopeEnabled); -	    if (xml->enterbranch("FILTER_ENVELOPE")){ -		VoicePar[nvoice].FilterEnvelope->getfromXML(xml); -		xml->exitbranch(); -	    }; - -	    VoicePar[nvoice].PFilterLfoEnabled=xml->getparbool("filter_lfo_enabled",VoicePar[nvoice].PFilterLfoEnabled); -	    if (xml->enterbranch("FILTER_LFO")){ -		VoicePar[nvoice].FilterLfo->getfromXML(xml); -		xml->exitbranch(); -	    }; -	xml->exitbranch(); -    }; - -    if (xml->enterbranch("FM_PARAMETERS")){ -	    VoicePar[nvoice].PFMVoice=xml->getpar("input_voice",VoicePar[nvoice].PFMVoice,-1,nvoice-1); - -    	    VoicePar[nvoice].PFMVolume=xml->getpar127("volume",VoicePar[nvoice].PFMVolume); -    	    VoicePar[nvoice].PFMVolumeDamp=xml->getpar127("volume_damp",VoicePar[nvoice].PFMVolumeDamp); -    	    VoicePar[nvoice].PFMVelocityScaleFunction=xml->getpar127("velocity_sensing",VoicePar[nvoice].PFMVelocityScaleFunction); - -	    VoicePar[nvoice].PFMAmpEnvelopeEnabled=xml->getparbool("amp_envelope_enabled",VoicePar[nvoice].PFMAmpEnvelopeEnabled); -	    if (xml->enterbranch("AMPLITUDE_ENVELOPE")){ -		VoicePar[nvoice].FMAmpEnvelope->getfromXML(xml); -		xml->exitbranch(); -	    }; -	     -	    if (xml->enterbranch("MODULATOR")){ -    		VoicePar[nvoice].PFMDetune=xml->getpar("detune",VoicePar[nvoice].PFMDetune,0,16383); -    		VoicePar[nvoice].PFMCoarseDetune=xml->getpar("coarse_detune",VoicePar[nvoice].PFMCoarseDetune,0,16383); -    		VoicePar[nvoice].PFMDetuneType=xml->getpar127("detune_type",VoicePar[nvoice].PFMDetuneType); - -		VoicePar[nvoice].PFMFreqEnvelopeEnabled=xml->getparbool("freq_envelope_enabled",VoicePar[nvoice].PFMFreqEnvelopeEnabled); -		if (xml->enterbranch("FREQUENCY_ENVELOPE")){ -		    VoicePar[nvoice].FMFreqEnvelope->getfromXML(xml); -		    xml->exitbranch(); -		}; - -		if (xml->enterbranch("OSCIL")){ -		    VoicePar[nvoice].FMSmp->getfromXML(xml); -		    xml->exitbranch(); -		}; -	 -	       xml->exitbranch(); -	    }; -	xml->exitbranch(); -    }; -}; - - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.h deleted file mode 100644 index 1773f2cd..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/ADnoteParameters.h +++ /dev/null @@ -1,282 +0,0 @@ -/* -  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 diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.C b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.C deleted file mode 100644 index 30f59161..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.C +++ /dev/null @@ -1,300 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  Controller.C - (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 - -*/ - -#include "Controller.h" -#include <math.h> -#include <stdio.h> - -Controller::Controller(){ -    defaults(); -    resetall(); -}; - -Controller::~Controller(){ -}; - -void Controller::defaults(){ -    setpitchwheelbendrange(200);//2 halftones -    expression.receive=1; -    panning.depth=64; -    filtercutoff.depth=64; -    filterq.depth=64; -    bandwidth.depth=64; -    bandwidth.exponential=0; -    modwheel.depth=80; -    modwheel.exponential=0; -    fmamp.receive=1; -    volume.receive=0; -    sustain.receive=1; -    NRPN.receive=1; - -    portamento.portamento=0; -    portamento.used=0; -    portamento.receive=1; -    portamento.time=64; -    portamento.updowntimestretch=64; -    portamento.pitchthresh=3; -    portamento.pitchthreshtype=1; -    portamento.noteusing=-1; -    resonancecenter.depth=64; -    resonancebandwidth.depth=64; - -    initportamento(440.0,440.0); -    setportamento(0); - -}; - -void Controller::resetall(){ -    setpitchwheel(0);//center -    setexpression(127); -    setpanning(64); -    setfiltercutoff(64); -    setfilterq(64); -    setbandwidth(64); -    setmodwheel(64); -    setfmamp(127); -    setvolume(127); -    setsustain(0); -    setresonancecenter(64); -    setresonancebw(64); -     -    //reset the NRPN -    NRPN.parhi=-1; -    NRPN.parlo=-1; -    NRPN.valhi=-1; -    NRPN.vallo=-1; -}; - -void Controller::setpitchwheel(int value){ -    pitchwheel.data=value; -    REALTYPE cents=value/8192.0; -    cents*=pitchwheel.bendrange; -    pitchwheel.relfreq=pow(2,cents/1200.0); -    //fprintf(stderr,"%ld %ld -> %.3f\n",pitchwheel.bendrange,pitchwheel.data,pitchwheel.relfreq);fflush(stderr); -}; - -void Controller::setpitchwheelbendrange(unsigned short int value){ -    pitchwheel.bendrange=value; -}; - -void Controller::setexpression(int value){ -    expression.data=value; -    if (expression.receive!=0) expression.relvolume=value/127.0; -	else expression.relvolume=1.0; -}; - -void Controller::setpanning(int value){ -    panning.data=value; -    panning.pan=(value/128.0-0.5)*(panning.depth/64.0); -}; - -void Controller::setfiltercutoff(int value){ -    filtercutoff.data=value; -    filtercutoff.relfreq=(value-64.0)*filtercutoff.depth/4096.0*3.321928;//3.3219..=ln2(10) -}; - -void Controller::setfilterq(int value){ -    filterq.data=value; -    filterq.relq=pow(30.0,(value-64.0)/64.0*(filterq.depth/64.0)); -}; - -void Controller::setbandwidth(int value){ -    bandwidth.data=value; -    if (bandwidth.exponential==0) { -	    REALTYPE tmp=pow(25.0,pow(bandwidth.depth/127.0,1.5))-1.0; -	    if ((value<64)&&(bandwidth.depth>=64)) tmp=1.0; -	    bandwidth.relbw=(value/64.0-1.0)*tmp+1.0; -	    if (bandwidth.relbw<0.01) bandwidth.relbw=0.01; -    } else { -	bandwidth.relbw=pow(25.0,(value-64.0)/64.0*(bandwidth.depth/64.0)); -    }; -}; - -void Controller::setmodwheel(int value){ -    modwheel.data=value; -    if (modwheel.exponential==0) { -	    REALTYPE tmp=pow(25.0,pow(modwheel.depth/127.0,1.5)*2.0)/25.0; -	    if ((value<64)&&(modwheel.depth>=64)) tmp=1.0; -	    modwheel.relmod=(value/64.0-1.0)*tmp+1.0; -	    if (modwheel.relmod<0.0) modwheel.relmod=0.0; -	} else modwheel.relmod=pow(25.0,(value-64.0)/64.0*(modwheel.depth/80.0)); -}; - -void Controller::setfmamp(int value){ -    fmamp.data=value; -    fmamp.relamp=value/127.0; -    if (fmamp.receive!=0) fmamp.relamp=value/127.0; -	else fmamp.relamp=1.0; -}; - -void Controller::setvolume(int value){ -    volume.data=value; -    if (volume.receive!=0) volume.volume=pow(0.1,(127-value)/127.0*2.0); -	else volume.volume=1.0; -}; - -void Controller::setsustain(int value){ -    sustain.data=value; -    if (sustain.receive!=0) sustain.sustain=((value<64) ? 0 : 1 ); -	else sustain.sustain=0; -}; - -void Controller::setportamento(int value){ -    portamento.data=value; -    if (portamento.receive!=0) portamento.portamento=((value<64) ? 0 : 1 ); -}; - -int Controller::initportamento(REALTYPE oldfreq,REALTYPE newfreq){ -    portamento.x=0.0; -    if ((portamento.used!=0) || (portamento.portamento==0)) return(0); -    REALTYPE portamentotime=pow(100.0,portamento.time/127.0)/50.0;//portamento time in seconds - -    if ((portamento.updowntimestretch>=64)&&(newfreq<oldfreq)){ -	if (portamento.updowntimestretch==127) return(0); -	portamentotime*=pow(0.1,(portamento.updowntimestretch-64)/63.0); -    }  -    if ((portamento.updowntimestretch<64)&&(newfreq>oldfreq)){ -	if (portamento.updowntimestretch==0) return(0); -	portamentotime*=pow(0.1,(64.0-portamento.updowntimestretch)/64.0); -    }; -     -    portamento.dx=SOUND_BUFFER_SIZE/(portamentotime*SAMPLE_RATE); -    portamento.origfreqrap=oldfreq/newfreq; -     -    REALTYPE tmprap=( (portamento.origfreqrap>1.0) ?  -                      (portamento.origfreqrap) :  -		      (1.0/portamento.origfreqrap) ); -     -    REALTYPE thresholdrap=pow(2.0,portamento.pitchthresh/12.0); -    if ((portamento.pitchthreshtype==0) && (tmprap-0.00001>thresholdrap) ) return(0); -    if ((portamento.pitchthreshtype==1) && (tmprap+0.00001<thresholdrap) ) return(0); - -    portamento.used=1; -    portamento.freqrap=portamento.origfreqrap; -    return (1); -}; - -void Controller::updateportamento(){ -    if (portamento.used==0) return; -     -    portamento.x+=portamento.dx; -    if (portamento.x>1.0) { -	portamento.x=1.0; -	portamento.used=0; -    }; -    portamento.freqrap=(1.0-portamento.x)*portamento.origfreqrap+portamento.x; -}; - - -void Controller::setresonancecenter(int value){ -    resonancecenter.data=value; -    resonancecenter.relcenter=pow(3.0,(value-64.0)/64.0*(resonancecenter.depth/64.0)); -}; -void Controller::setresonancebw(int value){ -    resonancebandwidth.data=value; -    resonancebandwidth.relbw=pow(1.5,(value-64.0)/64.0*(resonancebandwidth.depth/127.0)); -}; - - -//Returns 0 if there is NRPN or 1 if there is not -int Controller::getnrpn(int *parhi, int *parlo, int *valhi, int *vallo){ -    if (NRPN.receive==0) return(1); -    if ((NRPN.parhi<0)||(NRPN.parlo<0)||(NRPN.valhi<0)||(NRPN.vallo<0))  -	return(1); -	 -    *parhi=NRPN.parhi; -    *parlo=NRPN.parlo; -    *valhi=NRPN.valhi; -    *vallo=NRPN.vallo; -    return(0); -}; - - -void Controller::setparameternumber(unsigned int type,int value){ -    switch(type){ -	case C_nrpnhi:NRPN.parhi=value; -		      NRPN.valhi=-1;NRPN.vallo=-1;//clear the values -		      break; -	case C_nrpnlo:NRPN.parlo=value; -		      NRPN.valhi=-1;NRPN.vallo=-1;//clear the values -		      break; -	case C_dataentryhi:if ((NRPN.parhi>=0)&&(NRPN.parlo>=0)) NRPN.valhi=value; -			   break; -	case C_dataentrylo:if ((NRPN.parhi>=0)&&(NRPN.parlo>=0)) NRPN.vallo=value; -			   break; -    }; -}; - - - -void Controller::add2XML(XMLwrapper *xml){ -    xml->addpar("pitchwheel_bendrange",pitchwheel.bendrange); - -    xml->addparbool("expression_receive",expression.receive); -    xml->addpar("panning_depth",panning.depth); -    xml->addpar("filter_cutoff_depth",filtercutoff.depth); -    xml->addpar("filter_q_depth",filterq.depth); -    xml->addpar("bandwidth_depth",bandwidth.depth); -    xml->addpar("mod_wheel_depth",modwheel.depth); -    xml->addparbool("mod_wheel_exponential",modwheel.exponential); -    xml->addparbool("fm_amp_receive",fmamp.receive); -    xml->addparbool("volume_receive",volume.receive); -    xml->addparbool("sustain_receive",sustain.receive); - -    xml->addparbool("portamento_receive",portamento.receive); -    xml->addpar("portamento_time",portamento.time); -    xml->addpar("portamento_pitchthresh",portamento.pitchthresh); -    xml->addpar("portamento_pitchthreshtype",portamento.pitchthreshtype); -    xml->addpar("portamento_portamento",portamento.portamento); -    xml->addpar("portamento_updowntimestretch",portamento.updowntimestretch); - -    xml->addpar("resonance_center_depth",resonancecenter.depth); -    xml->addpar("resonance_bandwidth_depth",resonancebandwidth.depth); -}; - -void Controller::getfromXML(XMLwrapper *xml){ -    pitchwheel.bendrange=xml->getpar("pitchwheel_bendrange",pitchwheel.bendrange,-6400,6400); - -    expression.receive=xml->getparbool("expression_receive",expression.receive); -    panning.depth=xml->getpar127("panning_depth",panning.depth); -    filtercutoff.depth=xml->getpar127("filter_cutoff_depth",filtercutoff.depth); -    filterq.depth=xml->getpar127("filter_q_depth",filterq.depth); -    bandwidth.depth=xml->getpar127("bandwidth_depth",bandwidth.depth); -    modwheel.depth=xml->getpar127("mod_wheel_depth",modwheel.depth); -    modwheel.exponential=xml->getparbool("mod_wheel_exponential",modwheel.exponential); -    fmamp.receive=xml->getparbool("fm_amp_receive",fmamp.receive); -    volume.receive=xml->getparbool("volume_receive",volume.receive); -    sustain.receive=xml->getparbool("sustain_receive",sustain.receive); - -    portamento.receive=xml->getparbool("portamento_receive",portamento.receive); -    portamento.time=xml->getpar127("portamento_time",portamento.time); -    portamento.pitchthresh=xml->getpar127("portamento_pitchthresh",portamento.pitchthresh); -    portamento.pitchthreshtype=xml->getpar127("portamento_pitchthreshtype",portamento.pitchthreshtype); -    portamento.portamento=xml->getpar127("portamento_portamento",portamento.portamento); -    portamento.updowntimestretch=xml->getpar127("portamento_updowntimestretch",portamento.updowntimestretch); - -    resonancecenter.depth=xml->getpar127("resonance_center_depth",resonancecenter.depth); -    resonancebandwidth.depth=xml->getpar127("resonance_bandwidth_depth",resonancebandwidth.depth); -}; - - - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.h deleted file mode 100644 index 12257b59..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/Controller.h +++ /dev/null @@ -1,179 +0,0 @@ -/* -  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 - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/EnvelopeParams.C b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/EnvelopeParams.C deleted file mode 100644 index 074d6aee..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/EnvelopeParams.C +++ /dev/null @@ -1,227 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  EnvelopeParams.C - Parameters for Envelope -  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 <stdio.h> - -#include <math.h> -#include <stdlib.h> -#include "EnvelopeParams.h" - -EnvelopeParams::EnvelopeParams(unsigned char Penvstretch_,unsigned char Pforcedrelease_):Presets(){ -    int i; -     -    PA_dt=10;PD_dt=10;PR_dt=10;PA_val=64;PD_val=64;PS_val=64;PR_val=64; -     -    for (i=0;i<MAX_ENVELOPE_POINTS;i++){ -	Penvdt[i]=32; -	Penvval[i]=64; -    }; -    Penvdt[0]=0;//no used -    Penvsustain=1; -    Penvpoints=1; -    Envmode=1; -    Penvstretch=Penvstretch_; -    Pforcedrelease=Pforcedrelease_;         -    Pfreemode=1; -    Plinearenvelope=0; -     -    store2defaults(); -}; - -EnvelopeParams::~EnvelopeParams(){ -}; - -REALTYPE EnvelopeParams::getdt(char i){ -    REALTYPE result=(pow(2.0,Penvdt[i]/127.0*12.0)-1.0)*10.0;//miliseconds -    return(result); -}; - - -/* - * ADSR/ASR... initialisations - */ -void EnvelopeParams::ADSRinit(char A_dt,char D_dt,char S_val,char R_dt){ -    setpresettype("Penvamplitude"); -    Envmode=1; -    PA_dt=A_dt;PD_dt=D_dt;PS_val=S_val;PR_dt=R_dt; -    Pfreemode=0; -    converttofree(); - -    store2defaults(); -}; - -void EnvelopeParams::ADSRinit_dB(char A_dt,char D_dt,char S_val,char R_dt){ -    setpresettype("Penvamplitude"); -    Envmode=2; -    PA_dt=A_dt;PD_dt=D_dt;PS_val=S_val;PR_dt=R_dt; -    Pfreemode=0; -    converttofree(); - -    store2defaults(); -}; - -void EnvelopeParams::ASRinit(char A_val,char A_dt,char R_val,char R_dt){ -    setpresettype("Penvfrequency"); -    Envmode=3; -    PA_val=A_val;PA_dt=A_dt;PR_val=R_val;PR_dt=R_dt; -    Pfreemode=0; -    converttofree(); - -    store2defaults(); -}; - -void EnvelopeParams::ADSRinit_filter(char A_val,char A_dt,char D_val,char D_dt,char R_dt,char R_val){ -    setpresettype("Penvfilter"); -    Envmode=4; -    PA_val=A_val;PA_dt=A_dt;PD_val=D_val;PD_dt=D_dt;PR_dt=R_dt;PR_val=R_val; -    Pfreemode=0; -    converttofree(); -    store2defaults(); -}; - -void EnvelopeParams::ASRinit_bw(char A_val,char A_dt,char R_val,char R_dt){ -    setpresettype("Penvbandwidth"); -    Envmode=5; -    PA_val=A_val;PA_dt=A_dt;PR_val=R_val;PR_dt=R_dt; -    Pfreemode=0; -    converttofree(); -    store2defaults(); -}; - -/* - * Convert the Envelope to freemode - */ -void EnvelopeParams::converttofree(){ -    switch (Envmode){ -	case 1:	Penvpoints=4;Penvsustain=2; -		Penvval[0]=0;Penvdt[1]=PA_dt;Penvval[1]=127; -		Penvdt[2]=PD_dt;Penvval[2]=PS_val; -		Penvdt[3]=PR_dt;Penvval[3]=0;     -		break; -	case 2: Penvpoints=4;Penvsustain=2; -		Penvval[0]=0;Penvdt[1]=PA_dt; -		Penvval[1]=127;Penvdt[2]=PD_dt; -		Penvval[2]=PS_val;Penvdt[3]=PR_dt;Penvval[3]=0;     -		break;	 -	case 3:	Penvpoints=3;Penvsustain=1; -    		Penvval[0]=PA_val;Penvdt[1]=PA_dt; -		Penvval[1]=64;Penvdt[2]=PR_dt;Penvval[2]=PR_val; -		break; -	case 4:	Penvpoints=4;Penvsustain=2; -		Penvval[0]=PA_val;Penvdt[1]=PA_dt; -		Penvval[1]=PD_val;Penvdt[2]=PD_dt;Penvval[2]=64; -		Penvdt[3]=PR_dt;Penvval[3]=PR_val; -		break; -	case 5:	Penvpoints=3;Penvsustain=1; -    		Penvval[0]=PA_val;Penvdt[1]=PA_dt; -		Penvval[1]=64;Penvdt[2]=PR_dt;Penvval[2]=PR_val; -		break; -    }; -}; - - - - -void EnvelopeParams::add2XML(XMLwrapper *xml){ -    xml->addparbool("free_mode",Pfreemode);     -    xml->addpar("env_points",Penvpoints); -    xml->addpar("env_sustain",Penvsustain); -    xml->addpar("env_stretch",Penvstretch); -    xml->addparbool("forced_release",Pforcedrelease); -    xml->addparbool("linear_envelope",Plinearenvelope); -    xml->addpar("A_dt",PA_dt); -    xml->addpar("D_dt",PD_dt); -    xml->addpar("R_dt",PR_dt); -    xml->addpar("A_val",PA_val); -    xml->addpar("D_val",PD_val); -    xml->addpar("S_val",PS_val); -    xml->addpar("R_val",PR_val); - -    if ((Pfreemode!=0)||(!xml->minimal)){ -	for (int i=0;i<Penvpoints;i++){ -	    xml->beginbranch("POINT",i); -		if (i!=0) xml->addpar("dt",Penvdt[i]); -		xml->addpar("val",Penvval[i]); -	    xml->endbranch(); -	}; -    }; -}; - - - -void EnvelopeParams::getfromXML(XMLwrapper *xml){ -    Pfreemode=xml->getparbool("free_mode",Pfreemode);     -    Penvpoints=xml->getpar127("env_points",Penvpoints); -    Penvsustain=xml->getpar127("env_sustain",Penvsustain); -    Penvstretch=xml->getpar127("env_stretch",Penvstretch); -    Pforcedrelease=xml->getparbool("forced_release",Pforcedrelease); -    Plinearenvelope=xml->getparbool("linear_envelope",Plinearenvelope); - -    PA_dt=xml->getpar127("A_dt",PA_dt); -    PD_dt=xml->getpar127("D_dt",PD_dt); -    PR_dt=xml->getpar127("R_dt",PR_dt); -    PA_val=xml->getpar127("A_val",PA_val); -    PD_val=xml->getpar127("D_val",PD_val); -    PS_val=xml->getpar127("S_val",PS_val); -    PR_val=xml->getpar127("R_val",PR_val); - -    for (int i=0;i<Penvpoints;i++){ -        if (xml->enterbranch("POINT",i)==0) continue; -	    if (i!=0) Penvdt[i]=xml->getpar127("dt",Penvdt[i]); -	    Penvval[i]=xml->getpar127("val",Penvval[i]); -	xml->exitbranch(); -    }; -     -    if (!Pfreemode) converttofree(); -}; - - -void EnvelopeParams::defaults(){ -    Penvstretch=Denvstretch; -    Pforcedrelease=Dforcedrelease; -    Plinearenvelope=Dlinearenvelope; -    PA_dt=DA_dt; -    PD_dt=DD_dt; -    PR_dt=DR_dt; -    PA_val=DA_val; -    PD_val=DD_val; -    PS_val=DS_val; -    PR_val=DR_val; -    Pfreemode=0; -    converttofree(); -}; - -void EnvelopeParams::store2defaults(){ -    Denvstretch=Penvstretch; -    Dforcedrelease=Pforcedrelease; -    Dlinearenvelope=Plinearenvelope; -    DA_dt=PA_dt; -    DD_dt=PD_dt; -    DR_dt=PR_dt; -    DA_val=PA_val; -    DD_val=PD_val; -    DS_val=PS_val; -    DR_val=PR_val; -}; - - - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/EnvelopeParams.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/EnvelopeParams.h deleted file mode 100644 index 793291c6..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/EnvelopeParams.h +++ /dev/null @@ -1,86 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  EnvelopeParams.h - Parameters for Envelope -  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 ENVELOPE_PARAMS_H -#define ENVELOPE_PARAMS_H - -#include "../globals.h" -#include "../Misc/XMLwrapper.h" -#include "Presets.h" - -#define MAX_ENVELOPE_POINTS 40 -#define MIN_ENVELOPE_DB -40 - -class EnvelopeParams:public Presets{ -    public: -	EnvelopeParams(unsigned char Penvstretch_,unsigned char Pforcedrelease_); -	~EnvelopeParams(); -	void ADSRinit(char A_dt,char D_dt,char S_val,char R_dt); -	void ADSRinit_dB(char A_dt,char D_dt,char S_val,char R_dt); -	void ASRinit(char A_val,char A_dt,char R_val,char R_dt); -	void ADSRinit_filter(char A_val,char A_dt,char D_val,char D_dt,char R_dt,char R_val); -	void ASRinit_bw(char A_val,char A_dt,char R_val,char R_dt); -	void converttofree(); - -	void add2XML(XMLwrapper *xml); -	void defaults(); -	void getfromXML(XMLwrapper *xml); - -	REALTYPE getdt(char i); - -       /* Parametrii MIDI */ -        unsigned char Pfreemode;//1 daca este in modul free sau 0 daca este in mod ADSR,ASR,... -	unsigned char Penvpoints; -	unsigned char Penvsustain;//127 pentru dezactivat -    	unsigned char Penvdt[MAX_ENVELOPE_POINTS]; -	unsigned char Penvval[MAX_ENVELOPE_POINTS]; -	unsigned char Penvstretch;//64=normal stretch (piano-like), 0=no stretch -	unsigned char Pforcedrelease;//0 - OFF, 1 - ON -	unsigned char Plinearenvelope;//if the amplitude envelope is linear -	 -	unsigned char PA_dt,PD_dt,PR_dt, -	     PA_val,PD_val,PS_val,PR_val; - - - -	int Envmode;// 1 for ADSR parameters (linear amplitude) -		    // 2 for ADSR_dB parameters (dB amplitude) -		    // 3 for ASR parameters (frequency LFO) -		    // 4 for ADSR_filter parameters (filter parameters) -		    // 5 for ASR_bw parameters (bandwidth parameters) - -    private: -	void store2defaults(); - -	/* Default parameters */ -	unsigned char Denvstretch; -	unsigned char Dforcedrelease; -	unsigned char Dlinearenvelope; -	unsigned char DA_dt,DD_dt,DR_dt, -	     DA_val,DD_val,DS_val,DR_val; - - -}; - - -#endif - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/FilterParams.C b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/FilterParams.C deleted file mode 100644 index 073f6711..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/FilterParams.C +++ /dev/null @@ -1,344 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  FilterParams.C - Parameters for filter -  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 <stdio.h> -#include <stdlib.h> -#include "FilterParams.h" - -FilterParams::FilterParams(unsigned char Ptype_,unsigned char Pfreq_,unsigned  char Pq_):Presets(){ -    setpresettype("Pfilter"); -    Dtype=Ptype_; -    Dfreq=Pfreq_; -    Dq=Pq_; - -    changed=false; -    defaults();     -}; - -FilterParams::~FilterParams(){ -}; - - -void FilterParams::defaults(){ -    Ptype=Dtype; -    Pfreq=Dfreq; -    Pq=Dq; - -    Pstages=0; -    Pfreqtrack=64; -    Pgain=64; -    Pcategory=0; -     -    Pnumformants=3; -    Pformantslowness=64; -    for (int j=0;j<FF_MAX_VOWELS;j++){ -	defaults(j); -    }; -     -    Psequencesize=3; -    for (int i=0;i<FF_MAX_SEQUENCE;i++) Psequence[i].nvowel=i%FF_MAX_VOWELS; - -    Psequencestretch=40; -    Psequencereversed=0; -    Pcenterfreq=64;//1 kHz -    Poctavesfreq=64; -    Pvowelclearness=64; -}; - -void FilterParams::defaults(int n){ -    int j=n; -	for (int i=0;i<FF_MAX_FORMANTS;i++){ -	    Pvowels[j].formants[i].freq=(int)(RND*127.0);//some random freqs -	    Pvowels[j].formants[i].q=64; -	    Pvowels[j].formants[i].amp=127; -	}; -}; - - -/* - * Get the parameters from other FilterParams - */ -  -void FilterParams::getfromFilterParams(FilterParams *pars){ -    defaults(); -     -    if (pars==NULL) return; -     -    Ptype=pars->Ptype; -    Pfreq=pars->Pfreq; -    Pq=pars->Pq; - -    Pstages=pars->Pstages; -    Pfreqtrack=pars->Pfreqtrack; -    Pgain=pars->Pgain; -    Pcategory=pars->Pcategory; -     -    Pnumformants=pars->Pnumformants; -    Pformantslowness=pars->Pformantslowness; -    for (int j=0;j<FF_MAX_VOWELS;j++){ -	for (int i=0;i<FF_MAX_FORMANTS;i++){ -	    Pvowels[j].formants[i].freq=pars->Pvowels[j].formants[i].freq; -	    Pvowels[j].formants[i].q=pars->Pvowels[j].formants[i].q; -	    Pvowels[j].formants[i].amp=pars->Pvowels[j].formants[i].amp; -	}; -    }; -     -    Psequencesize=pars->Psequencesize; -    for (int i=0;i<FF_MAX_SEQUENCE;i++) Psequence[i].nvowel=pars->Psequence[i].nvowel; - -    Psequencestretch=pars->Psequencestretch; -    Psequencereversed=pars->Psequencereversed; -    Pcenterfreq=pars->Pcenterfreq; -    Poctavesfreq=pars->Poctavesfreq; -    Pvowelclearness=pars->Pvowelclearness; -}; - - -/* - * Parameter control - */ -REALTYPE FilterParams::getfreq(){ -    return((Pfreq/64.0-1.0)*5.0); -}; - -REALTYPE FilterParams::getq(){ -    return(exp(pow((REALTYPE) Pq/127.0,2)*log(1000.0))-0.9); -}; -REALTYPE FilterParams::getfreqtracking(REALTYPE notefreq){ -    return(log(notefreq/440.0)*(Pfreqtrack-64.0)/(64.0*LOG_2)); -}; - -REALTYPE FilterParams::getgain(){ -    return((Pgain/64.0-1.0)*30.0);//-30..30dB -}; - -/* - * Get the center frequency of the formant's graph - */ -REALTYPE FilterParams::getcenterfreq(){ -    return(10000.0*pow(10,-(1.0-Pcenterfreq/127.0)*2.0)); -}; - -/* - * Get the number of octave that the formant functions applies to - */ -REALTYPE FilterParams::getoctavesfreq(){ -    return(0.25+10.0*Poctavesfreq/127.0); -}; - -/* - * Get the frequency from x, where x is [0..1] - */ -REALTYPE FilterParams::getfreqx(REALTYPE x){ -    if (x>1.0) x=1.0; -    REALTYPE octf=pow(2.0,getoctavesfreq()); -    return(getcenterfreq()/sqrt(octf)*pow(octf,x)); -}; - -/* - * Get the x coordinate from frequency (used by the UI) - */ -REALTYPE FilterParams::getfreqpos(REALTYPE freq){ -    return((log(freq)-log(getfreqx(0.0)))/log(2.0)/getoctavesfreq()); -}; - - -/* - * Get the freq. response of the formant filter - */ -void FilterParams::formantfilterH(int nvowel,int nfreqs,REALTYPE *freqs){ -    REALTYPE c[3],d[3]; -    REALTYPE filter_freq,filter_q,filter_amp; -    REALTYPE omega,sn,cs,alpha; - -    for (int i=0;i<nfreqs;i++) freqs[i]=0.0; - -    //for each formant... -    for (int nformant=0;nformant<Pnumformants;nformant++){ -	//compute formant parameters(frequency,amplitude,etc.) -	filter_freq=getformantfreq(Pvowels[nvowel].formants[nformant].freq); -	filter_q=getformantq(Pvowels[nvowel].formants[nformant].q)*getq(); -	if (Pstages>0) filter_q=(filter_q>1.0 ? pow(filter_q,1.0/(Pstages+1)) : filter_q); - -	filter_amp=getformantamp(Pvowels[nvowel].formants[nformant].amp); - - -	if (filter_freq<=(SAMPLE_RATE/2-100.0)){ -	    omega=2*PI*filter_freq/SAMPLE_RATE; -	    sn=sin(omega); -    	    cs=cos(omega); -	    alpha=sn/(2*filter_q); -	    REALTYPE tmp=1+alpha; -	    c[0]=alpha/tmp*sqrt(filter_q+1); -	    c[1]=0; -	    c[2]=-alpha/tmp*sqrt(filter_q+1); -	    d[1]=-2*cs/tmp*(-1); -	    d[2]=(1-alpha)/tmp*(-1); -	} else continue; - - -	for (int i=0;i<nfreqs;i++) { -	    REALTYPE freq=getfreqx(i/(REALTYPE) nfreqs); -	    if (freq>SAMPLE_RATE/2) { -		for (int tmp=i;tmp<nfreqs;tmp++) freqs[tmp]=0.0; -		break; -	    }; -	    REALTYPE fr=freq/SAMPLE_RATE*PI*2.0; -	    REALTYPE x=c[0],y=0.0; -    	    for (int n=1;n<3;n++){ -    		x+=cos(n*fr)*c[n]; -		y-=sin(n*fr)*c[n]; -	    }; -	    REALTYPE h=x*x+y*y; -	    x=1.0;y=0.0; -	    for (int n=1;n<3;n++){ -		x-=cos(n*fr)*d[n]; -		y+=sin(n*fr)*d[n]; -	    }; -	    h=h/(x*x+y*y); -	     -	    freqs[i]+=pow(h,(Pstages+1.0)/2.0)*filter_amp; -	}; -    }; -    for (int i=0;i<nfreqs;i++) { -	if (freqs[i]>0.000000001) freqs[i]=rap2dB(freqs[i])+getgain(); -	else freqs[i]=-90.0;     -    }; - -}; - -/* - * Transforms a parameter to the real value - */ -REALTYPE FilterParams::getformantfreq(unsigned char freq){ -    REALTYPE result=getfreqx(freq/127.0); -    return(result); -}; - -REALTYPE FilterParams::getformantamp(unsigned char amp){ -    REALTYPE result=pow(0.1,(1.0-amp/127.0)*4.0); -    return(result); -}; - -REALTYPE FilterParams::getformantq(unsigned char q){ -    //temp -    REALTYPE result=pow(25.0,(q-32.0)/64.0); -    return(result); -}; - - - -void FilterParams::add2XMLsection(XMLwrapper *xml,int n){ -	int nvowel=n; -	for (int nformant=0;nformant<FF_MAX_FORMANTS;nformant++){ -	    xml->beginbranch("FORMANT",nformant); -		xml->addpar("freq",Pvowels[nvowel].formants[nformant].freq); -		xml->addpar("amp",Pvowels[nvowel].formants[nformant].amp); -		xml->addpar("q",Pvowels[nvowel].formants[nformant].q); -	    xml->endbranch(); -	}; -}; - -void FilterParams::add2XML(XMLwrapper *xml){ -    //filter parameters -    xml->addpar("category",Pcategory); -    xml->addpar("type",Ptype); -    xml->addpar("freq",Pfreq); -    xml->addpar("q",Pq); -    xml->addpar("stages",Pstages); -    xml->addpar("freq_track",Pfreqtrack); -    xml->addpar("gain",Pgain); - -    //formant filter parameters -    if ((Pcategory==1)||(!xml->minimal)){ -	xml->beginbranch("FORMANT_FILTER"); -	    xml->addpar("num_formants",Pnumformants); -	    xml->addpar("formant_slowness",Pformantslowness); -	    xml->addpar("vowel_clearness",Pvowelclearness); -	    xml->addpar("center_freq",Pcenterfreq); -	    xml->addpar("octaves_freq",Poctavesfreq); -	    for (int nvowel=0;nvowel<FF_MAX_VOWELS;nvowel++){ -		xml->beginbranch("VOWEL",nvowel); -		    add2XMLsection(xml,nvowel); -		xml->endbranch(); -	    }; -  	    xml->addpar("sequence_size",Psequencesize); -  	    xml->addpar("sequence_stretch",Psequencestretch); -  	    xml->addparbool("sequence_reversed",Psequencereversed); -	    for (int nseq=0;nseq<FF_MAX_SEQUENCE;nseq++){ -		xml->beginbranch("SEQUENCE_POS",nseq); -  		    xml->addpar("vowel_id",Psequence[nseq].nvowel); -		xml->endbranch(); -	    }; -	xml->endbranch(); -    }; -}; - - -void FilterParams::getfromXMLsection(XMLwrapper *xml,int n){ -	int nvowel=n; -	for (int nformant=0;nformant<FF_MAX_FORMANTS;nformant++){ -    	    if (xml->enterbranch("FORMANT",nformant)==0) continue; -		Pvowels[nvowel].formants[nformant].freq=xml->getpar127("freq",Pvowels[nvowel].formants[nformant].freq); -		Pvowels[nvowel].formants[nformant].amp=xml->getpar127("amp",Pvowels[nvowel].formants[nformant].amp); -		Pvowels[nvowel].formants[nformant].q=xml->getpar127("q",Pvowels[nvowel].formants[nformant].q); -	    xml->exitbranch(); -	}; -}; - -void FilterParams::getfromXML(XMLwrapper *xml){ -    //filter parameters -    Pcategory=xml->getpar127("category",Pcategory); -    Ptype=xml->getpar127("type",Ptype); -    Pfreq=xml->getpar127("freq",Pfreq); -    Pq=xml->getpar127("q",Pq); -    Pstages=xml->getpar127("stages",Pstages); -    Pfreqtrack=xml->getpar127("freq_track",Pfreqtrack); -    Pgain=xml->getpar127("gain",Pgain); - -    //formant filter parameters -    if(xml->enterbranch("FORMANT_FILTER")){ -	    Pnumformants=xml->getpar127("num_formants",Pnumformants); -	    Pformantslowness=xml->getpar127("formant_slowness",Pformantslowness); -	    Pvowelclearness=xml->getpar127("vowel_clearness",Pvowelclearness); -	    Pcenterfreq=xml->getpar127("center_freq",Pcenterfreq); -	    Poctavesfreq=xml->getpar127("octaves_freq",Poctavesfreq); - -	    for (int nvowel=0;nvowel<FF_MAX_VOWELS;nvowel++){ -		if (xml->enterbranch("VOWEL",nvowel)==0) continue; -		    getfromXMLsection(xml,nvowel); -		xml->exitbranch(); -	    }; -  	    Psequencesize=xml->getpar127("sequence_size",Psequencesize); -  	    Psequencestretch=xml->getpar127("sequence_stretch",Psequencestretch); -  	    Psequencereversed=xml->getparbool("sequence_reversed",Psequencereversed); -	    for (int nseq=0;nseq<FF_MAX_SEQUENCE;nseq++){ -		if (xml->enterbranch("SEQUENCE_POS",nseq)==0) continue; -  		    Psequence[nseq].nvowel=xml->getpar("vowel_id",Psequence[nseq].nvowel,0,FF_MAX_VOWELS-1); -		xml->exitbranch(); -	    }; -	xml->exitbranch(); -    }; -     -}; - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/FilterParams.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/FilterParams.h deleted file mode 100644 index 58ebd589..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/FilterParams.h +++ /dev/null @@ -1,100 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  FilterParams.h - Parameters for filter -  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 FILTER_PARAMS_H -#define FILTER_PARAMS_H - -#include "../globals.h" -#include "../Misc/XMLwrapper.h" -#include "Presets.h" - -class FilterParams:public Presets{ -    public: -	FilterParams(unsigned char Ptype_,unsigned char Pfreq,unsigned char Pq_); -	~FilterParams(); - -	void add2XML(XMLwrapper *xml); -	void add2XMLsection(XMLwrapper *xml,int n); -	void defaults(); -	void getfromXML(XMLwrapper *xml); -	void getfromXMLsection(XMLwrapper *xml,int n); - - -	void getfromFilterParams(FilterParams *pars); - -	REALTYPE getfreq(); -	REALTYPE getq(); -	REALTYPE getfreqtracking(REALTYPE notefreq); -	REALTYPE getgain(); -	 -        unsigned char Pcategory;//Filter category (Analog/Formant/StVar) -	unsigned char Ptype;// Filter type  (for analog lpf,hpf,bpf..) -	unsigned char Pfreq;// Frequency (64-central frequency) -	unsigned char Pq;   // Q parameters (resonance or bandwidth) -	unsigned char Pstages; //filter stages+1 -	unsigned char Pfreqtrack;//how the filter frequency is changing according the note frequency -	unsigned char Pgain;//filter's output gain -	 -	//Formant filter parameters -	unsigned char Pnumformants;//how many formants are used -	unsigned char Pformantslowness;//how slow varies the formants -	unsigned char Pvowelclearness;//how vowels are kept clean (how much try to avoid "mixed" vowels) -	unsigned char Pcenterfreq,Poctavesfreq;//the center frequency of the res. func., and the number of octaves - -	struct { -	    struct { -		unsigned char freq,amp,q;//frequency,amplitude,Q -	    }formants[FF_MAX_FORMANTS]; -	}Pvowels[FF_MAX_VOWELS]; -	 -	 -	unsigned char Psequencesize;//how many vowels are in the sequence -	unsigned char Psequencestretch;//how the sequence is stretched (how the input from filter envelopes/LFOs/etc. is "stretched") -	unsigned char Psequencereversed;//if the input from filter envelopes/LFOs/etc. is reversed(negated) -	struct { -	    unsigned char nvowel;//the vowel from the position -	} Psequence[FF_MAX_SEQUENCE]; - -	REALTYPE getcenterfreq(); -	REALTYPE getoctavesfreq(); -	REALTYPE getfreqpos(REALTYPE freq); -	REALTYPE getfreqx(REALTYPE x); -	 -	void formantfilterH(int nvowel,int nfreqs,REALTYPE *freqs);//used by UI -     -	REALTYPE getformantfreq(unsigned char freq); -	REALTYPE getformantamp(unsigned char amp); -	REALTYPE getformantq(unsigned char q); - -	bool changed; -	 -    private: -	void defaults(int n); -     -	//stored default parameters -	unsigned char Dtype; -	unsigned char Dfreq; -	unsigned char Dq; -}; - -#endif - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/LFOParams.C b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/LFOParams.C deleted file mode 100644 index 0f9c816d..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/LFOParams.C +++ /dev/null @@ -1,91 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  LFOParams.C - Parameters for LFO -  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 <stdio.h> -#include "../globals.h" -#include "LFOParams.h" - -int LFOParams::time; - -LFOParams::LFOParams(char Pfreq_,char Pintensity_,char Pstartphase_, char PLFOtype_,char Prandomness_, char Pdelay_,char Pcontinous_,char fel_):Presets(){ -    switch(fel_) { -	case 0:setpresettype("Plfofrequency"); -	    break; -	case 1:setpresettype("Plfoamplitude"); -	    break; -	case 2:setpresettype("Plfofilter"); -	    break; -    }; -    Dfreq=Pfreq_; -    Dintensity=Pintensity_; -    Dstartphase=Pstartphase_; -    DLFOtype=PLFOtype_; -    Drandomness=Prandomness_; -    Ddelay=Pdelay_; -    Dcontinous=Pcontinous_; -    fel=fel_; -    time=0; -     -    defaults(); -}; - -LFOParams::~LFOParams(){ -}; - -void LFOParams::defaults(){ -    Pfreq=Dfreq/127.0; -    Pintensity=Dintensity; -    Pstartphase=Dstartphase; -    PLFOtype=DLFOtype; -    Prandomness=Drandomness; -    Pdelay=Ddelay; -    Pcontinous=Dcontinous; -    Pfreqrand=0; -    Pstretch=64; -}; - - -void LFOParams::add2XML(XMLwrapper *xml){ -    xml->addparreal("freq",Pfreq); -    xml->addpar("intensity",Pintensity); -    xml->addpar("start_phase",Pstartphase); -    xml->addpar("lfo_type",PLFOtype); -    xml->addpar("randomness_amplitude",Prandomness); -    xml->addpar("randomness_frequency",Pfreqrand); -    xml->addpar("delay",Pdelay); -    xml->addpar("stretch",Pstretch); -    xml->addparbool("continous",Pcontinous); -}; - -void LFOParams::getfromXML(XMLwrapper *xml){ -    Pfreq=xml->getparreal("freq",Pfreq,0.0,1.0); -    Pintensity=xml->getpar127("intensity",Pintensity); -    Pstartphase=xml->getpar127("start_phase",Pstartphase); -    PLFOtype=xml->getpar127("lfo_type",PLFOtype); -    Prandomness=xml->getpar127("randomness_amplitude",Prandomness); -    Pfreqrand=xml->getpar127("randomness_frequency",Pfreqrand); -    Pdelay=xml->getpar127("delay",Pdelay); -    Pstretch=xml->getpar127("stretch",Pstretch); -    Pcontinous=xml->getparbool("continous",Pcontinous); -}; - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/LFOParams.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/LFOParams.h deleted file mode 100644 index 48a0d5d2..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/LFOParams.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  LFOParams.h - Parameters for LFO -  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 LFO_PARAMS_H -#define LFO_PARAMS_H - -#include "../Misc/XMLwrapper.h" -#include "Presets.h" - -class LFOParams:public Presets{ -    public: -      LFOParams(char Pfreq_,char Pintensity_,char Pstartphase_, char PLFOtype_,char Prandomness_, char Pdelay_,char Pcontinous,char fel_);       -      ~LFOParams(); -       -      void add2XML(XMLwrapper *xml); -      void defaults(); -      void getfromXML(XMLwrapper *xml); -       -    /* Parametrii MIDI */ -      REALTYPE Pfreq;      	// frequency -      unsigned char Pintensity; // intensity -      unsigned char Pstartphase;// start phase (0=random) -      unsigned char PLFOtype;   // LFO type (sin,triangle,square,ramp,...) -      unsigned char Prandomness;// randomness (0=off) -      unsigned char Pfreqrand;	// frequency randomness (0=off) -      unsigned char Pdelay;     // delay (0=off) -      unsigned char Pcontinous; // 1 if LFO is continous -      unsigned char Pstretch;	// how the LFO is "stretched" according the note frequency (64=no stretch) - -      int fel;//what kind is the LFO (0 - frequency, 1 - amplitude, 2 - filter) -      static int time;//is used by Pcontinous parameter -    private: -      /* Default parameters */ -      unsigned char Dfreq;       -      unsigned char Dintensity;  -      unsigned char Dstartphase; -      unsigned char DLFOtype;    -      unsigned char Drandomness; -      unsigned char Ddelay;      -      unsigned char Dcontinous;        - -}; - - -#endif diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.C b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.C deleted file mode 100644 index 0c62e53b..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.C +++ /dev/null @@ -1,742 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  PADnoteParameters.C - 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 - -*/ -#include <math.h> -#include "PADnoteParameters.h" -#include "../Misc/Master.h" - -PADnoteParameters::PADnoteParameters(FFTwrapper *fft_,Master* master_):Presets(){ -    setpresettype("Ppadsyth"); - -    fft=fft_; -    master=master_; -     -    resonance=new Resonance(); -    oscilgen=new OscilGen(fft_,resonance); -    oscilgen->ADvsPAD=true; - -    FreqEnvelope=new EnvelopeParams(0,0); -    FreqEnvelope->ASRinit(64,50,64,60); -    FreqLfo=new LFOParams(70,0,64,0,0,0,0,0); -     -    AmpEnvelope=new EnvelopeParams(64,1); -    AmpEnvelope->ADSRinit_dB(0,40,127,25); -    AmpLfo=new LFOParams(80,0,64,0,0,0,0,1); - -    GlobalFilter=new FilterParams(2,94,40); -    FilterEnvelope=new EnvelopeParams(0,1); -    FilterEnvelope->ADSRinit_filter(64,40,64,70,60,64); -    FilterLfo=new LFOParams(80,0,64,0,0,0,0,2); -     -    for (int i=0;i<PAD_MAX_SAMPLES;i++) sample[i].smp=NULL; -    newsample.smp=NULL; -     -    defaults(); -}; - -PADnoteParameters::~PADnoteParameters(){ -    deletesamples(); -    delete(oscilgen); -    delete(resonance); - -    delete(FreqEnvelope); -    delete(FreqLfo); -    delete(AmpEnvelope); -    delete(AmpLfo); -    delete(GlobalFilter); -    delete(FilterEnvelope); -    delete(FilterLfo); -     -}; - -void PADnoteParameters::defaults(){ -    Pmode=0; -    Php.base.type=0; -    Php.base.par1=80; -    Php.freqmult=0; -    Php.modulator.par1=0; -    Php.modulator.freq=30; -    Php.width=127; -    Php.amp.type=0; -    Php.amp.mode=0; -    Php.amp.par1=80; -    Php.amp.par2=64; -    Php.autoscale=true; -    Php.onehalf=0; - -    setPbandwidth(500); -    Pbwscale=0; -     -    resonance->defaults(); -    oscilgen->defaults(); - -    Phrpos.type=0; -    Phrpos.par1=64; -    Phrpos.par2=64; -    Phrpos.par3=0; -     -    Pquality.samplesize=3; -    Pquality.basenote=4; -    Pquality.oct=3; -    Pquality.smpoct=2; - -    PStereo=1;//stereo -    /* Frequency Global Parameters */ -    Pfixedfreq=0; -    PfixedfreqET=0; -    PDetune=8192;//zero -    PCoarseDetune=0; -    PDetuneType=1; -    FreqEnvelope->defaults(); -    FreqLfo->defaults(); -     -    /* Amplitude Global Parameters */ -    PVolume=90; -    PPanning=64;//center -    PAmpVelocityScaleFunction=64; -    AmpEnvelope->defaults(); -    AmpLfo->defaults(); -    PPunchStrength=0; -    PPunchTime=60; -    PPunchStretch=64; -    PPunchVelocitySensing=72; -     -    /* Filter Global Parameters*/ -    PFilterVelocityScale=64; -    PFilterVelocityScaleFunction=64; -    GlobalFilter->defaults(); -    FilterEnvelope->defaults(); -    FilterLfo->defaults(); - -    deletesamples(); -}; - -void PADnoteParameters::deletesample(int n){ -    if ((n<0)||(n>=PAD_MAX_SAMPLES)) return; -    if (sample[n].smp!=NULL){ -	delete(sample[n].smp); -	sample[n].smp=NULL; -    }; -    sample[n].size=0; -    sample[n].basefreq=440.0; -}; - -void PADnoteParameters::deletesamples(){ -    for (int i=0;i<PAD_MAX_SAMPLES;i++) deletesample(i); -}; - -/* - * Get the harmonic profile (i.e. the frequency distributio of a single harmonic) - */ -REALTYPE PADnoteParameters::getprofile(REALTYPE *smp,int size){ -    for (int i=0;i<size;i++) smp[i]=0.0; -    const int supersample=16; -    REALTYPE basepar=pow(2.0,(1.0-Php.base.par1/127.0)*12.0); -    REALTYPE freqmult=floor(pow(2.0,Php.freqmult/127.0*5.0)+0.000001); - -    REALTYPE modfreq=floor(pow(2.0,Php.modulator.freq/127.0*5.0)+0.000001); -    REALTYPE modpar1=pow(Php.modulator.par1/127.0,4.0)*5.0/sqrt(modfreq); -    REALTYPE amppar1=pow(2.0,pow(Php.amp.par1/127.0,2.0)*10.0)-0.999; -    REALTYPE amppar2=(1.0-Php.amp.par2/127.0)*0.998+0.001; -    REALTYPE width=pow(150.0/(Php.width+22.0),2.0); - -    for (int i=0;i<size*supersample;i++){ -	bool makezero=false;     -	REALTYPE x=i*1.0/(size*(REALTYPE) supersample); - -	REALTYPE origx=x; -     -	//do the sizing (width) -	x=(x-0.5)*width+0.5; -	if (x<0.0) { -	    x=0.0;  -	    makezero=true; -	} else { -	    if (x>1.0) { -		x=1.0; -		makezero=true; -	    }; -	}; - -	//compute the full profile or one half -	switch(Php.onehalf){ -	    case 1:x=x*0.5+0.5; -		break; -	    case 2:x=x*0.5; -		break; -	};	 - -	REALTYPE x_before_freq_mult=x; - -	//do the frequency multiplier -	x*=freqmult; - -	//do the modulation of the profile  -	x+=sin(x_before_freq_mult*3.1415926*modfreq)*modpar1; -	x=fmod(x+1000.0,1.0)*2.0-1.0; - - -	//this is the base function of the profile -	REALTYPE f; -	switch (Php.base.type){ -	    case 1:f=exp(-(x*x)*basepar);if (f<0.4) f=0.0; else f=1.0; -		break; -	    case 2:f=exp(-(fabs(x))*sqrt(basepar)); -		break; -	    default:f=exp(-(x*x)*basepar); -		break; -	}; -	if (makezero) f=0.0; -	 -	REALTYPE amp=1.0; -	origx=origx*2.0-1.0; - -	//compute the amplitude multiplier -	switch(Php.amp.type){ -	    case 1:amp=exp(-(origx*origx)*10.0*amppar1); -		break; -	    case 2:amp=0.5*(1.0+cos(3.1415926*origx*sqrt(amppar1*4.0+1.0))); -		break; -	    case 3:amp=1.0/(pow(origx*(amppar1*2.0+0.8),14.0)+1.0); -		break; -	}; - -	//apply the amplitude multiplier	 -	REALTYPE finalsmp=f; -	if (Php.amp.type!=0){ -	    switch(Php.amp.mode){ -		case 0:finalsmp=amp*(1.0-amppar2)+finalsmp*amppar2; -		    break; -		case 1:finalsmp*=amp*(1.0-amppar2)+amppar2; -		    break; -		case 2:finalsmp=finalsmp/(amp+pow(amppar2,4.0)*20.0+0.0001); -		    break; -		case 3:finalsmp=amp/(finalsmp+pow(amppar2,4.0)*20.0+0.0001); -		    break; -	    }; -	}; - -	smp[i/supersample]+=finalsmp/supersample; -    };     - -    //normalize the profile (make the max. to be equal to 1.0) -    REALTYPE max=0.0; -    for (int i=0;i<size;i++) { -	if (smp[i]<0.0) smp[i]=0.0; -	if (smp[i]>max) max=smp[i]; -    }; -    if (max<0.00001) max=1.0; -    for (int i=0;i<size;i++) smp[i]/=max; -     -    if (!Php.autoscale) return(0.5); - -    //compute the estimated perceived bandwidth -    REALTYPE sum=0.0; -    int i; -    for (i=0;i<size/2-2;i++) { -	sum+=smp[i]*smp[i]+smp[size-i-1]*smp[size-i-1]; -	if (sum>=4.0) break; -    }; -     -    REALTYPE result=1.0-2.0*i/(REALTYPE) size; -    return(result); -}; - -/* - * Compute the real bandwidth in cents and returns it - * Also, sets the bandwidth parameter - */ -REALTYPE PADnoteParameters::setPbandwidth(int Pbandwidth){ -    this->Pbandwidth=Pbandwidth; -    REALTYPE result=pow(Pbandwidth/1000.0,1.1); -    result=pow(10.0,result*4.0)*0.25; -    return(result); -}; - -/* - * Get the harmonic(overtone) position - */ -REALTYPE PADnoteParameters::getNhr(int n){ -    REALTYPE result=1.0; -    REALTYPE par1=pow(10.0,-(1.0-Phrpos.par1/255.0)*3.0); -    REALTYPE par2=Phrpos.par2/255.0; -     -    REALTYPE n0=n-1.0; -    REALTYPE tmp=0.0; -    int thresh=0; -    switch(Phrpos.type){ -	case 1: -	    thresh=(int)(par2*par2*100.0)+1; -	    if (n<thresh) result=n; -		else result=1.0+n0+(n0-thresh+1.0)*par1*8.0; -	    break; -	case 2:	     -	    thresh=(int)(par2*par2*100.0)+1; -	    if (n<thresh) result=n; -		else result=1.0+n0-(n0-thresh+1.0)*par1*0.90; -	    break; -	case 3: -	    tmp=par1*100.0+1.0; -	    result=pow(n0/tmp,1.0-par2*0.8)*tmp+1.0; -	    break; -	case 4: -	    result=n0*(1.0-par1)+pow(n0*0.1,par2*3.0+1.0)*par1*10.0+1.0; -	    break; -	case 5: -	    result=n0+sin(n0*par2*par2*PI*0.999)*sqrt(par1)*2.0+1.0; -	    break; -	case 6: -	    tmp=pow(par2*2.0,2.0)+0.1; -	    result=n0*pow(1.0+par1*pow(n0*0.8,tmp),tmp)+1.0; -	    break; -	default: -	    result=n; -	    break; -    }; - -    REALTYPE par3=Phrpos.par3/255.0; -     -    REALTYPE iresult=floor(result+0.5); -    REALTYPE dresult=result-iresult; - -    result=iresult+(1.0-par3)*dresult; - -    return(result); -}; - -/* - * Generates the long spectrum for Bandwidth mode (only amplitudes are generated; phases will be random) - */ -void PADnoteParameters::generatespectrum_bandwidthMode(REALTYPE *spectrum, int size,REALTYPE basefreq,REALTYPE *profile,int profilesize,REALTYPE bwadjust){ -    for (int i=0;i<size;i++) spectrum[i]=0.0; -     -    REALTYPE harmonics[OSCIL_SIZE/2]; -    for (int i=0;i<OSCIL_SIZE/2;i++) harmonics[i]=0.0; -    //get the harmonic structure from the oscillator (I am using the frequency amplitudes, only) -    oscilgen->get(harmonics,basefreq,false); - -    //normalize -    REALTYPE max=0.0; -    for (int i=0;i<OSCIL_SIZE/2;i++) if (harmonics[i]>max) max=harmonics[i]; -    if (max<0.000001) max=1; -    for (int i=0;i<OSCIL_SIZE/2;i++) harmonics[i]/=max; -     -    for (int nh=1;nh<OSCIL_SIZE/2;nh++){//for each harmonic -	REALTYPE realfreq=getNhr(nh)*basefreq; -	if (realfreq>SAMPLE_RATE*0.49999) break; -	if (realfreq<20.0) break; -	if (harmonics[nh-1]<1e-4) continue; - -	//compute the bandwidth of each harmonic -	REALTYPE bandwidthcents=setPbandwidth(Pbandwidth); -	REALTYPE bw=(pow(2.0,bandwidthcents/1200.0)-1.0)*basefreq/bwadjust; -	REALTYPE power=1.0; -	switch (Pbwscale){ -	    case 0: power=1.0;break; -	    case 1: power=0.0;break; -	    case 2: power=0.25;break; -	    case 3: power=0.5;break; -	    case 4: power=0.75;break; -	    case 5: power=1.5;break; -	    case 6: power=2.0;break; -	    case 7: power=-0.5;break; -	}; -	bw=bw*pow(realfreq/basefreq,power); -        int ibw=(int)((bw/(SAMPLE_RATE*0.5)*size))+1; - -	REALTYPE amp=harmonics[nh-1]; -	if (resonance->Penabled) amp*=resonance->getfreqresponse(realfreq); -	 -	if (ibw>profilesize){//if the bandwidth is larger than the profilesize -	    REALTYPE rap=sqrt((REALTYPE)profilesize/(REALTYPE)ibw); -	    int cfreq=(int) (realfreq/(SAMPLE_RATE*0.5)*size)-ibw/2; -	    for (int i=0;i<ibw;i++){ -		int src=(int)(i*rap*rap); -		int spfreq=i+cfreq; -		if (spfreq<0) continue; -		if (spfreq>=size) break; -		spectrum[spfreq]+=amp*profile[src]*rap; -	    }; -	}else{//if the bandwidth is smaller than the profilesize -	    REALTYPE rap=sqrt((REALTYPE)ibw/(REALTYPE)profilesize); -	    REALTYPE ibasefreq=realfreq/(SAMPLE_RATE*0.5)*size; -	    for (int i=0;i<profilesize;i++){ -		REALTYPE idfreq=i/(REALTYPE)profilesize-0.5; -		idfreq*=ibw; -		int spfreq=(int) (idfreq+ibasefreq); -		REALTYPE fspfreq=fmod(idfreq+ibasefreq,1.0); -		if (spfreq<=0) continue; -		if (spfreq>=size-1) break; -		spectrum[spfreq]+=amp*profile[i]*rap*(1.0-fspfreq); -		spectrum[spfreq+1]+=amp*profile[i]*rap*fspfreq; -	    }; -	}; -    }; -}; - -/* - * Generates the long spectrum for non-Bandwidth modes (only amplitudes are generated; phases will be random) - */ -void PADnoteParameters::generatespectrum_otherModes(REALTYPE *spectrum, int size,REALTYPE basefreq,REALTYPE *profile,int profilesize,REALTYPE bwadjust){ -    for (int i=0;i<size;i++) spectrum[i]=0.0; -     -    REALTYPE harmonics[OSCIL_SIZE/2]; -    for (int i=0;i<OSCIL_SIZE/2;i++) harmonics[i]=0.0; -    //get the harmonic structure from the oscillator (I am using the frequency amplitudes, only) -    oscilgen->get(harmonics,basefreq,false); - -    //normalize -    REALTYPE max=0.0; -    for (int i=0;i<OSCIL_SIZE/2;i++) if (harmonics[i]>max) max=harmonics[i]; -    if (max<0.000001) max=1; -    for (int i=0;i<OSCIL_SIZE/2;i++) harmonics[i]/=max; - -    for (int nh=1;nh<OSCIL_SIZE/2;nh++){//for each harmonic -	REALTYPE realfreq=getNhr(nh)*basefreq; -	 -	///sa fac aici interpolarea si sa am grija daca frecv descresc -	 -	if (realfreq>SAMPLE_RATE*0.49999) break; -	if (realfreq<20.0) break; -//	if (harmonics[nh-1]<1e-4) continue; - - -	REALTYPE amp=harmonics[nh-1]; -	if (resonance->Penabled) amp*=resonance->getfreqresponse(realfreq); -	int cfreq=(int) (realfreq/(SAMPLE_RATE*0.5)*size); - -	spectrum[cfreq]=amp+1e-9; -    }; -     -    if (Pmode!=1){     -        int old=0; -	for (int k=1;k<size;k++){ -	    if ( (spectrum[k]>1e-10) || (k==(size-1)) ){ -		int delta=k-old; -		REALTYPE val1=spectrum[old]; -		REALTYPE val2=spectrum[k]; -		REALTYPE idelta=1.0/delta; -		for (int i=0;i<delta;i++){ -		    REALTYPE x=idelta*i; -		    spectrum[old+i]=val1*(1.0-x)+val2*x; -		}; -		old=k; -	    }; -	};     -    }; -     -}; - -/* - * Applies the parameters (i.e. computes all the samples, based on parameters); - */ -void PADnoteParameters::applyparameters(bool lockmutex){ -    const int samplesize=(((int) 1)<<(Pquality.samplesize+14)); -    int spectrumsize=samplesize/2; -    REALTYPE spectrum[spectrumsize]; -    int profilesize=512; -    REALTYPE profile[profilesize]; - -printf("applyparameters %d\n", lockmutex); - -    REALTYPE bwadjust=getprofile(profile,profilesize); -//    for (int i=0;i<profilesize;i++) profile[i]*=profile[i]; -    REALTYPE basefreq=65.406*pow(2.0,Pquality.basenote/2); -    if (Pquality.basenote%2==1) basefreq*=1.5; - -    int samplemax=Pquality.oct+1; -    int smpoct=Pquality.smpoct; -    if (Pquality.smpoct==5) smpoct=6; -    if (Pquality.smpoct==6) smpoct=12; -    if (smpoct!=0) samplemax*=smpoct; -	else samplemax=samplemax/2+1; -    if (samplemax==0) samplemax=1; -     -    //prepare a BIG FFT stuff -    FFTwrapper *fft=new FFTwrapper(samplesize); -    FFTFREQS fftfreqs; -    newFFTFREQS(&fftfreqs,samplesize/2); -     -    REALTYPE adj[samplemax];//this is used to compute frequency relation to the base frequency -    for (int nsample=0;nsample<samplemax;nsample++) adj[nsample]=(Pquality.oct+1.0)*(REALTYPE)nsample/samplemax; -    for (int nsample=0;nsample<samplemax;nsample++){ -	REALTYPE tmp=adj[nsample]-adj[samplemax-1]*0.5; -	REALTYPE basefreqadjust=pow(2.0,tmp); - -        if (Pmode==0) generatespectrum_bandwidthMode(spectrum,spectrumsize,basefreq*basefreqadjust,profile,profilesize,bwadjust); -	    else generatespectrum_otherModes(spectrum,spectrumsize,basefreq*basefreqadjust,profile,profilesize,bwadjust); - -	const int extra_samples=5;//the last samples contains the first samples (used for linear/cubic interpolation) -        newsample.smp=new REALTYPE[samplesize+extra_samples]; -     -	newsample.smp[0]=0.0; -	for (int i=1;i<spectrumsize;i++){//randomize the phases -	    REALTYPE phase=RND*6.29; -	    fftfreqs.c[i]=spectrum[i]*cos(phase); -	    fftfreqs.s[i]=spectrum[i]*sin(phase); -	}; -	fft->freqs2smps(fftfreqs,newsample.smp);//that's all; here is the only ifft for the whole sample; no windows are used ;-) -	 - -        //normalize(rms) -	REALTYPE rms=0.0; -        for (int i=0;i<samplesize;i++) rms+=newsample.smp[i]*newsample.smp[i]; -	rms=sqrt(rms); -        if (rms<0.000001) rms=1.0; -	rms*=sqrt(262144.0/samplesize); -        for (int i=0;i<samplesize;i++) newsample.smp[i]*=1.0/rms*50.0; -     -	//prepare extra samples used by the linear or cubic interpolation -        for (int i=0;i<extra_samples;i++) newsample.smp[i+samplesize]=newsample.smp[i]; - -	//replace the current sample with the new computed sample -	if (lockmutex){ -	    master->lock(); -	     deletesample(nsample); -	     sample[nsample].smp=newsample.smp; -    	     sample[nsample].size=samplesize; -	     sample[nsample].basefreq=basefreq*basefreqadjust; -	    master->unlock(); -	} else { -	    deletesample(nsample); -	    sample[nsample].smp=newsample.smp; -	    sample[nsample].size=samplesize; -	    sample[nsample].basefreq=basefreq*basefreqadjust; -	}; -	newsample.smp=NULL; -    }; -    delete(fft); -    deleteFFTFREQS(&fftfreqs); -     -    //delete the additional samples that might exists and are not useful -    if (lockmutex){ -        master->lock(); -	for (int i=samplemax;i<PAD_MAX_SAMPLES;i++) deletesample(i); -        master->unlock(); -    } else { -	for (int i=samplemax;i<PAD_MAX_SAMPLES;i++) deletesample(i); -    }; -}; - - -void PADnoteParameters::add2XML(XMLwrapper *xml){ -    xml->information.PADsynth_used=true; - -    xml->addparbool("stereo",PStereo); -    xml->addpar("mode",Pmode); -    xml->addpar("bandwidth",Pbandwidth); -    xml->addpar("bandwidth_scale",Pbwscale); - -    xml->beginbranch("HARMONIC_PROFILE"); -	xml->addpar("base_type",Php.base.type); -	xml->addpar("base_par1",Php.base.par1); -	xml->addpar("frequency_multiplier",Php.freqmult); -	xml->addpar("modulator_par1",Php.modulator.par1); -	xml->addpar("modulator_frequency",Php.modulator.freq); -	xml->addpar("width",Php.width); -	xml->addpar("amplitude_multiplier_type",Php.amp.type); -	xml->addpar("amplitude_multiplier_mode",Php.amp.mode); -	xml->addpar("amplitude_multiplier_par1",Php.amp.par1); -	xml->addpar("amplitude_multiplier_par2",Php.amp.par2); -	xml->addparbool("autoscale",Php.autoscale); -	xml->addpar("one_half",Php.onehalf); -    xml->endbranch(); - -    xml->beginbranch("OSCIL"); -        oscilgen->add2XML(xml); -    xml->endbranch(); - -    xml->beginbranch("RESONANCE"); -        resonance->add2XML(xml); -    xml->endbranch(); - -    xml->beginbranch("HARMONIC_POSITION"); -	xml->addpar("type",Phrpos.type); -	xml->addpar("parameter1",Phrpos.par1); -	xml->addpar("parameter2",Phrpos.par2); -	xml->addpar("parameter3",Phrpos.par3); -    xml->endbranch(); - -    xml->beginbranch("SAMPLE_QUALITY"); -	xml->addpar("samplesize",Pquality.samplesize); -	xml->addpar("basenote",Pquality.basenote); -	xml->addpar("octaves",Pquality.oct); -	xml->addpar("samples_per_octave",Pquality.smpoct); -    xml->endbranch(); - -    xml->beginbranch("AMPLITUDE_PARAMETERS"); -	xml->addpar("volume",PVolume); -	xml->addpar("panning",PPanning); -	xml->addpar("velocity_sensing",PAmpVelocityScaleFunction); -	xml->addpar("punch_strength",PPunchStrength); -	xml->addpar("punch_time",PPunchTime); -	xml->addpar("punch_stretch",PPunchStretch); -	xml->addpar("punch_velocity_sensing",PPunchVelocitySensing); -	 -	xml->beginbranch("AMPLITUDE_ENVELOPE"); -	    AmpEnvelope->add2XML(xml); -	xml->endbranch(); -	 -	xml->beginbranch("AMPLITUDE_LFO"); -	    AmpLfo->add2XML(xml); -	xml->endbranch(); - -    xml->endbranch(); -     -    xml->beginbranch("FREQUENCY_PARAMETERS"); -        xml->addpar("fixed_freq",Pfixedfreq); -        xml->addpar("fixed_freq_et",PfixedfreqET); -        xml->addpar("detune",PDetune); -        xml->addpar("coarse_detune",PCoarseDetune); -        xml->addpar("detune_type",PDetuneType); -	 -	xml->beginbranch("FREQUENCY_ENVELOPE"); -	    FreqEnvelope->add2XML(xml); -	xml->endbranch(); - -	xml->beginbranch("FREQUENCY_LFO"); -	    FreqLfo->add2XML(xml); -	xml->endbranch(); -    xml->endbranch(); -     -    xml->beginbranch("FILTER_PARAMETERS"); -	xml->addpar("velocity_sensing_amplitude",PFilterVelocityScale); -	xml->addpar("velocity_sensing",PFilterVelocityScaleFunction); -	 -	xml->beginbranch("FILTER"); -	    GlobalFilter->add2XML(xml); -	xml->endbranch(); -	 -	xml->beginbranch("FILTER_ENVELOPE"); -	    FilterEnvelope->add2XML(xml); -	xml->endbranch(); -	 -	xml->beginbranch("FILTER_LFO"); -	    FilterLfo->add2XML(xml); -	xml->endbranch(); -    xml->endbranch();     -}; - -void PADnoteParameters::getfromXML(XMLwrapper *xml){ -    PStereo=xml->getparbool("stereo",PStereo); -    Pmode=xml->getpar127("mode",0); -    Pbandwidth=xml->getpar("bandwidth",Pbandwidth,0,1000); -    Pbwscale=xml->getpar127("bandwidth_scale",Pbwscale); - -    if (xml->enterbranch("HARMONIC_PROFILE")){ -	Php.base.type=xml->getpar127("base_type",Php.base.type); -	Php.base.par1=xml->getpar127("base_par1",Php.base.par1); -	Php.freqmult=xml->getpar127("frequency_multiplier",Php.freqmult); -	Php.modulator.par1=xml->getpar127("modulator_par1",Php.modulator.par1); -	Php.modulator.freq=xml->getpar127("modulator_frequency",Php.modulator.freq); -	Php.width=xml->getpar127("width",Php.width); -	Php.amp.type=xml->getpar127("amplitude_multiplier_type",Php.amp.type); -	Php.amp.mode=xml->getpar127("amplitude_multiplier_mode",Php.amp.mode); -	Php.amp.par1=xml->getpar127("amplitude_multiplier_par1",Php.amp.par1); -	Php.amp.par2=xml->getpar127("amplitude_multiplier_par2",Php.amp.par2); -	Php.autoscale=xml->getparbool("autoscale",Php.autoscale); -	Php.onehalf=xml->getpar127("one_half",Php.onehalf); -     xml->exitbranch(); -    }; - -    if (xml->enterbranch("OSCIL")){ -        oscilgen->getfromXML(xml); -     xml->exitbranch(); -    }; - -    if (xml->enterbranch("RESONANCE")){ -        resonance->getfromXML(xml); -     xml->exitbranch(); -    }; - -    if (xml->enterbranch("HARMONIC_POSITION")){ -	Phrpos.type=xml->getpar127("type",Phrpos.type); -	Phrpos.par1=xml->getpar("parameter1",Phrpos.par1,0,255); -	Phrpos.par2=xml->getpar("parameter2",Phrpos.par2,0,255); -	Phrpos.par3=xml->getpar("parameter3",Phrpos.par3,0,255); -     xml->exitbranch(); -    }; - -    if (xml->enterbranch("SAMPLE_QUALITY")){ -	Pquality.samplesize=xml->getpar127("samplesize",Pquality.samplesize); -	Pquality.basenote=xml->getpar127("basenote",Pquality.basenote); -	Pquality.oct=xml->getpar127("octaves",Pquality.oct); -	Pquality.smpoct=xml->getpar127("samples_per_octave",Pquality.smpoct); -     xml->exitbranch(); -    }; - -    if (xml->enterbranch("AMPLITUDE_PARAMETERS")){ -	PVolume=xml->getpar127("volume",PVolume); -	PPanning=xml->getpar127("panning",PPanning); -	PAmpVelocityScaleFunction=xml->getpar127("velocity_sensing",PAmpVelocityScaleFunction); -	PPunchStrength=xml->getpar127("punch_strength",PPunchStrength); -	PPunchTime=xml->getpar127("punch_time",PPunchTime); -	PPunchStretch=xml->getpar127("punch_stretch",PPunchStretch); -	PPunchVelocitySensing=xml->getpar127("punch_velocity_sensing",PPunchVelocitySensing); -	 -	xml->enterbranch("AMPLITUDE_ENVELOPE"); -	    AmpEnvelope->getfromXML(xml); -	xml->exitbranch(); -	 -	xml->enterbranch("AMPLITUDE_LFO"); -	    AmpLfo->getfromXML(xml); -	xml->exitbranch(); - -     xml->exitbranch(); -    }; -     -    if (xml->enterbranch("FREQUENCY_PARAMETERS")){ -	Pfixedfreq=xml->getpar127("fixed_freq",Pfixedfreq); -        PfixedfreqET=xml->getpar127("fixed_freq_et",PfixedfreqET); -        PDetune=xml->getpar("detune",PDetune,0,16383); -        PCoarseDetune=xml->getpar("coarse_detune",PCoarseDetune,0,16383); -        PDetuneType=xml->getpar127("detune_type",PDetuneType); -	 -	xml->enterbranch("FREQUENCY_ENVELOPE"); -	    FreqEnvelope->getfromXML(xml); -	xml->exitbranch(); - -	xml->enterbranch("FREQUENCY_LFO"); -	    FreqLfo->getfromXML(xml); -	xml->exitbranch(); -     xml->exitbranch(); -    }; -     -    if (xml->enterbranch("FILTER_PARAMETERS")){ -	PFilterVelocityScale=xml->getpar127("velocity_sensing_amplitude",PFilterVelocityScale); -	PFilterVelocityScaleFunction=xml->getpar127("velocity_sensing",PFilterVelocityScaleFunction); -	 -	xml->enterbranch("FILTER"); -	    GlobalFilter->getfromXML(xml); -	xml->exitbranch(); -	 -	xml->enterbranch("FILTER_ENVELOPE"); -	    FilterEnvelope->getfromXML(xml); -	xml->exitbranch(); -	 -	xml->enterbranch("FILTER_LFO"); -	    FilterLfo->getfromXML(xml); -	xml->exitbranch(); -     xml->exitbranch();     -    }; -}; - - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.h deleted file mode 100644 index a2328e86..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PADnoteParameters.h +++ /dev/null @@ -1,169 +0,0 @@ -/* -  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 diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/Presets.C b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/Presets.C deleted file mode 100644 index e5f6e10c..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/Presets.C +++ /dev/null @@ -1,129 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  Presets.C - Presets and Clipboard management -  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 "Presets.h" -#include <string.h> - - -Presets::Presets(){ -    type[0]=0; -    nelement=-1; -}; - -Presets::~Presets(){ -}; - -void Presets::setpresettype(char *type){ -    strcpy(this->type,type); -}; - -void Presets::copy(const char *name){ -    XMLwrapper *xml=new XMLwrapper(); -     -    //used only for the clipboard -    if (name==NULL) xml->minimal=false; -     -    char type[MAX_PRESETTYPE_SIZE]; -    strcpy(type,this->type); -    if (nelement!=-1) strcat(type,"n"); -    if (name==NULL) { -	if (strstr(type,"Plfo")!=NULL) strcpy(type,"Plfo"); -    }; - -    xml->beginbranch(type); -    if (nelement==-1) add2XML(xml); -	else add2XMLsection(xml,nelement); -    xml->endbranch(); - -    if (name==NULL) presetsstore.copyclipboard(xml,type); -	else presetsstore.copypreset(xml,type,name); -     -    delete(xml); -    nelement=-1; -}; - -void Presets::paste(int npreset){ -    char type[MAX_PRESETTYPE_SIZE]; -    strcpy(type,this->type); -    if (nelement!=-1) strcat(type,"n"); -    if (npreset==0){ -	if (strstr(type,"Plfo")!=NULL) strcpy(type,"Plfo"); -    }; - -    XMLwrapper *xml=new XMLwrapper(); -    if (npreset==0){ -	if (!checkclipboardtype()) { -	    nelement=-1; -	    delete(xml); -	    return; -	}; -	if (!presetsstore.pasteclipboard(xml)) { -	    delete(xml); -	    nelement=-1; -	    return; -	}; -    } else { -	if (!presetsstore.pastepreset(xml,npreset)) { -	    delete(xml); -	    nelement=-1; -	    return; -	}; -    }; -     -    if (xml->enterbranch(type)==0) { -	nelement=-1; -	return; -    }; -	if (nelement==-1) { -	    defaults(); -	    getfromXML(xml); -	} else { -	    defaults(nelement); -	    getfromXMLsection(xml,nelement); -	}; -    xml->exitbranch(); -     -    delete(xml); -    nelement=-1; -}; - -bool Presets::checkclipboardtype(){ -    char type[MAX_PRESETTYPE_SIZE]; -    strcpy(type,this->type); -    if (nelement!=-1) strcat(type,"n"); - -    return(presetsstore.checkclipboardtype(type)); -}; - -void Presets::setelement(int n){ -    nelement=n; -}; - -void Presets::rescanforpresets(){ -    presetsstore.rescanforpresets(type); -}; - - -void Presets::deletepreset(int npreset){ -    presetsstore.deletepreset(npreset); -}; - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/Presets.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/Presets.h deleted file mode 100644 index d7d938d1..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/Presets.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  Presets.h - Presets and Clipboard management -  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 PRESETS_H -#define PRESETS_H - -#include "../Misc/XMLwrapper.h" - -#include "PresetsStore.h" - -class Presets{ -    public: -	Presets(); -	virtual ~Presets(); -	 -        void copy(const char *name);//if name==NULL, the clipboard is used -	void paste(int npreset);//npreset==0 for clipboard -	bool checkclipboardtype(); -	void deletepreset(int npreset); - -	char type[MAX_PRESETTYPE_SIZE]; -	void setelement(int n); -	 -	void rescanforpresets(); -	 -    protected: -	void setpresettype(char *type); -    private: -	virtual void add2XML(XMLwrapper *xml)=0; -        virtual void getfromXML(XMLwrapper *xml)=0; -	virtual void defaults()=0;	 -	virtual void add2XMLsection(XMLwrapper */*xml*/,int /*n*/){}; -        virtual void getfromXMLsection(XMLwrapper */*xml*/,int /*n*/){}; -        virtual void defaults(int /*n*/){}; -	int nelement; -}; - -#endif - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PresetsStore.C b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PresetsStore.C deleted file mode 100644 index 8bbb2bec..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PresetsStore.C +++ /dev/null @@ -1,181 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  PresetsStore.C - Presets and Clipboard store -  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 <stdlib.h> -#include <string.h> -#include <dirent.h> -#include <sys/stat.h> - -#include "PresetsStore.h" -#include "../Misc/Util.h" - -PresetsStore presetsstore; - -PresetsStore::PresetsStore(){ -    clipboard.data=NULL; -    clipboard.type[0]=0; -     -    for (int i=0;i<MAX_PRESETS;i++){ -	presets[i].file=NULL; -	presets[i].name=NULL; -    }; -     -}; - -PresetsStore::~PresetsStore(){ -    if (clipboard.data!=NULL) delete (clipboard.data); -    clearpresets(); -}; - -//Clipboard management - -void PresetsStore::copyclipboard(XMLwrapper *xml,char *type){ -    strcpy(clipboard.type,type); -    if (clipboard.data!=NULL) delete (clipboard.data); -    clipboard.data=xml->getXMLdata(); -}; - -bool PresetsStore::pasteclipboard(XMLwrapper *xml){ -    if (clipboard.data!=NULL) xml->putXMLdata(clipboard.data); -	else return(false); -    return(true);     -}; - -bool PresetsStore::checkclipboardtype(char *type){ -    //makes LFO's compatible -    if ((strstr(type,"Plfo")!=NULL)&&(strstr(clipboard.type,"Plfo")!=NULL)) return(true); -    return(strcmp(type,clipboard.type)==0); -}; - -//Presets management -void PresetsStore::clearpresets(){ -    for (int i=0;i<MAX_PRESETS;i++){ -	if (presets[i].file!=NULL) { -	    delete(presets[i].file); -	    presets[i].file=NULL; -	}; -	if (presets[i].name!=NULL) { -	    delete(presets[i].name); -	    presets[i].name=NULL; -	}; -    }; -     -}; - -//a helper function that compares 2 presets[] -int Presets_compar(const void *a,const void *b){ -    struct PresetsStore::presetstruct *p1= (PresetsStore::presetstruct *)a; -    struct PresetsStore::presetstruct *p2= (PresetsStore::presetstruct *)b; -    if (((p1->name)==NULL)||((p2->name)==NULL)) return(0); -     -    return(strcasecmp(p1->name,p2->name)<0); -}; - - -void PresetsStore::rescanforpresets(char *type){ -    clearpresets(); -    int presetk=0; -    char ftype[MAX_STRING_SIZE]; -    snprintf(ftype,MAX_STRING_SIZE,".%s.xpz",type); -         -    for (int i=0;i<MAX_BANK_ROOT_DIRS;i++){ -	if (config.cfg.presetsDirList[i]==NULL) continue; -	char *dirname=config.cfg.presetsDirList[i]; -	DIR *dir=opendir(dirname); -	if (dir==NULL) continue; -	struct dirent *fn; -	while((fn=readdir(dir))){ -	    const char *filename=fn->d_name; -	    if (strstr(filename,ftype)==NULL) continue; -	     -	     -	    presets[presetk].file=new char [MAX_STRING_SIZE]; -	    presets[presetk].name=new char [MAX_STRING_SIZE]; -	    char tmpc=dirname[strlen(dirname)-1]; -	    char *tmps="/"; -	    if ((tmpc=='/')||(tmpc=='\\')) tmps=""; -	    snprintf(presets[presetk].file,MAX_STRING_SIZE,"%s%s%s",dirname,tmps,filename); -	    snprintf(presets[presetk].name,MAX_STRING_SIZE,"%s",filename); - -	    char *tmp=strstr(presets[presetk].name,ftype); -	    if (tmp!=NULL) tmp[0]='\0'; -	    presetk++; if (presetk>=MAX_PRESETS) return; -	};	 - -	closedir(dir); -    }; - -    //sort the presets -    for (int j=0;j<MAX_PRESETS-1;j++){ -	for (int i=j+1;i<MAX_PRESETS;i++){ -	    if (Presets_compar(&presets[i],&presets[j])) { -		presetstruct tmp=presets[i]; -		presets[i]=presets[j]; -		presets[j]=tmp; -	    }; -	}; -    }; -}; - -void PresetsStore::copypreset(XMLwrapper *xml,char *type, const char *name){ -    char filename[MAX_STRING_SIZE],tmpfilename[MAX_STRING_SIZE]; -     -    if (config.cfg.presetsDirList[0]==NULL) return; -     -    snprintf(tmpfilename,MAX_STRING_SIZE,"%s",name); - -    //make the filenames legal -    for (int i=0;i<(int) strlen(tmpfilename);i++) { -	char c=tmpfilename[i]; -	if ((c>='0')&&(c<='9')) continue; -	if ((c>='A')&&(c<='Z')) continue; -	if ((c>='a')&&(c<='z')) continue; -	if ((c=='-')||(c==' ')) continue; -	tmpfilename[i]='_'; -    }; -     -    char *dirname=config.cfg.presetsDirList[0]; -    char tmpc=dirname[strlen(dirname)-1]; -    char *tmps="/"; -    if ((tmpc=='/')||(tmpc=='\\')) tmps=""; - -    snprintf(filename,MAX_STRING_SIZE,"%s%s%s.%s.xpz",dirname,tmps,name,type); -     -    xml->saveXMLfile(filename); -}; - -bool PresetsStore::pastepreset(XMLwrapper *xml, int npreset){ -    npreset--; -    if (npreset>=MAX_PRESETS) return(false); -    char *filename=presets[npreset].file; -    if (filename==NULL) return(false); -    bool result=(xml->loadXMLfile(filename)>=0); -    return(result); -}; - -void PresetsStore::deletepreset(int npreset){ -    npreset--; -    if (npreset>=MAX_PRESETS) return; -    char *filename=presets[npreset].file; -    if (filename==NULL) return; -    remove(filename); -}; - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PresetsStore.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PresetsStore.h deleted file mode 100644 index 555e20cb..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/PresetsStore.h +++ /dev/null @@ -1,63 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  PresetsStore.C - Presets and Clipboard store -  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 "../Misc/XMLwrapper.h" -#include "../Misc/Config.h" - -#define MAX_PRESETTYPE_SIZE 30 -#define MAX_PRESETS 1000 - -class PresetsStore{ -    public: -	PresetsStore(); -	~PresetsStore(); - -	//Clipboard stuff -	void copyclipboard(XMLwrapper *xml,char *type); -	bool pasteclipboard(XMLwrapper *xml); -	bool checkclipboardtype(char *type); - -	//presets stuff -	void copypreset(XMLwrapper *xml,char *type, const char *name); -	bool pastepreset(XMLwrapper *xml, int npreset); -	void deletepreset(int npreset); -	 -	struct presetstruct{ -	    char *file; -	    char *name; -	}; -	presetstruct presets[MAX_PRESETS]; - -	void rescanforpresets(char *type); -	 -    private: -	struct { -	    char *data; -	    char type[MAX_PRESETTYPE_SIZE]; -	} clipboard; -	 -	void clearpresets(); -	 -}; - -extern PresetsStore presetsstore; - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/SUBnoteParameters.C b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/SUBnoteParameters.C deleted file mode 100644 index b04b2a9f..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/SUBnoteParameters.C +++ /dev/null @@ -1,238 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  SUBnoteParameters.C - Parameters for SUBnote (SUBsynth)   -  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 "../globals.h" -#include "SUBnoteParameters.h" -#include <stdio.h> - -SUBnoteParameters::SUBnoteParameters():Presets(){ -    setpresettype("Psubsyth"); -    AmpEnvelope=new EnvelopeParams(64,1); -    AmpEnvelope->ADSRinit_dB(0,40,127,25); -    FreqEnvelope=new EnvelopeParams(64,0); -    FreqEnvelope->ASRinit(30,50,64,60); -    BandWidthEnvelope=new EnvelopeParams(64,0); -    BandWidthEnvelope->ASRinit_bw(100,70,64,60); - -    GlobalFilter=new FilterParams(2,80,40); -    GlobalFilterEnvelope=new EnvelopeParams(0,1); -    GlobalFilterEnvelope->ADSRinit_filter(64,40,64,70,60,64); -     -    defaults(); -}; - - -void SUBnoteParameters::defaults(){ -    PVolume=96;     -    PPanning=64; -    PAmpVelocityScaleFunction=90; -     -    Pfixedfreq=0; -    PfixedfreqET=0; -    Pnumstages=2; -    Pbandwidth=40; -    Phmagtype=0; -    Pbwscale=64; -    Pstereo=1; -    Pstart=1; - -    PDetune=8192; -    PCoarseDetune=0; -    PDetuneType=1; -    PFreqEnvelopeEnabled=0; -    PBandWidthEnvelopeEnabled=0; -     -    for (int n=0;n<MAX_SUB_HARMONICS;n++){ -	Phmag[n]=0; -	Phrelbw[n]=64; -    }; -    Phmag[0]=127; - -    PGlobalFilterEnabled=0; -    PGlobalFilterVelocityScale=64; -    PGlobalFilterVelocityScaleFunction=64; - -    AmpEnvelope->defaults(); -    FreqEnvelope->defaults(); -    BandWidthEnvelope->defaults(); -    GlobalFilter->defaults(); -    GlobalFilterEnvelope->defaults(); - -}; - - - -SUBnoteParameters::~SUBnoteParameters(){ -    delete (AmpEnvelope); -    delete (FreqEnvelope); -    delete (BandWidthEnvelope); -    delete (GlobalFilter); -    delete (GlobalFilterEnvelope); -}; - - - - -void SUBnoteParameters::add2XML(XMLwrapper *xml){ -    xml->addpar("num_stages",Pnumstages); -    xml->addpar("harmonic_mag_type",Phmagtype); -    xml->addpar("start",Pstart); -     -    xml->beginbranch("HARMONICS"); -	for (int i=0;i<MAX_SUB_HARMONICS;i++){ -	    if ((Phmag[i]==0)&&(xml->minimal)) continue; -	    xml->beginbranch("HARMONIC",i); -		xml->addpar("mag",Phmag[i]); -		xml->addpar("relbw",Phrelbw[i]); -	    xml->endbranch(); -	}; -    xml->endbranch(); - -    xml->beginbranch("AMPLITUDE_PARAMETERS"); -	xml->addparbool("stereo",Pstereo); -	xml->addpar("volume",PVolume); -	xml->addpar("panning",PPanning); -	xml->addpar("velocity_sensing",PAmpVelocityScaleFunction); -	xml->beginbranch("AMPLITUDE_ENVELOPE"); -	    AmpEnvelope->add2XML(xml); -	xml->endbranch(); -    xml->endbranch(); - -    xml->beginbranch("FREQUENCY_PARAMETERS"); -	xml->addparbool("fixed_freq",Pfixedfreq); -	xml->addpar("fixed_freq_et",PfixedfreqET); - -	xml->addpar("detune",PDetune); -	xml->addpar("coarse_detune",PCoarseDetune); -	xml->addpar("detune_type",PDetuneType); - -	xml->addpar("bandwidth",Pbandwidth); -	xml->addpar("bandwidth_scale",Pbwscale); - -	xml->addparbool("freq_envelope_enabled",PFreqEnvelopeEnabled); -	if ((PFreqEnvelopeEnabled!=0)||(!xml->minimal)){ -	    xml->beginbranch("FREQUENCY_ENVELOPE"); -	        FreqEnvelope->add2XML(xml); -	    xml->endbranch(); -	}; - -	xml->addparbool("band_width_envelope_enabled",PBandWidthEnvelopeEnabled); -	if ((PBandWidthEnvelopeEnabled!=0)||(!xml->minimal)){ -	    xml->beginbranch("BANDWIDTH_ENVELOPE"); -	        BandWidthEnvelope->add2XML(xml); -	    xml->endbranch(); -	}; -    xml->endbranch(); - -    xml->beginbranch("FILTER_PARAMETERS"); -	xml->addparbool("enabled",PGlobalFilterEnabled); -	if ((PGlobalFilterEnabled!=0)||(!xml->minimal)){ -	    xml->beginbranch("FILTER"); -		GlobalFilter->add2XML(xml); -	    xml->endbranch(); - -	    xml->addpar("filter_velocity_sensing",PGlobalFilterVelocityScaleFunction); -	    xml->addpar("filter_velocity_sensing_amplitude",PGlobalFilterVelocityScale); - -	    xml->beginbranch("FILTER_ENVELOPE"); -		GlobalFilterEnvelope->add2XML(xml); -	    xml->endbranch(); -	}; -    xml->endbranch(); -}; - -void SUBnoteParameters::getfromXML(XMLwrapper *xml){ -    Pnumstages=xml->getpar127("num_stages",Pnumstages); -    Phmagtype=xml->getpar127("harmonic_mag_type",Phmagtype); -    Pstart=xml->getpar127("start",Pstart); -     -    if (xml->enterbranch("HARMONICS")){ -	Phmag[0]=0; -	for (int i=0;i<MAX_SUB_HARMONICS;i++){ -	    if (xml->enterbranch("HARMONIC",i)==0) continue; -		Phmag[i]=xml->getpar127("mag",Phmag[i]); -		Phrelbw[i]=xml->getpar127("relbw",Phrelbw[i]); -	    xml->exitbranch(); -	}; -	xml->exitbranch(); -    }; - -    if (xml->enterbranch("AMPLITUDE_PARAMETERS")){ -	Pstereo=xml->getparbool("stereo",Pstereo); -	PVolume=xml->getpar127("volume",PVolume); -	PPanning=xml->getpar127("panning",PPanning); -	PAmpVelocityScaleFunction=xml->getpar127("velocity_sensing",PAmpVelocityScaleFunction); -	if (xml->enterbranch("AMPLITUDE_ENVELOPE")){ -	    AmpEnvelope->getfromXML(xml); -	    xml->exitbranch(); -	}; -	xml->exitbranch(); -    }; - -    if (xml->enterbranch("FREQUENCY_PARAMETERS")){ -	Pfixedfreq=xml->getparbool("fixed_freq",Pfixedfreq); -	PfixedfreqET=xml->getpar127("fixed_freq_et",PfixedfreqET); - -	PDetune=xml->getpar("detune",PDetune,0,16383); -	PCoarseDetune=xml->getpar("coarse_detune",PCoarseDetune,0,16383); -	PDetuneType=xml->getpar127("detune_type",PDetuneType); - -	Pbandwidth=xml->getpar127("bandwidth",Pbandwidth); -	Pbwscale=xml->getpar127("bandwidth_scale",Pbwscale); - -	PFreqEnvelopeEnabled=xml->getparbool("freq_envelope_enabled",PFreqEnvelopeEnabled); -	if (xml->enterbranch("FREQUENCY_ENVELOPE")){ -	    FreqEnvelope->getfromXML(xml); -	    xml->exitbranch(); -	}; - -	PBandWidthEnvelopeEnabled=xml->getparbool("band_width_envelope_enabled",PBandWidthEnvelopeEnabled); -	if (xml->enterbranch("BANDWIDTH_ENVELOPE")){ -	    BandWidthEnvelope->getfromXML(xml); -	    xml->exitbranch(); -	}; -     -        xml->exitbranch(); -    }; -     -    if (xml->enterbranch("FILTER_PARAMETERS")){ -	PGlobalFilterEnabled=xml->getparbool("enabled",PGlobalFilterEnabled); -	if (xml->enterbranch("FILTER")){ -	    GlobalFilter->getfromXML(xml); -	    xml->exitbranch(); -	}; - -	PGlobalFilterVelocityScaleFunction=xml->getpar127("filter_velocity_sensing",PGlobalFilterVelocityScaleFunction); -	PGlobalFilterVelocityScale=xml->getpar127("filter_velocity_sensing_amplitude",PGlobalFilterVelocityScale); - -	if (xml->enterbranch("FILTER_ENVELOPE")){ -	    GlobalFilterEnvelope->getfromXML(xml); -	    xml->exitbranch(); -	}; -	 -	xml->exitbranch(); -    }; -}; - - - - diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/SUBnoteParameters.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/SUBnoteParameters.h deleted file mode 100644 index a506a260..00000000 --- a/attic/muse_qt4_evolution/synti/zynaddsubfx/Params/SUBnoteParameters.h +++ /dev/null @@ -1,105 +0,0 @@ -/* -  ZynAddSubFX - a software synthesizer -  -  SUBnoteParameters.h - Parameters for SUBnote (SUBsynth)   -  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 SUB_NOTE_PARAMETERS_H -#define SUB_NOTE_PARAMETERS_H - -#include "../globals.h" -#include "../Misc/XMLwrapper.h" -#include "EnvelopeParams.h" -#include "FilterParams.h" -#include "Presets.h" - -class SUBnoteParameters:public Presets{ -    public: -	SUBnoteParameters(); -	~SUBnoteParameters(); - -	void add2XML(XMLwrapper *xml); -	void defaults(); -	void getfromXML(XMLwrapper *xml); -	 -	//Parameters -	//AMPLITUDE PARAMETRERS -	unsigned char Pstereo;//0 for mono,1 for stereo -	unsigned char PVolume; -	unsigned char PPanning; -	unsigned char PAmpVelocityScaleFunction; -	EnvelopeParams *AmpEnvelope; - -	//Frequency Parameters -        unsigned short int PDetune; -        unsigned short int PCoarseDetune; -        unsigned char PDetuneType; -	unsigned char PFreqEnvelopeEnabled; -	EnvelopeParams *FreqEnvelope; -	unsigned char PBandWidthEnvelopeEnabled; -	EnvelopeParams *BandWidthEnvelope; -	 -	//Filter Parameters (Global) -	unsigned char PGlobalFilterEnabled; -	FilterParams *GlobalFilter; -	unsigned char PGlobalFilterVelocityScale;  -	unsigned char PGlobalFilterVelocityScaleFunction; -	EnvelopeParams *GlobalFilterEnvelope; -	 -	 -        //Other 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; - -		 -	//how many times the filters are applied		 -	unsigned char Pnumstages; - -	//bandwidth -        unsigned char Pbandwidth; - -	//How the magnitudes are computed (0=linear,1=-60dB,2=-60dB) -	unsigned char Phmagtype; -	 -	//Magnitudes -	unsigned char Phmag[MAX_SUB_HARMONICS]; -	 -	//Relative BandWidth ("64"=1.0)	 -	unsigned char Phrelbw[MAX_SUB_HARMONICS]; - -	//how much the bandwidth is increased according to lower/higher frequency; 64-default -	unsigned char Pbwscale; - -	//how the harmonics start("0"=0,"1"=random,"2"=1) -	unsigned char Pstart; -	 -	 -    private: -}; - -#endif - - - | 
