Diff for /np2/sound/vermouth/midimod.c between versions 1.7 and 1.9

version 1.7, 2005/03/29 06:50:38 version 1.9, 2006/12/16 09:43:24
Line 3 Line 3
 #include        "dosio.h"  #include        "dosio.h"
 #include        "textfile.h"  #include        "textfile.h"
 #include        "midiout.h"  #include        "midiout.h"
   #if defined(SUPPORT_ARC)
   #include        "arc.h"
   #endif
   
   
 #define CFG_MAXAMP              400  #define CFG_MAXAMP              400
Line 36  static const OEMCHAR str_env[] = OEMTEXT Line 39  static const OEMCHAR str_env[] = OEMTEXT
 static const OEMCHAR str_loop[] = OEMTEXT("loop");  static const OEMCHAR str_loop[] = OEMTEXT("loop");
 static const OEMCHAR str_tail[] = OEMTEXT("tail");  static const OEMCHAR str_tail[] = OEMTEXT("tail");
 static const OEMCHAR file_timiditycfg[] = OEMTEXT("timidity.cfg");  static const OEMCHAR file_timiditycfg[] = OEMTEXT("timidity.cfg");
   static const OEMCHAR str_basedir[] = OEMTEXT("${basedir}");
   
   
 static void pathadd(MIDIMOD mod, const OEMCHAR *path) {  static void pathadd(MIDIMOD mod, const OEMCHAR *path) {
Line 49  static void pathadd(MIDIMOD mod, const O Line 53  static void pathadd(MIDIMOD mod, const O
                 // separator change!                  // separator change!
                 file_catname(pl.path, path, NELEMENTS(pl.path));                  file_catname(pl.path, path, NELEMENTS(pl.path));
                 if (path[0]) {                  if (path[0]) {
                         file_setseparator(pl.path, NELEMENTS(pl.path));  #if defined(SUPPORT_ARC)
                           if (milstr_chr(pl.path, '#') == NULL)
   #endif
                                   file_setseparator(pl.path, NELEMENTS(pl.path));
                 }                  }
         }          }
   
Line 71  static void pathaddex(MIDIMOD mod, const Line 78  static void pathaddex(MIDIMOD mod, const
   
         OEMCHAR _path[MAX_PATH];          OEMCHAR _path[MAX_PATH];
   
         if (milstr_memcmp(path, OEMTEXT("${basedir}"))) {          if (milstr_memcmp(path, str_basedir)) {
                 pathadd(mod, path);                  pathadd(mod, path);
         }          }
         else {          else {
Line 339  BRESULT cfgfile_getfile(MIDIMOD mod, con Line 346  BRESULT cfgfile_getfile(MIDIMOD mod, con
         while(p) {          while(p) {
                 file_cpyname(path, p->path, size);                  file_cpyname(path, p->path, size);
                 file_catname(path, filename, size);                  file_catname(path, filename, size);
   #if defined(SUPPORT_ARC)
                   attr = arcex_attr(path);
   #else
                 attr = file_attr(path);                  attr = file_attr(path);
   #endif
                 if (attr != -1) {                  if (attr != -1) {
                         return(SUCCESS);                          return(SUCCESS);
                 }                  }
Line 429  cfl_err: Line 440  cfl_err:
   
 // ----  // ----
   
 MIDIMOD midimod_create(UINT samprate) {  VEXTERN MIDIMOD VEXPORT midimod_create(UINT samprate) {
   
         UINT    size;          UINT    size;
         MIDIMOD ret;          MIDIMOD ret;
Line 448  MIDIMOD midimod_create(UINT samprate) { Line 459  MIDIMOD midimod_create(UINT samprate) {
         ret->tone[1] = ret->tone[0] + 128;          ret->tone[1] = ret->tone[0] + 128;
         ret->tonecfg[0] = (TONECFG)(ret->tone[1] + 128);          ret->tonecfg[0] = (TONECFG)(ret->tone[1] + 128);
         ret->tonecfg[1] = ret->tonecfg[0] + 128;          ret->tonecfg[1] = ret->tonecfg[0] + 128;
         ret->pathtbl = listarray_new(sizeof(_PATHLIST), 64);          ret->pathtbl = listarray_new(sizeof(_PATHLIST), 16);
         pathadd(ret, NULL);          pathadd(ret, NULL);
         pathadd(ret, file_getcd(str_null));          pathadd(ret, file_getcd(str_null));
         ret->namelist = listarray_new(MAX_NAME, 128);          ret->namelist = listarray_new(MAX_NAME, 128);
Line 461  MIDIMOD midimod_create(UINT samprate) { Line 472  MIDIMOD midimod_create(UINT samprate) {
         if (r != SUCCESS) {          if (r != SUCCESS) {
                 goto mmcre_err2;                  goto mmcre_err2;
         }          }
           midimod_lock(ret);
         return(ret);          return(ret);
   
 mmcre_err2:  mmcre_err2:
Line 472  mmcre_err1: Line 484  mmcre_err1:
         return(NULL);          return(NULL);
 }  }
   
 void midimod_destroy(MIDIMOD hdl) {  void midimod_lock(MIDIMOD hdl) {
   
           hdl->lockcount++;
   }
   
   void midimod_unlock(MIDIMOD hdl) {
   
         UINT    r;          UINT    r;
         TONECFG bank;          TONECFG bank;
   
           if (!hdl->lockcount) {
                   return;
           }
           hdl->lockcount--;
           if (hdl->lockcount) {
                   return;
           }
   
           r = 128;
           do {
                   r--;
                   inst_bankfree(hdl, r);
           } while(r > 0);
           for (r=2; r<(MIDI_BANKS*2); r++) {
                   bank = hdl->tonecfg[r];
                   if (bank) {
                           _MFREE(bank);
                   }
           }
           listarray_destroy(hdl->namelist);
           listarray_destroy(hdl->pathtbl);
           _MFREE(hdl);
   }
   
   VEXTERN void VEXPORT midimod_destroy(MIDIMOD hdl) {
   
         if (hdl) {          if (hdl) {
                 r = 128;                  midimod_unlock(hdl);
                 do {  
                         r--;  
                         inst_bankfree(hdl, r);  
                 } while(r > 0);  
                 for (r=2; r<(MIDI_BANKS*2); r++) {  
                         bank = hdl->tonecfg[r];  
                         if (bank) {  
                                 _MFREE(bank);  
                         }  
                 }  
                 listarray_destroy(hdl->namelist);  
                 listarray_destroy(hdl->pathtbl);  
                 _MFREE(hdl);  
         }          }
 }  }
   
 void midimod_loadprogram(MIDIMOD hdl, UINT num) {  VEXTERN void VEXPORT midimod_loadprogram(MIDIMOD hdl, UINT num) {
   
         UINT    bank;          UINT    bank;
   
Line 508  void midimod_loadprogram(MIDIMOD hdl, UI Line 538  void midimod_loadprogram(MIDIMOD hdl, UI
         }          }
 }  }
   
 void midimod_loadrhythm(MIDIMOD hdl, UINT num) {  VEXTERN void VEXPORT midimod_loadrhythm(MIDIMOD hdl, UINT num) {
   
         UINT    bank;          UINT    bank;
   
Line 521  void midimod_loadrhythm(MIDIMOD hdl, UIN Line 551  void midimod_loadrhythm(MIDIMOD hdl, UIN
         }          }
 }  }
   
 void midimod_loadgm(MIDIMOD hdl) {  VEXTERN void VEXPORT midimod_loadgm(MIDIMOD hdl) {
   
         if (hdl) {          if (hdl) {
                 inst_bankload(hdl, 0);                  inst_bankload(hdl, 0);
Line 529  void midimod_loadgm(MIDIMOD hdl) { Line 559  void midimod_loadgm(MIDIMOD hdl) {
         }          }
 }  }
   
 void midimod_loadall(MIDIMOD hdl) {  VEXTERN void VEXPORT midimod_loadall(MIDIMOD hdl) {
   
         UINT    b;          UINT    b;
   
Line 540  void midimod_loadall(MIDIMOD hdl) { Line 570  void midimod_loadall(MIDIMOD hdl) {
         }          }
 }  }
   
   
   VEXTERN void VEXPORT midimod_loadallex(MIDIMOD hdl, FNMIDIOUTLAEXCB cb, void *userdata) {
   
           MIDIOUTLAEXPARAM param;
           UINT    b;
   
           if (hdl) {
                   ZeroMemory(&param, sizeof(param));
                   param.userdata = userdata;
                   for (b=0; b<(MIDI_BANKS*2); b++) {
                           param.totaltones += inst_gettones(hdl, b);
                   }
                   for (b=0; b<(MIDI_BANKS*2); b++) {
                           param.bank = b;
                           inst_bankloadex(hdl, b, cb, &param);
                   }
           }
   }
   

Removed from v.1.7  
changed lines
  Added in v.1.9


RetroPC.NET-CVS <cvs@retropc.net>