zynaddsubfx

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

commit cb7dfe37e49f3357193b587931c06e6c5063a622
parent 063d95c88e10ef9ead78bbffba25a4ce8b766719
Author: paulnasca <paulnasca>
Date:   Thu, 29 Jul 2004 17:02:17 +0000

*** empty log message ***

Diffstat:
MChangeLog | 2++
Msrc/Misc/Bank.C | 28++--------------------------
Msrc/Misc/Config.C | 66++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Msrc/Misc/Config.h | 8+++-----
Msrc/UI/ConfigUI.fl | 37++++++++++---------------------------
Msrc/UI/PartUI.fl | 9++++-----
6 files changed, 73 insertions(+), 77 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -666,4 +666,6 @@ - Nu se mai arata butonul de apply parameters la PADsynth cand nu este necesar - Eliminate blocarile de cateva secunde din threadul de sunet in momentul cand se incarca un nou instrument care contine parametrii PADsynth - Adaugata schimbarea titlului ferestrei principale la load XML +28 Iul 2004 - Modificat modul cum este stocat lista de banci root dir + diff --git a/src/Misc/Bank.C b/src/Misc/Bank.C @@ -277,8 +277,7 @@ int Bank::newbank(const char *newbankdirname){ int result; char tmpfilename[MAX_STRING_SIZE]; char bankdir[MAX_STRING_SIZE]; - snprintf(bankdir,MAX_STRING_SIZE,"%s",config.cfg.bankRootDirList); - for (int i=0;i<strlen(bankdir);i++) if (bankdir[i]<32) bankdir[i]=0; + snprintf(bankdir,MAX_STRING_SIZE,"%s",config.cfg.bankRootDirList[0]); if (((bankdir[strlen(bankdir)-1])!='/')&&((bankdir[strlen(bankdir)-1])!='\\')){ strncat(bankdir,"/",MAX_STRING_SIZE); @@ -355,30 +354,7 @@ void Bank::rescanforbanks(){ banks[i].name=NULL; }; - - char *dirlist=config.cfg.bankRootDirList; - int dirlistlen=strlen(dirlist); - char *currentrootdir=new char [dirlistlen]; - while (start<dirlistlen){ - end=start; - for (int i=start+1;i<dirlistlen;i++){ - end=i; - if (dirlist[i]<32) break; - }; - snprintf(currentrootdir,end-start+1,"%s",&dirlist[start]); - - //a root director was found - if (strlen (currentrootdir)>1) scanrootdir(currentrootdir); - - start=end+1; - }; - delete(currentrootdir); - -/* for (int i=0;i<MAX_NUM_BANKS;i++){ - if (banks[i].dir==NULL) continue; - printf("* %s = %s\n",banks[i].name,banks[i].dir); - }; -*/ + for (int i=0;i<MAX_BANK_ROOT_DIRS;i++) if (config.cfg.bankRootDirList[i]!=NULL) scanrootdir(config.cfg.bankRootDirList[i]); }; diff --git a/src/Misc/Config.C b/src/Misc/Config.C @@ -79,13 +79,7 @@ Config::Config(){ snprintf(winmididevices[i].name,MAX_STRING_SIZE,"%s",midiincaps.szPname); }; #endif - - cfg.bankRootDirList=new char[MAX_STRING_SIZE]; -#if defined(OS_LINUX) - sprintf(cfg.bankRootDirList,"~/banks\n./\n/usr/share/zynaddsubfx/banks\n/usr/local/share/zynaddsubfx/banks\n../banks\n"); -#else - sprintf(cfg.bankRootDirList,"./"); -#endif + for (int i=0;i<MAX_BANK_ROOT_DIRS;i++) cfg.bankRootDirList[i]=NULL; cfg.currentBankDir=new char[MAX_STRING_SIZE]; sprintf(cfg.currentBankDir,"./testbnk"); @@ -93,9 +87,30 @@ Config::Config(){ char filename[MAX_STRING_SIZE]; getConfigFileName(filename,MAX_STRING_SIZE); readConfig(filename); - - ui.showinstrumentinfo=0; + if (cfg.bankRootDirList[0]==NULL){ +#if defined(OS_LINUX) + cfg.bankRootDirList[0]=new char[MAX_STRING_SIZE]; + sprintf(cfg.bankRootDirList[0],"~/banks"); + cfg.bankRootDirList[1]=new char[MAX_STRING_SIZE]; + sprintf(cfg.bankRootDirList[1],"./"); + + cfg.bankRootDirList[2]=new char[MAX_STRING_SIZE]; + sprintf(cfg.bankRootDirList[2],"/usr/share/zynaddsubfx/banks"); + + cfg.bankRootDirList[3]=new char[MAX_STRING_SIZE]; + sprintf(cfg.bankRootDirList[3],"/usr/local/share/zynaddsubfx/banks"); + + cfg.bankRootDirList[4]=new char[MAX_STRING_SIZE]; + sprintf(cfg.bankRootDirList[4],"../banks"); +#else + cfg.bankRootDirList[0]=new char[MAX_STRING_SIZE]; + sprintf(cfg.bankRootDirList[0],"./"); + + cfg.bankRootDirList[1]=new char[MAX_STRING_SIZE]; + sprintf(cfg.bankRootDirList[1],"../banks"); +#endif + }; }; Config::~Config(){ @@ -103,7 +118,6 @@ Config::~Config(){ getConfigFileName(filename,MAX_STRING_SIZE); saveConfig(filename); - delete(cfg.LinuxOSSWaveOutDev); delete(cfg.LinuxOSSSeqInDev); delete(cfg.DumpFile); @@ -112,9 +126,17 @@ Config::~Config(){ delete(winmididevices); }; +void Config::clearbankrootdirlist(){ + for (int i=0;i<MAX_BANK_ROOT_DIRS;i++) { + if (cfg.bankRootDirList[i]=NULL) delete(cfg.bankRootDirList[i]); + cfg.bankRootDirList[i]=NULL; + }; +}; + + void Config::readConfig(char *filename){ XMLwrapper *xmlcfg=new XMLwrapper(); - if (xmlcfg->loadXMLfile(filename)<0)return; + if (xmlcfg->loadXMLfile(filename)<0) return; if (xmlcfg->enterbranch("CONFIGURATION")){ cfg.SampleRate=xmlcfg->getpar("sample_rate",cfg.SampleRate,4000,1024000); cfg.SoundBufferSize=xmlcfg->getpar("sound_buffer_size",cfg.SoundBufferSize,2,8192); @@ -129,9 +151,18 @@ void Config::readConfig(char *filename){ cfg.GzipCompression=xmlcfg->getpar("gzip_compression",cfg.GzipCompression,0,9); xmlcfg->getparstr("bank_current",cfg.currentBankDir,MAX_STRING_SIZE); - xmlcfg->getparstr("bank_root_list",cfg.bankRootDirList,MAX_STRING_SIZE); - cfg.Interpolation=xmlcfg->getpar("interpolation",cfg.Interpolation,0,1); + + //get bankroot dirs + for (int i=0;i<MAX_BANK_ROOT_DIRS;i++){ + if (xmlcfg->enterbranch("BANKROOT",i)){ + cfg.bankRootDirList[i]=new char[MAX_STRING_SIZE]; + xmlcfg->getparstr("bank_root",cfg.bankRootDirList[i],MAX_STRING_SIZE); + xmlcfg->exitbranch(); + }; + //xmlcfg->getparstr("bank_root_list",cfg.bankRootDirList,MAX_STRING_SIZE); + }; + //linux stuff xmlcfg->getparstr("linux_oss_wave_out_dev",cfg.LinuxOSSWaveOutDev,MAX_STRING_SIZE); xmlcfg->getparstr("linux_oss_seq_in_dev",cfg.LinuxOSSSeqInDev,MAX_STRING_SIZE); @@ -140,6 +171,8 @@ void Config::readConfig(char *filename){ cfg.WindowsWaveOutId=xmlcfg->getpar("windows_wave_out_id",cfg.WindowsWaveOutId,0,winwavemax); cfg.WindowsMidiInId=xmlcfg->getpar("windows_midi_in_id",cfg.WindowsMidiInId,0,winmidimax); + + xmlcfg->exitbranch(); }; delete(xmlcfg); @@ -166,7 +199,12 @@ void Config::saveConfig(char *filename){ xmlcfg->addpar("gzip_compression",cfg.GzipCompression); xmlcfg->addparstr("bank_current",cfg.currentBankDir); - xmlcfg->addparstr("bank_root_list",cfg.bankRootDirList); + + 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(); + }; xmlcfg->addpar("interpolation",cfg.Interpolation); diff --git a/src/Misc/Config.h b/src/Misc/Config.h @@ -24,7 +24,7 @@ #define CONFIG_H #include "../globals.h" #define MAX_STRING_SIZE 4000 - +#define MAX_BANK_ROOT_DIRS 100 class Config{ public: @@ -39,7 +39,7 @@ class Config{ int GzipCompression; int Interpolation; char *DumpFile; - char *bankRootDirList,*currentBankDir; + char *bankRootDirList[MAX_BANK_ROOT_DIRS],*currentBankDir; } cfg; int winwavemax,winmidimax;//number of wave/midi devices on Windows int maxstringsize; @@ -49,9 +49,7 @@ class Config{ }; winmidionedevice *winmididevices; - struct { - int showinstrumentinfo; - } ui; + void clearbankrootdirlist(); private: void readConfig(char *filename); diff --git a/src/UI/ConfigUI.fl b/src/UI/ConfigUI.fl @@ -30,8 +30,7 @@ decl {\#include "../Misc/Dump.h"} {public decl {extern Dump dump;} {public } -class ConfigUI {open -} { +class ConfigUI {} { Function {make_window()} {} { Fl_Window configwindow { label {ZynAddSubFX Settings} @@ -313,34 +312,18 @@ readbankcfg();} {} Function {readbankcfg()} {} { code {rootsbrowse->clear(); -int start=0,end=0; -char *dirlist=config.cfg.bankRootDirList; -int dirlistlen=strlen(dirlist); -char *currentrootdir=new char [dirlistlen]; -while (start<dirlistlen){ - end=start; - for (int i=start+1;i<dirlistlen;i++){ - end=i; - if (dirlist[i]<32) break; - }; - snprintf(currentrootdir,end-start+1,"%s",&dirlist[start]); - - //a root director was found - if (strlen(currentrootdir)>2) rootsbrowse->add(currentrootdir); - - start=end+1; -}; -delete(currentrootdir);} {selected - } +for (int i=0;i<MAX_BANK_ROOT_DIRS;i++){ + if (config.cfg.bankRootDirList[i]!=NULL) rootsbrowse->add(config.cfg.bankRootDirList[i]); +};} {} } Function {writebankcfg()} {} { - code {char *str=config.cfg.bankRootDirList; -str[0]='\\0'; + code {config.clearbankrootdirlist(); -for (int n=1;n<rootsbrowse->size()+1;n++){ - strncat(str,rootsbrowse->text(n),MAX_STRING_SIZE); - strncat(str,"\\n",MAX_STRING_SIZE); -};} {} +for (int n=0;n<rootsbrowse->size();n++){ + config.cfg.bankRootDirList[n]=new char [MAX_STRING_SIZE]; + strncpy(config.cfg.bankRootDirList[n],rootsbrowse->text(n+1),MAX_STRING_SIZE); +};} {selected + } } Function {getsamplerateorder()} {return_type int } { diff --git a/src/UI/PartUI.fl b/src/UI/PartUI.fl @@ -276,7 +276,7 @@ delete(partkititem);} {} class PartUI {: {public Fl_Group,PartUI_} } { - Function {make_window()} {open selected private + Function {make_window()} {private } { Fl_Window partgroup { private xywh {107 533 385 180} type Double hide @@ -1116,9 +1116,7 @@ if ((engine==1)&&(subnoteui!=NULL)) subnoteui->SUBparameters->show(); if ((engine==2)&&(adnoteui!=NULL)) padnoteui->padnotewindow->show();} {} } Function {~PartUI()} {} { - code {config.ui.showinstrumentinfo=instrumenteditwindow->visible(); - -if (adnoteui!=NULL) delete (adnoteui); + code {if (adnoteui!=NULL) delete (adnoteui); if (subnoteui!=NULL) delete (subnoteui); if (padnoteui!=NULL) delete (padnoteui); @@ -1135,7 +1133,8 @@ instrumentkitlist->hide(); delete(instrumentkitlist); instrumenteditwindow->hide(); -delete(instrumenteditwindow);} {} +delete(instrumenteditwindow);} {selected + } } decl {Part *part;} {} decl {Master *master;} {}