--- np2/sound/vermouth/midimod.c 2006/12/16 09:43:24 1.9 +++ np2/sound/vermouth/midimod.c 2011/02/04 01:59:32 1.15 @@ -42,7 +42,7 @@ static const OEMCHAR file_timiditycfg[] static const OEMCHAR str_basedir[] = OEMTEXT("${basedir}"); -static void pathadd(MIDIMOD mod, const OEMCHAR *path) { +static void VERMOUTHCL pathadd(MIDIMOD mod, const OEMCHAR *path) { _PATHLIST pl; PATHLIST p; @@ -74,7 +74,7 @@ static void pathadd(MIDIMOD mod, const O } } -static void pathaddex(MIDIMOD mod, const OEMCHAR *path) { +static void VERMOUTHCL pathaddex(MIDIMOD mod, const OEMCHAR *path) { OEMCHAR _path[MAX_PATH]; @@ -89,7 +89,7 @@ static void pathaddex(MIDIMOD mod, const } } -static int cfggetarg(OEMCHAR *str, OEMCHAR *arg[], int maxarg) { +static int VERMOUTHCL cfggetarg(OEMCHAR *str, OEMCHAR *arg[], int maxarg) { int ret; BOOL quot; @@ -141,7 +141,7 @@ cga_done: return(ret); } -static OEMCHAR *seachr(const OEMCHAR *str, OEMCHAR sepa) { +static OEMCHAR *VERMOUTHCL seachr(const OEMCHAR *str, OEMCHAR sepa) { OEMCHAR c; @@ -163,7 +163,7 @@ enum { VAL_SIGN = 2 }; -static BRESULT cfggetval(const OEMCHAR *str, int *val) { +static BRESULT VERMOUTHCL cfggetval(const OEMCHAR *str, int *val) { int ret; int flag; @@ -208,7 +208,8 @@ static BRESULT cfggetval(const OEMCHAR * // ---- -static void settone(MIDIMOD mod, int bank, int argc, OEMCHAR *argv[]) { +static void VERMOUTHCL settone(MIDIMOD mod, int bank, int argc, + OEMCHAR *argv[]) { int val; TONECFG tone; @@ -332,7 +333,7 @@ static void settone(MIDIMOD mod, int ban // ---- -BRESULT cfgfile_getfile(MIDIMOD mod, const OEMCHAR *filename, +BRESULT VERMOUTHCL midimod_getfile(MIDIMOD mod, const OEMCHAR *filename, OEMCHAR *path, int size) { PATHLIST p; @@ -361,7 +362,8 @@ fpgf_exit: return(FAILURE); } -BRESULT cfgfile_load(MIDIMOD mod, const OEMCHAR *filename, int depth) { +static BRESULT VERMOUTHCL cfgfile_load(MIDIMOD mod, const OEMCHAR *filename, + int depth) { TEXTFILEH tfh; OEMCHAR buf[1024]; @@ -375,10 +377,10 @@ BRESULT cfgfile_load(MIDIMOD mod, const bank = -1; if ((depth >= 16) || - (cfgfile_getfile(mod, filename, buf, NELEMENTS(buf)) != SUCCESS)) { + (midimod_getfile(mod, filename, buf, NELEMENTS(buf)) != SUCCESS)) { goto cfl_err; } -// TRACEOUT(("open: %s", buf)); +// TRACEOUT(("open: %s", buf)); tfh = textfile_open(buf, 0x1000); if (tfh == NULL) { goto cfl_err; @@ -484,108 +486,122 @@ mmcre_err1: return(NULL); } -void midimod_lock(MIDIMOD hdl) { +void VERMOUTHCL midimod_lock(MIDIMOD mod) { - hdl->lockcount++; + mod->lockcount++; } -void midimod_unlock(MIDIMOD hdl) { +void VERMOUTHCL midimod_unlock(MIDIMOD mod) { UINT r; TONECFG bank; - if (!hdl->lockcount) { + if (!mod->lockcount) { return; } - hdl->lockcount--; - if (hdl->lockcount) { + mod->lockcount--; + if (mod->lockcount) { return; } r = 128; do { r--; - inst_bankfree(hdl, r); + inst_bankfree(mod, r); } while(r > 0); for (r=2; r<(MIDI_BANKS*2); r++) { - bank = hdl->tonecfg[r]; + bank = mod->tonecfg[r]; if (bank) { _MFREE(bank); } } - listarray_destroy(hdl->namelist); - listarray_destroy(hdl->pathtbl); - _MFREE(hdl); + listarray_destroy(mod->namelist); + listarray_destroy(mod->pathtbl); + _MFREE(mod); } -VEXTERN void VEXPORT midimod_destroy(MIDIMOD hdl) { +VEXTERN void VEXPORT midimod_destroy(MIDIMOD mod) { - if (hdl) { - midimod_unlock(hdl); + if (mod) { + midimod_unlock(mod); } } -VEXTERN void VEXPORT midimod_loadprogram(MIDIMOD hdl, UINT num) { +VEXTERN BRESULT VEXPORT midimod_cfgload(MIDIMOD mod, + const OEMCHAR *filename) { + + return(cfgfile_load(mod, filename, 0)); +} + +VEXTERN void VEXPORT midimod_loadprogram(MIDIMOD mod, UINT num) { UINT bank; - if (hdl != NULL) { + if (mod != NULL) { bank = (num >> 8) & 0x7f; num &= 0x7f; - if (inst_singleload(hdl, bank << 1, num) != MIDIOUT_SUCCESS) { - inst_singleload(hdl, 0, num); + if (inst_singleload(mod, bank << 1, num) != MIDIOUT_SUCCESS) { + inst_singleload(mod, 0, num); } } } -VEXTERN void VEXPORT midimod_loadrhythm(MIDIMOD hdl, UINT num) { +VEXTERN void VEXPORT midimod_loadrhythm(MIDIMOD mod, UINT num) { UINT bank; - if (hdl != NULL) { + if (mod != NULL) { bank = (num >> 8) & 0x7f; num &= 0x7f; - if (inst_singleload(hdl, (bank << 1) + 1, num) != MIDIOUT_SUCCESS) { - inst_singleload(hdl, 1, num); + if (inst_singleload(mod, (bank << 1) + 1, num) != MIDIOUT_SUCCESS) { + inst_singleload(mod, 1, num); } } } -VEXTERN void VEXPORT midimod_loadgm(MIDIMOD hdl) { +VEXTERN void VEXPORT midimod_loadgm(MIDIMOD mod) { - if (hdl) { - inst_bankload(hdl, 0); - inst_bankload(hdl, 1); + if (mod) { + inst_bankload(mod, 0); + inst_bankload(mod, 1); } } -VEXTERN void VEXPORT midimod_loadall(MIDIMOD hdl) { +VEXTERN void VEXPORT midimod_loadall(MIDIMOD mod) { UINT b; - if (hdl) { + if (mod) { for (b=0; b<(MIDI_BANKS*2); b++) { - inst_bankload(hdl, b); + inst_bankload(mod, b); } } } -VEXTERN void VEXPORT midimod_loadallex(MIDIMOD hdl, FNMIDIOUTLAEXCB cb, void *userdata) { +VEXTERN int VEXPORT midimod_loadallex(MIDIMOD mod, FNMIDIOUTLAEXCB cb, + void *userdata) { - MIDIOUTLAEXPARAM param; - UINT b; + int result; + MIDIOUTLAEXPARAM param; + UINT b; - if (hdl) { + result = MIDIOUT_SUCCESS; + if (mod) { ZeroMemory(¶m, sizeof(param)); param.userdata = userdata; for (b=0; b<(MIDI_BANKS*2); b++) { - param.totaltones += inst_gettones(hdl, b); + param.totaltones += inst_gettones(mod, b); } for (b=0; b<(MIDI_BANKS*2); b++) { param.bank = b; - inst_bankloadex(hdl, b, cb, ¶m); + result = inst_bankloadex(mod, b, cb, ¶m); + if (result != MIDIOUT_SUCCESS) + { + break; + } } } + return result; }