--- np2/sound/vermouth/midimod.c 2003/10/18 01:21:58 1.2 +++ np2/sound/vermouth/midimod.c 2005/02/07 14:46:13 1.5 @@ -71,7 +71,7 @@ static int cfggetarg(char *str, char *ar int ret; BOOL quot; char *p; - BYTE c; + UINT8 c; ret = 0; while(maxarg--) { @@ -193,7 +193,7 @@ static void settone(MIDIMOD mod, int ban int i; char *key; char *data; - BYTE flag; + UINT8 flag; if ((bank < 0) || (bank >= (MIDI_BANKS * 2)) || (argc < 2) || (cfggetval(argv[0], &val) != SUCCESS) || (val < 0) || (val >= 128)) { @@ -227,7 +227,7 @@ static void settone(MIDIMOD mod, int ban } else { // for drums flag |= TONECFG_NOLOOP | TONECFG_NOENV; - tone->note = (BYTE)val; + tone->note = (UINT8)val; } for (i=2; i= 0) && (val < 128)) { - tone->note = (BYTE)val; + tone->note = (UINT8)val; } } else if (!milstr_cmp(key, str_pan)) { @@ -288,7 +288,7 @@ static void settone(MIDIMOD mod, int ban else { continue; } - tone->pan = (BYTE)val; + tone->pan = (UINT8)val; } else if (!milstr_cmp(key, str_strip)) { if (!milstr_cmp(data, str_env)) { @@ -357,12 +357,12 @@ BOOL cfgfile_load(MIDIMOD mod, const cha goto cfl_err; } while(textfile_read(tfh, buf, sizeof(buf)) == SUCCESS) { - argc = cfggetarg(buf, argv, sizeof(argv)/sizeof(char *)); + argc = cfggetarg(buf, argv, NELEMENTS(argv)); if (argc < 2) { continue; } cfg = 0; - while(cfg < (sizeof(cfgstr)/sizeof(char *))) { + while(cfg < NELEMENTS(cfgstr)) { if (!milstr_cmp(argv[0], cfgstr[cfg])) { break; } @@ -423,25 +423,37 @@ MIDIMOD midimod_create(UINT samprate) { size += sizeof(INSTRUMENT) * 128 * 2; size += sizeof(_TONECFG) * 128 * 2; ret = (MIDIMOD)_MALLOC(size, "MIDIMOD"); - if (ret) { - ZeroMemory(ret, size); - ret->samprate = samprate; - ret->tone[0] = (INSTRUMENT *)(ret + 1); - ret->tone[1] = ret->tone[0] + 128; - ret->tonecfg[0] = (TONECFG)(ret->tone[1] + 128); - ret->tonecfg[1] = ret->tonecfg[0] + 128; - ret->pathtbl = listarray_new(sizeof(_PATHLIST), 64); - pathadd(ret, NULL); - pathadd(ret, file_getcd(str_null)); - ret->namelist = listarray_new(MAX_NAME, 128); - r = cfgfile_load(ret, file_timiditycfg, 0); + if (ret == NULL) { + goto mmcre_err1; + } + ZeroMemory(ret, size); + ret->samprate = samprate; + ret->tone[0] = (INSTRUMENT *)(ret + 1); + ret->tone[1] = ret->tone[0] + 128; + ret->tonecfg[0] = (TONECFG)(ret->tone[1] + 128); + ret->tonecfg[1] = ret->tonecfg[0] + 128; + ret->pathtbl = listarray_new(sizeof(_PATHLIST), 64); + pathadd(ret, NULL); + pathadd(ret, file_getcd(str_null)); + ret->namelist = listarray_new(MAX_NAME, 128); + r = cfgfile_load(ret, file_timiditycfg, 0); #if defined(TIMIDITY_CFGFILE) - if (r != SUCCESS) { - r = cfgfile_load(ret, TIMIDITY_CFGFILE, 0); - } + if (r != SUCCESS) { + r = cfgfile_load(ret, TIMIDITY_CFGFILE, 0); + } #endif + if (r != SUCCESS) { + goto mmcre_err2; } return(ret); + +mmcre_err2: + listarray_destroy(ret->namelist); + listarray_destroy(ret->pathtbl); + _MFREE(ret); + +mmcre_err1: + return(NULL); } void midimod_destroy(MIDIMOD hdl) { @@ -493,3 +505,22 @@ void midimod_loadrhythm(MIDIMOD hdl, UIN } } +void midimod_loadgm(MIDIMOD hdl) { + + if (hdl) { + inst_bankload(hdl, 0); + inst_bankload(hdl, 1); + } +} + +void midimod_loadall(MIDIMOD hdl) { + + UINT b; + + if (hdl) { + for (b=0; b<(MIDI_BANKS*2); b++) { + inst_bankload(hdl, b); + } + } +} +