diff -rupN original/Misc/Bank.C new/Misc/Bank.C
--- original/Misc/Bank.C	2008-01-02 13:41:41.000000000 +0000
+++ new/Misc/Bank.C	2009-01-12 17:08:15.132121872 +0000
@@ -436,7 +436,7 @@ void Bank::scanrootdir(char *rootdir){
 	char name[maxdirsize];	
     }bank;
 
-    char *separator="/";
+    const char *separator="/";
     if (strlen(rootdir)) {
 	char tmp=rootdir[strlen(rootdir)-1];
 	if ((tmp=='/') || (tmp=='\\')) separator="";
diff -rupN original/Misc/XMLwrapper.C new/Misc/XMLwrapper.C
--- original/Misc/XMLwrapper.C	2008-01-02 13:41:41.000000000 +0000
+++ new/Misc/XMLwrapper.C	2009-01-12 16:52:37.676500061 +0000
@@ -110,7 +110,7 @@ XMLwrapper::~XMLwrapper(){
     if (tree!=NULL) mxmlDelete(tree);
 };
 
-bool XMLwrapper::checkfileinformation(char *filename){
+bool XMLwrapper::checkfileinformation(const char *filename){
     stackpos=0;
     ZERO(&parentstack,(int)sizeof(parentstack));
     information.PADsynth_used=false;
@@ -162,7 +162,7 @@ bool XMLwrapper::checkfileinformation(ch
 
 /* SAVE XML members */
 
-int XMLwrapper::saveXMLfile(char *filename){
+int XMLwrapper::saveXMLfile(const char *filename){
     char *xmldata=getXMLdata();
     if (xmldata==NULL) return(-2);
 
@@ -196,7 +196,7 @@ char *XMLwrapper::getXMLdata(){
 };
 
 
-int XMLwrapper::dosavefile(char *filename,int compression,char *xmldata){
+int XMLwrapper::dosavefile(const char *filename,int compression,const char *xmldata){
     if (compression==0){
 	FILE *file;
 	file=fopen(filename,"w");
@@ -221,32 +221,32 @@ int XMLwrapper::dosavefile(char *filenam
 
 
 
-void XMLwrapper::addpar(char *name,int val){
+void XMLwrapper::addpar(const char *name,int val){
     addparams2("par","name",name,"value",int2str(val));
 };
 
-void XMLwrapper::addparreal(char *name,REALTYPE val){
+void XMLwrapper::addparreal(const char *name,REALTYPE val){
     addparams2("par_real","name",name,"value",real2str(val));
 };
 
-void XMLwrapper::addparbool(char *name,int val){
+void XMLwrapper::addparbool(const char *name,int val){
     if (val!=0) addparams2("par_bool","name",name,"value","yes");
 	else addparams2("par_bool","name",name,"value","no");
 };
 
-void XMLwrapper::addparstr(char *name,char *val){
+void XMLwrapper::addparstr(const char *name,const char *val){
     mxml_node_t *element=mxmlNewElement(node,"string");
     mxmlElementSetAttr(element,"name",name);
     mxmlNewText(element,0,val);
 };
 
 
-void XMLwrapper::beginbranch(char *name){
+void XMLwrapper::beginbranch(const char *name){
     push(node);
     node=addparams0(name);
 };
 
-void XMLwrapper::beginbranch(char *name,int id){
+void XMLwrapper::beginbranch(const char *name,int id){
     push(node);
     node=addparams1(name,"id",int2str(id));
 };
@@ -333,7 +333,7 @@ char *XMLwrapper::doloadfile(const char 
     }; 
 };
 
-bool XMLwrapper::putXMLdata(char *xmldata){
+bool XMLwrapper::putXMLdata(const char *xmldata){
     if (tree!=NULL) mxmlDelete(tree);
     tree=NULL;
 
@@ -357,7 +357,7 @@ bool XMLwrapper::putXMLdata(char *xmldat
 
 
 
-int XMLwrapper::enterbranch(char *name){
+int XMLwrapper::enterbranch(const char *name){
     node=mxmlFindElement(peek(),peek(),name,NULL,NULL,MXML_DESCEND_FIRST);
     if (node==NULL) return(0);
 
@@ -365,7 +365,7 @@ int XMLwrapper::enterbranch(char *name){
     return(1);
 };
 
-int XMLwrapper::enterbranch(char *name,int id){
+int XMLwrapper::enterbranch(const char *name,int id){
     snprintf(tmpstr,TMPSTR_SIZE,"%d",id);
     node=mxmlFindElement(peek(),peek(),name,"id",tmpstr,MXML_DESCEND_FIRST);
     if (node==NULL) return(0);
@@ -390,7 +390,7 @@ int XMLwrapper::getbranchid(int min, int
     return(id);
 };
 
-int XMLwrapper::getpar(char *name,int defaultpar,int min,int max){
+int XMLwrapper::getpar(const char *name,int defaultpar,int min,int max){
     node=mxmlFindElement(peek(),peek(),"par","name",name,MXML_DESCEND_FIRST);
     if (node==NULL) return(defaultpar);
 
@@ -404,11 +404,11 @@ int XMLwrapper::getpar(char *name,int de
     return(val);
 };
 
-int XMLwrapper::getpar127(char *name,int defaultpar){
+int XMLwrapper::getpar127(const char *name,int defaultpar){
     return(getpar(name,defaultpar,0,127));
 };
 
-int XMLwrapper::getparbool(char *name,int defaultpar){
+int XMLwrapper::getparbool(const char *name,int defaultpar){
     node=mxmlFindElement(peek(),peek(),"par_bool","name",name,MXML_DESCEND_FIRST);
     if (node==NULL) return(defaultpar);
 
@@ -419,7 +419,7 @@ int XMLwrapper::getparbool(char *name,in
 	else return(0);
 };
 
-void XMLwrapper::getparstr(char *name,char *par,int maxstrlen){
+void XMLwrapper::getparstr(const char *name,char *par,int maxstrlen){
     ZERO(par,maxstrlen);
     node=mxmlFindElement(peek(),peek(),"string","name",name,MXML_DESCEND_FIRST);
     
@@ -431,7 +431,7 @@ void XMLwrapper::getparstr(char *name,ch
     
 };
 
-REALTYPE XMLwrapper::getparreal(char *name,REALTYPE defaultpar){
+REALTYPE XMLwrapper::getparreal(const char *name,REALTYPE defaultpar){
     node=mxmlFindElement(peek(),peek(),"par_real","name",name,MXML_DESCEND_FIRST);
     if (node==NULL) return(defaultpar);
 
@@ -441,7 +441,7 @@ REALTYPE XMLwrapper::getparreal(char *na
     return(str2real(strval));
 };
 
-REALTYPE XMLwrapper::getparreal(char *name,REALTYPE defaultpar,REALTYPE min,REALTYPE max){
+REALTYPE XMLwrapper::getparreal(const char *name,REALTYPE defaultpar,REALTYPE min,REALTYPE max){
     REALTYPE result=getparreal(name,defaultpar);
     
     if (result<min) result=min;
@@ -475,18 +475,18 @@ REALTYPE XMLwrapper::str2real(const char
 };
 
 
-mxml_node_t *XMLwrapper::addparams0(char *name){
+mxml_node_t *XMLwrapper::addparams0(const char *name){
     mxml_node_t *element=mxmlNewElement(node,name);
     return(element);
 };
 
-mxml_node_t *XMLwrapper::addparams1(char *name,char *par1,char *val1){
+mxml_node_t *XMLwrapper::addparams1(const char *name,const char *par1,const char *val1){
     mxml_node_t *element=mxmlNewElement(node,name);
     mxmlElementSetAttr(element,par1,val1);
     return(element);
 };
 
-mxml_node_t *XMLwrapper::addparams2(char *name,char *par1,char *val1,char *par2, char *val2){
+mxml_node_t *XMLwrapper::addparams2(const char *name,const char *par1,const char *val1,const char *par2, const char *val2){
     mxml_node_t *element=mxmlNewElement(node,name);
     mxmlElementSetAttr(element,par1,val1);
     mxmlElementSetAttr(element,par2,val2);
diff -rupN original/Misc/XMLwrapper.h new/Misc/XMLwrapper.h
--- original/Misc/XMLwrapper.h	2007-09-09 19:49:21.000000000 +0000
+++ new/Misc/XMLwrapper.h	2009-01-12 16:53:23.331676706 +0000
@@ -43,26 +43,26 @@ class XMLwrapper{
 	/********************************/
 
 	//returns 0 if ok or -1 if the file cannot be saved
-	int saveXMLfile(char *filename);
+	int saveXMLfile(const char *filename);
 
 	//returns the new allocated string that contains the XML data (used for clipboard)
 	//the string is NULL terminated
 	char *getXMLdata();
 	
 	//add simple parameter (name and value)
-	void addpar(char *name,int val);
-	void addparreal(char *name,REALTYPE val);
+	void addpar(const char *name,int val);
+	void addparreal(const char *name,REALTYPE val);
 	
 	//add boolean parameter (name and boolean value)
 	//if the value is 0 => "yes", else "no"
-	void addparbool(char *name,int val);
+	void addparbool(const char *name,int val);
 
 	//add string parameter (name and string)
-	void addparstr(char *name,char *val);
+	void addparstr(const char *name,const char *val);
 
 	//add a branch
-	void beginbranch(char *name);
-	void beginbranch(char *name, int id);
+	void beginbranch(const char *name);
+	void beginbranch(const char *name, int id);
 
 	//this must be called after each branch (nodes that contains child nodes)
 	void endbranch();
@@ -75,16 +75,16 @@ class XMLwrapper{
 	int loadXMLfile(const char *filename);
 
 	//used by the clipboard
-	bool putXMLdata(char *xmldata);
+	bool putXMLdata(const char *xmldata);
     
 	//enter into the branch
 	//returns 1 if is ok, or 0 otherwise
-	int enterbranch(char *name);
+	int enterbranch(const char *name);
 
 		
 	//enter into the branch with id
 	//returns 1 if is ok, or 0 otherwise
-	int enterbranch(char *name, int id);
+	int enterbranch(const char *name, int id);
 
 	//exits from a branch
 	void exitbranch();
@@ -98,16 +98,16 @@ class XMLwrapper{
 	//it returns the parameter and limits it between min and max
 	//if min==max==0, it will not limit it
 	//if no parameter will be here, the defaultpar will be returned
-	int getpar(char *name,int defaultpar,int min,int max);
+	int getpar(const char *name,int defaultpar,int min,int max);
 
 	//the same as getpar, but the limits are 0 and 127
-	int getpar127(char *name,int defaultpar);
+	int getpar127(const char *name,int defaultpar);
 	
-	int getparbool(char *name,int defaultpar);
+	int getparbool(const char *name,int defaultpar);
 
-	void getparstr(char *name,char *par,int maxstrlen);
-	REALTYPE getparreal(char *name,REALTYPE defaultpar);
-	REALTYPE getparreal(char *name,REALTYPE defaultpar,REALTYPE min,REALTYPE max);
+	void getparstr(const char *name,char *par,int maxstrlen);
+	REALTYPE getparreal(const char *name,REALTYPE defaultpar);
+	REALTYPE getparreal(const char *name,REALTYPE defaultpar,REALTYPE min,REALTYPE max);
 
 	bool minimal;//false if all parameters will be stored (used only for clipboard)
 	
@@ -117,11 +117,11 @@ class XMLwrapper{
 	
 	//opens a file and parse only the "information" data on it
 	//returns "true" if all went ok or "false" on errors
-	bool checkfileinformation(char *filename);
+	bool checkfileinformation(const char *filename);
 	
     private:
     
-	int dosavefile(char *filename,int compression,char *xmldata);
+	int dosavefile(const char *filename,int compression,const char *xmldata);
 	char *doloadfile(const char *filename);
 
     
@@ -133,17 +133,17 @@ class XMLwrapper{
 	//adds params like this:
 	// <name>
 	//returns the node
-	mxml_node_t *addparams0(char *name);
+	mxml_node_t *addparams0(const char *name);
 
 	//adds params like this:
 	// <name par1="val1">
 	//returns the node
-	mxml_node_t *addparams1(char *name,char *par1,char *val1);
+	mxml_node_t *addparams1(const char *name,const char *par1,const char *val1);
 
 	//adds params like this:
 	// <name par1="val1" par2="val2">
 	//returns the node
-	mxml_node_t *addparams2(char *name,char *par1,char *val1,char *par2, char *val2);
+	mxml_node_t *addparams2(const char *name,const char *par1,const char *val1,const char *par2, const char *val2);
 	
 	char *int2str(int x);
 	char *real2str(REALTYPE x);
diff -rupN original/Params/Presets.C new/Params/Presets.C
--- original/Params/Presets.C	2007-09-09 19:49:22.000000000 +0000
+++ new/Params/Presets.C	2009-01-12 17:04:17.644276919 +0000
@@ -32,7 +32,7 @@ Presets::Presets(){
 Presets::~Presets(){
 };
 
-void Presets::setpresettype(char *type){
+void Presets::setpresettype(const char *type){
     strcpy(this->type,type);
 };
 
diff -rupN original/Params/Presets.h new/Params/Presets.h
--- original/Params/Presets.h	2007-09-09 19:49:22.000000000 +0000
+++ new/Params/Presets.h	2009-01-12 17:03:36.404997119 +0000
@@ -43,7 +43,7 @@ class Presets{
 	void rescanforpresets();
 	
     protected:
-	void setpresettype(char *type);
+	void setpresettype(const char *type);
     private:
 	virtual void add2XML(XMLwrapper *xml)=0;
         virtual void getfromXML(XMLwrapper *xml)=0;
diff -rupN original/Params/PresetsStore.C new/Params/PresetsStore.C
--- original/Params/PresetsStore.C	2007-09-09 19:49:22.000000000 +0000
+++ new/Params/PresetsStore.C	2009-01-12 17:00:50.423895168 +0000
@@ -110,8 +110,9 @@ void PresetsStore::rescanforpresets(char
 	    presets[presetk].file=new char [MAX_STRING_SIZE];
 	    presets[presetk].name=new char [MAX_STRING_SIZE];
 	    char tmpc=dirname[strlen(dirname)-1];
-	    char *tmps="/";
+	    const char *tmps;
 	    if ((tmpc=='/')||(tmpc=='\\')) tmps="";
+	    else tmps="/";
 	    snprintf(presets[presetk].file,MAX_STRING_SIZE,"%s%s%s",dirname,tmps,filename);
 	    snprintf(presets[presetk].name,MAX_STRING_SIZE,"%s",filename);
 
@@ -152,10 +153,11 @@ void PresetsStore::copypreset(XMLwrapper
 	tmpfilename[i]='_';
     };
     
-    char *dirname=config.cfg.presetsDirList[0];
+    const char *dirname=config.cfg.presetsDirList[0];
     char tmpc=dirname[strlen(dirname)-1];
-    char *tmps="/";
+    const char *tmps;
     if ((tmpc=='/')||(tmpc=='\\')) tmps="";
+    else tmps="/";
 
     snprintf(filename,MAX_STRING_SIZE,"%s%s%s.%s.xpz",dirname,tmps,name,type);
     
