11 static void update_callback(void);
12 static void MikMod_RegisterAllDrivers(void);
13 static void MikMod_RegisterAllLoaders(void);
19 static int initialized;
23 MikMod_RegisterAllDrivers();
24 MikMod_RegisterAllLoaders();
27 md_mode |= DMODE_SOFT_MUSIC | DMODE_16BITS | DMODE_STEREO | DMODE_INTERP;
28 if(MikMod_Init("") != 0) {
29 fprintf(stderr, "mikmod init failed: %s\n",
30 MikMod_strerror(MikMod_errno));
36 md_dmabufsize = 20000;
37 md_mode = DMODE_STEREO | DMODE_16BITS | DMODE_INTERP;
40 MD_RegisterPlayer(update_callback);
43 fprintf(stderr, "mikmod init failed: %s\n", myerr);
46 printf("using mikmod driver %s\n", md_driver->Name);
47 printf(" %d bits, %s, %s mixing at %d Hz\n", md_mode & DMODE_16BITS ? 16 : 8,
48 md_mode & DMODE_STEREO ? "stereo" : "mono",
49 md_mode & DMODE_INTERP ? "interpolated" : "normal",
57 int music_open(const char *fname)
67 if(!(mod = Player_Load(fname, 64, 0))) {
68 fprintf(stderr, "failed to load music: %s: %s\n", fname,
69 MikMod_strerror(MikMod_errno));
73 if(!(mod = ML_LoadFN((char*)fname))) {
74 fprintf(stderr, "failed to load music: %s: %s\n", fname, myerr);
79 md_numchn = mod->numchn;
80 printf("opened module %s (%d channels)\n", fname, md_numchn);
85 void music_close(void)
88 printf("shutting down music playback\n");
108 void music_stop(void)
117 void music_update(void)
120 if(Player_Active()) {
129 static void update_callback(void)
135 static void MikMod_RegisterAllDrivers(void)
137 MD_RegisterDriver(&drv_nos);
138 MD_RegisterDriver(&drv_ss);
139 MD_RegisterDriver(&drv_sb);
140 MD_RegisterDriver(&drv_gus);
143 static void MikMod_RegisterAllLoaders(void)
145 ML_RegisterLoader(&load_m15);
146 ML_RegisterLoader(&load_mod);
147 ML_RegisterLoader(&load_mtm);
148 ML_RegisterLoader(&load_s3m);
149 ML_RegisterLoader(&load_stm);
150 ML_RegisterLoader(&load_ult);
151 ML_RegisterLoader(&load_uni);
152 ML_RegisterLoader(&load_xm);
158 int music_open(const char *fname)
163 void music_close(void)
167 void music_play(void)
171 void music_stop(void)
175 void music_update(void)