Mercurial > ~darius > hgwebdir.cgi > mikmod
diff frontend/mikmodux.c @ 16:e5529b6e3b1c
Inistal commit of the Cheesy Mod Player (tm)
author | darius |
---|---|
date | Thu, 23 Apr 1998 07:35:49 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontend/mikmodux.c Thu Apr 23 07:35:49 1998 +0000 @@ -0,0 +1,101 @@ +/* + * Basic mod player. Just takes the name of the mod to play + */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <fnmatch.h> +#include <signal.h> +#include "mikmod.h" +#include "mikmodux.h" +#include "mmio.h" + + +int +main(int argc, char *argv[]) +{ + static BOOL + cfg_extspd = 1, /* Extended Speed enable */ + cfg_panning = 1, /* DMP panning enable (8xx effects) */ + cfg_loop = 0; /* auto song-looping disable */ + int + cfg_maxchn = 64, c; + + UNIMOD *mf = NULL; + + if (argc != 2) { + printf("Usage is mikmod <mod name>\n"); + exit(1); + } + + init_mikmod(); + + if ((mf = MikMod_LoadSong(argv[1], cfg_maxchn)) != NULL) { + mf->extspd = cfg_extspd; + mf->panflag = cfg_panning; + mf->loop = cfg_loop; + + Player_Start(mf); + + /* + * set the number of voices to use.. you could add extra channels + * here (e.g. md_numchn=mf->numchn+4; ) to use for your own + * soundeffects: + */ + + while (Player_Active()) { /* if we have a quit signal, exit + * loop */ + MikMod_Update(); + + usleep(500); + } + + Player_Stop(); /* stop playing */ + MikMod_FreeSong(mf); /* and free the module */ + } else { + /* didn't work -> exit with errormsg. */ + printf("MikMod Error\n"); + } + + MikMod_Exit(); +} + +void +init_mikmod(void) +{ + /* + * Initialize soundcard parameters.. you _have_ to do this before calling + * MD_Init(), and it's illegal to change them after you've called + * MD_Init() + */ + + md_mixfreq = 44100; /* standard mixing freq */ + md_dmabufsize = 32768; /* standard dma buf size (max 32000) */ + md_device = 0; /* standard device: autodetect */ + md_volume = 96; /* driver volume (max 128) */ + md_musicvolume = 128; /* music volume (max 128) */ + md_sndfxvolume = 128; /* sound effects volume (max 128) */ + md_pansep = 128; /* panning separation (0 = mono, 128 = full + * stereo) */ + /* md_stereodelay = 10; /* Stereo Delay (max 15) */ + md_reverb = 0; /* Reverb (max 15) */ + md_mode = + DMODE_16BITS | + DMODE_STEREO | + DMODE_SOFT_MUSIC; /* default mixing mode */ + + /* Register the loaders we want to use.. */ + MikMod_RegisterAllLoaders(); + + /* Register the drivers we want to use: */ + MikMod_RegisterAllDrivers(); + + MikMod_RegisterDriver(drv_wav); + MikMod_RegisterDriver(drv_raw); + MikMod_RegisterDriver(drv_nos); + + MikMod_Init(); + +}