zynaddsubfx

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

commit 687b66d44af5a1caa02e99b082ff70771cdd7aec
parent 8f6e2367c828b9389b9a688b34b8156b891d3464
Author: paulnasca <paulnasca>
Date:   Tue,  3 Feb 2004 20:37:59 +0000

*** empty log message ***

Diffstat:
MChangeLog | 2++
Msrc/Misc/Master.C | 33++++++++++++++++++++++++---------
Msrc/Misc/Master.h | 4++++
Msrc/Misc/Part.C | 55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/Misc/Part.h | 6+++++-
5 files changed, 90 insertions(+), 10 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -520,3 +520,5 @@ - Inceput sa adaug suportul XML 02 Feb 2003 - Corectata o eroare care facea ca numele la instrumentele din bank sa fie aratate gresit (nu era pus un \0 ) - Continuat suportul de XML +03 Feb 2003 - Continuat de scris suportul XML - inceput sa salvezi cativa parametrii + diff --git a/src/Misc/Master.C b/src/Misc/Master.C @@ -22,7 +22,6 @@ */ #include "Master.h" -#include "XMLwrapper.h" #include <stdio.h> @@ -136,7 +135,7 @@ void Master::NoteOff(unsigned char chan,unsigned char note){ }; /* - * Internal Note Off + * Internal Note Off */ void Master::noteoff(unsigned char chan,unsigned char note){ int npart; @@ -181,7 +180,7 @@ void Master::setcontroller(unsigned char chan,unsigned int type,int par){ }; }; - } else {//other controllers + } else {//other controllers for (int npart=0;npart<NUM_MIDI_PARTS;npart++){//Send the controller to all part assigned to the channel if ((chan==part[npart]->Prcvchn) && (part[npart]->Penabled!=0)) part[npart]->SetController(type,par); @@ -226,7 +225,7 @@ void Master::AudioOut(REALTYPE *outl,REALTYPE *outr){ if (again<=0) break; }; //test end - + //Swaps the Left channel with Right Channel (if it is asked for) if (swaplr!=0){ @@ -684,7 +683,7 @@ void Master::saveloadbuf(Buffer *buf){ }; }; - + if (buf->getmode()!=0) { unsigned char tmp=0xff; buf->rwbyte(&tmp); @@ -693,6 +692,21 @@ void Master::saveloadbuf(Buffer *buf){ +void Master::add2XML(XMLwrapper *xml){ + //parameters + xml->addpar("volume",Pvolume); + xml->addpar("keyshift",Pkeyshift); + xml->addparbool("NRPNreceive",ctl.NRPN.receive); + + //Save all parts + + for (int npart=0;npart<NUM_MIDI_PARTS;npart++){ + xml->beginbranch("PART","npart",npart); + part[npart]->add2XML(xml); + xml->endbranch(); + }; +}; + int Master::saveXML(char *filename){ @@ -700,10 +714,11 @@ int Master::saveXML(char *filename){ XMLwrapper *xml; xml=new XMLwrapper(); - - - - + + xml->beginbranch("MASTER"); + add2XML(xml); + xml->endbranch(); + xml->saveXMLfile(filename,0); delete (xml); return(0); diff --git a/src/Misc/Master.h b/src/Misc/Master.h @@ -34,6 +34,7 @@ #include "Bank.h" #include "Dump.h" #include "../Seq/Sequencer.h" +#include "XMLwrapper.h" extern Dump dump; class Master{ @@ -45,6 +46,9 @@ class Master{ //saves all 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); + + //this adds the parameters to the XML data + void add2XML(XMLwrapper *xml); //Midi IN void NoteOn(unsigned char chan,unsigned char note,unsigned char velocity); diff --git a/src/Misc/Part.C b/src/Misc/Part.C @@ -910,6 +910,61 @@ void Part::saveloadbuf(Buffer *buf,int instrumentonly){ }; +/* + unsigned char Pkitmode;//if the kitmode is enabled + unsigned char Pdrummode;//if all keys are mapped and the system is 12tET (used for drums) + +*/ + +void Part::add2XMLinstrument(XMLwrapper *xml){ + xml->addparstr("name",(char *)Pname); + xml->addpar("kitmode",Pkitmode); + xml->addparbool("drummode",Pdrummode); + +}; + + +void Part::add2XML(XMLwrapper *xml){ + //parameters + xml->addparbool("enabled",Penabled); + if (Penabled==0) return; + + xml->addpar("volume",Pvolume); + xml->addpar("panning",Ppanning); + + xml->addpar("minkey",Pminkey); + xml->addpar("maxkey",Pmaxkey); + xml->addpar("keyshift",Pkeyshift); + xml->addpar("rcvchn",Prcvchn); + + xml->addpar("velsns",Pvelsns); + xml->addpar("veloffs",Pveloffs); + + xml->addpar("noteon",Pnoteon); + xml->addparbool("polymode",Ppolymode); + xml->addpar("keylimit",Pkeylimit); +// xml->addpar("",P); + + + + + xml->beginbranch("INSTRUMENT"); + add2XMLinstrument(xml); + xml->endbranch(); + + + +// xml->addpar("volume",Pvolume); +// xml->addpar("keyshift",Pkeyshift); + +// for (int npart=0;npart<NUM_MIDI_PARTS;npart++){ +// xml->addpart(npart); + + + +// xml->endbranch(); +// }; +}; diff --git a/src/Misc/Part.h b/src/Misc/Part.h @@ -34,6 +34,7 @@ #include "../Misc/Microtonal.h" #include "../DSP/FFTwrapper.h" #include "../Effects/EffectMgr.h" +#include "XMLwrapper.h" class Part{ @@ -55,6 +56,9 @@ class Part{ void saveloadbuf(Buffer *buf,int instrumentonly); //instrumentonly: 0 - save all, 1 - save only instrumnet, 2 - save only instrument without the name(used in bank) + void add2XML(XMLwrapper *xml); + void add2XMLinstrument(XMLwrapper *xml); + void saveloadbufkititem(Buffer *buf,unsigned char item,int saveitem0); void swapcopyitem(int item1,int item2,int mode); @@ -79,10 +83,10 @@ class Part{ void setkititemstatus(int kititem,int Penabled_); unsigned char Penabled;//if the part is enabled + unsigned char Pvolume;//part volume unsigned char Pminkey;//the minimum key that the part receives noteon messages unsigned char Pmaxkey;//the maximum key that the part receives noteon messages unsigned char *Pname; //name of the instrument - unsigned char Pvolume;//part volume void setPvolume(char Pvolume); unsigned char Pkeyshift;//Part keyshift unsigned char Prcvchn;//from what midi channel it receive commnads