|
- /*
- ZynAddSubFX - a software synthesizer
-
- SUBnoteParameters.cpp - 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 or later) 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();
- }
- }
|