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 Resonance::add2XML(XMLwrapper& xml) { xml.addparbool("enabled", Penabled); if((Penabled == 0) && (xml.minimal)) return; xml.addpar("max_db", PmaxdB); xml.addpar("center_freq", Pcenterfreq); xml.addpar("octaves_freq", Poctavesfreq); xml.addparbool("protect_fundamental_frequency", Pprotectthefundamental); xml.addpar("resonance_points", N_RES_POINTS); for(int i = 0; i < N_RES_POINTS; ++i) { xml.beginbranch("RESPOINT", i); xml.addpar("val", Prespoints[i]); xml.endbranch(); } }
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 Microtonal::add2XML(XMLwrapper& xml) const { xml.addparstr("name", (char *) Pname); xml.addparstr("comment", (char *) Pcomment); xml.addparbool("invert_up_down", Pinvertupdown); xml.addpar("invert_up_down_center", Pinvertupdowncenter); xml.addparbool("enabled", Penabled); xml.addpar("global_fine_detune", Pglobalfinedetune); xml.addpar("a_note", PAnote); xml.addparreal("a_freq", PAfreq); if((Penabled == 0) && (xml.minimal)) return; xml.beginbranch("SCALE"); xml.addpar("scale_shift", Pscaleshift); xml.addpar("first_key", Pfirstkey); xml.addpar("last_key", Plastkey); xml.addpar("middle_note", Pmiddlenote); xml.beginbranch("OCTAVE"); xml.addpar("octave_size", octavesize); for(int i = 0; i < octavesize; ++i) { xml.beginbranch("DEGREE", i); if(octave[i].type == 1) xml.addparreal("cents", octave[i].tuning); ; if(octave[i].type == 2) { xml.addpar("numerator", octave[i].x1); xml.addpar("denominator", octave[i].x2); } xml.endbranch(); } xml.endbranch(); xml.beginbranch("KEYBOARD_MAPPING"); xml.addpar("map_size", Pmapsize); xml.addpar("mapping_enabled", Pmappingenabled); for(int i = 0; i < Pmapsize; ++i) { xml.beginbranch("KEYMAP", i); xml.addpar("degree", Pmapping[i]); xml.endbranch(); } xml.endbranch(); xml.endbranch(); }
void Config::saveConfig(const char *filename) const { XMLwrapper *xmlcfg = new XMLwrapper(); xmlcfg->beginbranch("CONFIGURATION"); xmlcfg->addpar("sample_rate", cfg.SampleRate); xmlcfg->addpar("sound_buffer_size", cfg.SoundBufferSize); xmlcfg->addpar("oscil_size", cfg.OscilSize); xmlcfg->addpar("swap_stereo", cfg.SwapStereo); xmlcfg->addpar("bank_window_auto_close", cfg.BankUIAutoClose); xmlcfg->addpar("gzip_compression", cfg.GzipCompression); xmlcfg->addpar("check_pad_synth", cfg.CheckPADsynth); xmlcfg->addpar("ignore_program_change", cfg.IgnoreProgramChange); xmlcfg->addparstr("bank_current", cfg.currentBankDir); xmlcfg->addpar("user_interface_mode", cfg.UserInterfaceMode); xmlcfg->addpar("virtual_keyboard_layout", cfg.VirKeybLayout); for(int i = 0; i < MAX_BANK_ROOT_DIRS; ++i) if(!cfg.bankRootDirList[i].empty()) { xmlcfg->beginbranch("BANKROOT", i); xmlcfg->addparstr("bank_root", cfg.bankRootDirList[i]); xmlcfg->endbranch(); } for(int i = 0; i < MAX_BANK_ROOT_DIRS; ++i) if(!cfg.presetsDirList[i].empty()) { xmlcfg->beginbranch("PRESETSROOT", i); xmlcfg->addparstr("presets_root", cfg.presetsDirList[i]); xmlcfg->endbranch(); } xmlcfg->addpar("interpolation", cfg.Interpolation); //linux stuff xmlcfg->addparstr("linux_oss_wave_out_dev", cfg.oss_devs.linux_wave_out); xmlcfg->addparstr("linux_oss_seq_in_dev", cfg.oss_devs.linux_seq_in); //windows stuff xmlcfg->addpar("windows_wave_out_id", cfg.WindowsWaveOutId); xmlcfg->addpar("windows_midi_in_id", cfg.WindowsMidiInId); xmlcfg->endbranch(); // for some reason (which one?), the gzip compression is bashed to 0 xmlcfg->saveXMLfile(filename, 0); delete (xmlcfg); }
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 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("bend_adjust", PBendAdjust); xml.addpar("offset_hz", POffsetHz); xml.addpar("detune", PDetune); xml.addpar("coarse_detune", PCoarseDetune); xml.addpar("overtone_spread_type", POvertoneSpread.type); xml.addpar("overtone_spread_par1", POvertoneSpread.par1); xml.addpar("overtone_spread_par2", POvertoneSpread.par2); xml.addpar("overtone_spread_par3", POvertoneSpread.par3); 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 Controller::add2XML(XMLwrapper& xml) { xml.addpar("pitchwheel_bendrange", pitchwheel.bendrange); xml.addpar("pitchwheel_bendrange_down", pitchwheel.bendrange_down); xml.addparbool("pitchwheel_split", pitchwheel.is_split); 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("portamento_proportional", portamento.proportional); xml.addpar("portamento_proprate", portamento.propRate); xml.addpar("portamento_propdepth", portamento.propDepth); xml.addpar("resonance_center_depth", resonancecenter.depth); xml.addpar("resonance_bandwidth_depth", resonancebandwidth.depth); }
void Config::saveConfig(const char *filename) { XMLwrapper *xmlcfg = new XMLwrapper(); xmlcfg->beginbranch("CONFIGURATION"); xmlcfg->addpar("sample_rate", cfg.SampleRate); xmlcfg->addpar("sound_buffer_size", cfg.SoundBufferSize); xmlcfg->addpar("oscil_size", cfg.OscilSize); xmlcfg->addpar("swap_stereo", cfg.SwapStereo); xmlcfg->addpar("bank_window_auto_close", cfg.BankUIAutoClose); xmlcfg->addpar("dump_notes_to_file", cfg.DumpNotesToFile); xmlcfg->addpar("dump_append", cfg.DumpAppend); xmlcfg->addparstr("dump_file", cfg.DumpFile); xmlcfg->addpar("gzip_compression", cfg.GzipCompression); xmlcfg->addpar("check_pad_synth", cfg.CheckPADsynth); xmlcfg->addparstr("bank_current", cfg.currentBankDir); xmlcfg->addpar("user_interface_mode", cfg.UserInterfaceMode); xmlcfg->addpar("virtual_keyboard_layout", cfg.VirKeybLayout); for(int i = 0; i < MAX_BANK_ROOT_DIRS; i++) if(cfg.bankRootDirList[i] != NULL) { xmlcfg->beginbranch("BANKROOT", i); xmlcfg->addparstr("bank_root", cfg.bankRootDirList[i]); xmlcfg->endbranch(); } ; for(int i = 0; i < MAX_BANK_ROOT_DIRS; i++) if(cfg.presetsDirList[i] != NULL) { xmlcfg->beginbranch("PRESETSROOT", i); xmlcfg->addparstr("presets_root", cfg.presetsDirList[i]); xmlcfg->endbranch(); } ; xmlcfg->addpar("interpolation", cfg.Interpolation); //linux stuff xmlcfg->addparstr("linux_oss_wave_out_dev", cfg.LinuxOSSWaveOutDev); xmlcfg->addparstr("linux_oss_seq_in_dev", cfg.LinuxOSSSeqInDev); //windows stuff xmlcfg->addpar("windows_wave_out_id", cfg.WindowsWaveOutId); xmlcfg->addpar("windows_midi_in_id", cfg.WindowsMidiInId); xmlcfg->endbranch(); int tmp = cfg.GzipCompression; cfg.GzipCompression = 0; xmlcfg->saveXMLfile(filename); cfg.GzipCompression = tmp; delete (xmlcfg); }