zynaddsubfx

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

commit 51af878912521020c7d9175132228f8257271b53
parent 2c48a3fd0f8463b7ebc5d57a0608cbc2e185bacb
Author: paulnasca <paulnasca>
Date:   Sun, 13 Jun 2004 13:40:08 +0000

*** empty log message ***

Diffstat:
MChangeLog | 3++-
Msrc/Misc/Bank.C | 25++++++++++++++++++++++---
Msrc/Misc/Config.C | 6+++++-
Msrc/UI/BankUI.fl | 11++++++++---
Msrc/UI/ConfigUI.fl | 26++++++++++----------------
5 files changed, 47 insertions(+), 24 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -569,6 +569,7 @@ 06 Iun 2004 - Adaugata functia sigmoid la distorsionare 12 Iun 2004 - Modificat modul cum este realizat bank-urile, adica directoarele de bank-uri exista in anumite directoare si aceste directoare sunt cautate automat de bankuri; adaugat optiunea de a se folosi mai multe bank-uri 13 Iun 2004 - Adaugat filtrul "sinus" la OscilGen - + - Managementul bancilor de instrumente este (aproape) complet + - Se cauta bancile si in '/usr/share/zynaddsubfx/banks' si '/usr/local/share/zynaddsubfx/banks' diff --git a/src/Misc/Bank.C b/src/Misc/Bank.C @@ -37,6 +37,9 @@ #define INSTRUMENT_EXTENSION ".xml" //.xzz +//if this file exists into a directory, this make the directory to be considered as a bank, even if it not contains a instrument file +#define FORCE_BANK_DIR_FILE ".bankdir" + Bank::Bank(){ memset(defaultinsname,0,PART_MAX_NAME_LEN); snprintf(defaultinsname,PART_MAX_NAME_LEN,"%s"," "); @@ -325,10 +328,25 @@ int Bank::loadbank(const char *bankdirname){ * Makes a new bank, put it on a file and makes it current bank */ int Bank::newbank(const char *newbankdirname){ - int result=mkdir(newbankdirname,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + 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; + + if (((bankdir[strlen(bankdir)-1])!='/')&&((bankdir[strlen(bankdir)-1])!='\\')){ + strncat(bankdir,"/",MAX_STRING_SIZE); + }; + strncat(bankdir,newbankdirname,MAX_STRING_SIZE); + result=mkdir(bankdir,S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); if (result<0) return(-1); + + snprintf(tmpfilename,MAX_STRING_SIZE,"%s/%s",bankdir,FORCE_BANK_DIR_FILE); + printf("%s\n",tmpfilename); + FILE *tmpfile=fopen(tmpfilename,"w+"); + fclose(tmpfile); - return(loadbank(newbankdirname)); + return(loadbank(bankdir)); }; /* @@ -416,7 +434,8 @@ void Bank::scanrootdir(char *rootdir){ while((fname=readdir(d))){ if (fname->d_type!=DT_REG) continue;//this is not a regular file - if (strstr(fname->d_name,INSTRUMENT_EXTENSION)!=NULL) { + if ((strstr(fname->d_name,INSTRUMENT_EXTENSION)!=NULL)|| + (strstr(fname->d_name,FORCE_BANK_DIR_FILE)!=NULL)){ isbank=true; break;//aici as putea pune in loc de break un update la un counter care imi arata nr. de instrumente din bank }; diff --git a/src/Misc/Config.C b/src/Misc/Config.C @@ -78,7 +78,11 @@ Config::Config(){ #endif cfg.bankRootDirList=new char[MAX_STRING_SIZE]; - sprintf(cfg.bankRootDirList,"./\n/tmp\n~/paul"); +#if defined(OS_LINUX) + sprintf(cfg.bankRootDirList,"./\n/usr/share/zynaddsubfx/banks\n/usr/local/share/zynaddsubfx/banks"); +#else + sprintf(cfg.bankRootDirList,"./"); +#endif cfg.currentBankDir=new char[MAX_STRING_SIZE]; sprintf(cfg.currentBankDir,"./testbnk"); diff --git a/src/UI/BankUI.fl b/src/UI/BankUI.fl @@ -156,9 +156,14 @@ refreshmainwindow();} } Fl_Button {} { label {New Bank...} - callback {char *dirname; + callback {const char *dirname; +/* dirname=fl_dir_chooser("New empty Bank:",NULL,0); if (dirname==NULL) return; +*/ +dirname=fl_input("New empty Bank:"); +if (dirname==NULL) return; + int result=bank->newbank(dirname); @@ -182,7 +187,7 @@ if (filename==NULL) return; master->exportbankasxmldirectory(filename); for (int i=0;i<128;i++) bs[i]->refresh(); -refreshmainwindow();} +refreshmainwindow();} selected xywh {439 438 105 40} box PLASTIC_UP_BOX color 175 labelfont 1 labelsize 15 labelcolor 0 align 128 } Fl_Choice banklist { @@ -194,7 +199,7 @@ if (dirname==NULL) return; if (bank->loadbank(dirname)==2) fl_alert("Error: Could not load the bank from the directory\\n%s.",dirname); for (int i=0;i<128;i++) bs[i]->refresh(); -refreshmainwindow();} open selected +refreshmainwindow();} open xywh {5 20 205 20} down_box BORDER_BOX labelfont 1 align 5 textfont 1 textsize 12 } {} Fl_Button {} { diff --git a/src/UI/ConfigUI.fl b/src/UI/ConfigUI.fl @@ -30,22 +30,20 @@ decl {\#include "../Misc/Dump.h"} {public decl {extern Dump dump;} {public } -class ConfigUI {open -} { - Function {make_window()} {open - } { +class ConfigUI {} { + Function {make_window()} {} { Fl_Window configwindow { label {ZynAddSubFX Settings} callback {writebankcfg(); o->hide();} - xywh {88 313 510 340} type Double visible + xywh {88 313 510 340} type Double hide } { Fl_Tabs {} { xywh {5 5 500 305} } { Fl_Group {} { - label {Main settings} - xywh {5 25 500 285} hide + label {Main settings} selected + xywh {5 25 500 285} } { Fl_Group {} { label {Sample Rate} @@ -236,7 +234,7 @@ midiinputnamebox->label(config.winmididevices[config.cfg.WindowsMidiInId].name); } Fl_Group {} { label {Bank root dirs} open - xywh {5 25 500 285} + xywh {5 25 500 285} hide } { Fl_Browser rootsbrowse { callback {activatebutton_rootdir(o->value()!=0);} @@ -283,13 +281,11 @@ writebankcfg();} } } } - Function {ConfigUI()} {open - } { + Function {ConfigUI()} {} { code {make_window(); readbankcfg();} {} } - Function {activatebutton_rootdir(bool active)} {open - } { + Function {activatebutton_rootdir(bool active)} {} { code {if (active) { removerootdirbutton->activate(); makedefaultrootdirbutton->activate(); @@ -319,16 +315,14 @@ while (start<dirlistlen){ }; delete(currentrootdir);} {} } - Function {writebankcfg()} {open - } { + Function {writebankcfg()} {} { code {char *str=config.cfg.bankRootDirList; str[0]='\\0'; for (int n=1;n<rootsbrowse->size()+1;n++){ strncat(str,rootsbrowse->text(n),MAX_STRING_SIZE); strncat(str,"\\n",MAX_STRING_SIZE); -};} {selected - } +};} {} } Function {getsamplerateorder()} {return_type int } {