zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit 8e460d4b56293d194fa05d1b0f15d8b968885e82
parent 7a35ef743b02e26af53d8f74eba6cd909614a5ed
Author: paulnasca <paulnasca>
Date:   Sat, 14 Feb 2004 08:31:12 +0000

*** empty log message ***

Diffstat:
MChangeLog | 2++
Msrc/Misc/Master.C | 7+++----
Msrc/Misc/Master.h | 2+-
Msrc/Misc/Part.C | 17+++++++++++++++++
Msrc/Misc/Part.h | 1+
Msrc/Misc/XMLwrapper.C | 2+-
Msrc/Misc/XMLwrapper.h | 2+-
Msrc/UI/MasterUI.fl | 27+++++++++++++++++++++++++--
8 files changed, 51 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -533,3 +533,5 @@ 11 Feb 2004 - Se pot incarca cativa parametrii de la master 12 Feb 2004 - Continuat incarcarea parametrilor XML si la part (neterminat) 13 Feb 2004 - Terminat de adaugat parametrii la incarcarea XML +14 Feb 2004 - Se poate incarca si instrumente + diff --git a/src/Misc/Master.C b/src/Misc/Master.C @@ -804,14 +804,15 @@ int Master::loadXML(char *filename){ return(-1); }; - getfromXML(xml); + if (xml->enterbranch("MASTER")==0) return(-10); + getfromXML(xml); + xml->exitbranch(); delete(xml); return(0); }; void Master::getfromXML(XMLwrapper *xml){ - if (xml->enterbranch("MASTER")==0) return; setPvolume(xml->getpar127("volume",Pvolume)); setPkeyshift(xml->getpar127("key_shift",Pkeyshift)); @@ -829,8 +830,6 @@ void Master::getfromXML(XMLwrapper *xml){ xml->exitbranch(); }; - - if (xml->enterbranch("SYSTEM_EFFECTS")){ for (int nefx=0;nefx<NUM_SYS_EFX;nefx++){ if (xml->enterbranch("SYSTEM_EFFECT",nefx)==0) continue; diff --git a/src/Misc/Master.h b/src/Misc/Master.h @@ -54,7 +54,7 @@ class Master{ void defaults(); - //saves all settings to a XML file + //loads all settings from a XML file //returns 0 for ok or -1 if there is an error int loadXML(char *filename); diff --git a/src/Misc/Part.C b/src/Misc/Part.C @@ -1048,6 +1048,23 @@ int Part::saveXML(char *filename){ return(0); }; +int Part::loadXMLinstrument(const char *filename){ + XMLwrapper *xml=new XMLwrapper(); + if (xml->loadXMLfile(filename)<0) { + delete(xml); + return(-1); + }; + + if (xml->enterbranch("INSTRUMENT")==0) return(-10); + getfromXMLinstrument(xml); + xml->exitbranch(); + + delete(xml); + return(0); +}; + + + void Part::getfromXMLinstrument(XMLwrapper *xml){ if (xml->enterbranch("INFO")){ diff --git a/src/Misc/Part.h b/src/Misc/Part.h @@ -60,6 +60,7 @@ class Part{ //saves the instrument settings to a XML file //returns 0 for ok, 1 if there is a existing file or -1 if there is an error int saveXML(char *filename); + int loadXMLinstrument(const char *filename); void add2XML(XMLwrapper *xml); void add2XMLinstrument(XMLwrapper *xml); diff --git a/src/Misc/XMLwrapper.C b/src/Misc/XMLwrapper.C @@ -132,7 +132,7 @@ void XMLwrapper::endbranch(){ /* LOAD XML members */ -int XMLwrapper::loadXMLfile(char *filename){ +int XMLwrapper::loadXMLfile(const char *filename){ if (tree!=NULL) mxmlDelete(tree); tree=NULL; diff --git a/src/Misc/XMLwrapper.h b/src/Misc/XMLwrapper.h @@ -68,7 +68,7 @@ class XMLwrapper{ /********************************/ //returns 0 if ok or -1 if the file cannot be loaded - int loadXMLfile(char *filename); + int loadXMLfile(const char *filename); //enter into the branch //returns 1 if is ok, or 0 otherwise diff --git a/src/UI/MasterUI.fl b/src/UI/MasterUI.fl @@ -379,7 +379,7 @@ if (fl_ask("Exit and leave the unsaved data?")) *exitprogram=1; xywh {0 0 690 25} } { submenu {} { - label {&File} open + label {&File} xywh {0 0 100 20} } { menuitem {} { @@ -593,7 +593,30 @@ master->part[npart]->saveXML(filename); pthread_mutex_unlock(&master->mutex); updatepanel();} - xywh {20 20 100 20} divider + xywh {20 20 100 20} + } + menuitem {} { + label {&Load XML Instrument...} + callback {const char *filename; +filename=fl_file_chooser("Load:","(*.xml)",NULL,0); +if (filename==NULL) return; + + + +pthread_mutex_lock(&master->mutex); + int npart=(int)npartcounter->value(); + + //clear all instrument parameters, first + master->part[npart]->defaultsinstrument(); + + //load the instr. parameters + master->part[npart]->loadXMLinstrument(filename); + +pthread_mutex_unlock(&master->mutex); + +npartcounter->do_callback(); +updatepanel();} selected + xywh {30 30 100 20} divider } menuitem {} { label {&New Instrument...}