Added I_GetMusicType and removed midimode variable: other targets

This commit is contained in:
mazmazz 2018-08-23 10:19:04 -04:00
parent 55f3803e4b
commit 14b393ab16
5 changed files with 79 additions and 8 deletions

View File

@ -60,6 +60,11 @@ void I_SetSfxVolume(INT32 volume)
// //
UINT8 music_started = 0; UINT8 music_started = 0;
musictype_t I_GetMusicType(void)
{
return MU_NONE;
}
void I_InitMusic(void){} void I_InitMusic(void){}
void I_ShutdownMusic(void){} void I_ShutdownMusic(void){}

View File

@ -322,6 +322,13 @@ static int islooping=0;
static int musicdies=-1; static int musicdies=-1;
UINT8 music_started=0; UINT8 music_started=0;
musictype_t I_GetMusicType(void)
{
if (currsong)
return MU_MID;
else
return MU_NONE;
}
/* load_midi_mem: /* load_midi_mem:
* Loads a standard MIDI file from memory, returning a pointer to * Loads a standard MIDI file from memory, returning a pointer to
@ -403,7 +410,7 @@ void I_ShutdownMusic(void)
if ( !music_started ) if ( !music_started )
return; return;
I_StopSong(1); I_StopSong();
music_started=false; music_started=false;
} }

View File

@ -61,6 +61,11 @@ void I_SetSfxVolume(UINT8 volume)
// MUSIC I/O // MUSIC I/O
// //
musictype_t I_GetMusicType(void)
{
return MU_NONE;
}
void I_InitMusic(void){} void I_InitMusic(void){}
void I_ShutdownMusic(void){} void I_ShutdownMusic(void){}

View File

@ -1313,6 +1313,29 @@ void I_StartupSound(void)
// MUSIC API. // MUSIC API.
// //
musictype_t I_GetMusicType(void)
{
#ifdef HAVE_MIXER
#ifdef HAVE_LIBGME
if (gme)
return MU_GME;
else
#endif
if (!music)
return MU_NONE;
else if (Mix_GetMusicType(music) == MUS_MID)
return MU_MID;
else if (Mix_GetMusicType(music) == MUS_MOD || Mix_GetMusicType(music) == MUS_MODPLUG_UNUSED)
return MU_MOD;
else if (Mix_GetMusicType(music) == MUS_MP3 || Mix_GetMusicType(music) == MUS_MP3_MAD_UNUSED)
return MU_MP3;
else
return (musictype_t)Mix_GetMusicType(music);
#else
return MU_NONE
#endif
}
#ifdef HAVE_LIBGME #ifdef HAVE_LIBGME
static void I_ShutdownGMEMusic(void) static void I_ShutdownGMEMusic(void)
{ {

View File

@ -42,7 +42,6 @@
static FMOD_SYSTEM *fsys; static FMOD_SYSTEM *fsys;
static FMOD_SOUND *music_stream; static FMOD_SOUND *music_stream;
static FMOD_CHANNEL *music_channel; static FMOD_CHANNEL *music_channel;
static boolean midimode;
static UINT8 music_volume, midi_volume, sfx_volume; static UINT8 music_volume, midi_volume, sfx_volume;
static INT32 current_track; static INT32 current_track;
@ -444,6 +443,41 @@ void I_SetSfxVolume(UINT8 volume)
// MUSIC // MUSIC
// //
musictype_t I_GetMusicType(void)
{
#ifdef HAVE_LIBGME
if (gme)
return MU_GME;
#endif
if (!music_stream)
return MU_NONE;
FMOD_SOUND_TYPE type;
if (FMOD_Sound_GetFormat(music_stream, &type, NULL, NULL, NULL) == FMOD_OK)
{
switch(type)
{
case FMOD_SOUND_TYPE_WAV:
return MU_WAV;
case FMOD_SOUND_TYPE_MOD:
return MU_MOD;
case FMOD_SOUND_TYPE_MID:
return MU_MID;
case FMOD_SOUND_TYPE_OGGVORBIS:
return MU_OGG;
case FMOD_SOUND_TYPE_MP3:
return MU_MP3;
case FMOD_SOUND_TYPE_FLAC:
return MU_FLAC;
default:
return MU_NONE;
}
}
else
return MU_NONE;
}
void I_InitMusic(void) void I_InitMusic(void)
{ {
} }
@ -479,10 +513,7 @@ boolean I_LoadSong(char *data, size_t len)
lumpnum = W_CheckNumForName(va("D_%s",musicname)); lumpnum = W_CheckNumForName(va("D_%s",musicname));
if (lumpnum == LUMPERROR) if (lumpnum == LUMPERROR)
return false; return false;
midimode = true;
} }
else
midimode = false;
data = (char *)W_CacheLumpNum(lumpnum, PU_MUSIC); data = (char *)W_CacheLumpNum(lumpnum, PU_MUSIC);
len = W_LumpLength(lumpnum); len = W_LumpLength(lumpnum);
@ -686,7 +717,7 @@ void I_SetDigMusicVolume(UINT8 volume)
{ {
// volume is 0 to 31. // volume is 0 to 31.
music_volume = volume; music_volume = volume;
if (!midimode && music_stream) if (I_GetMusicType() != MU_MID && music_stream)
FMR_MUSIC(FMOD_Channel_SetVolume(music_channel, volume / 31.0)); FMR_MUSIC(FMOD_Channel_SetVolume(music_channel, volume / 31.0));
} }
@ -776,7 +807,7 @@ void I_SetMIDIMusicVolume(UINT8 volume)
{ {
// volume is 0 to 31. // volume is 0 to 31.
midi_volume = volume; midi_volume = volume;
if (midimode && music_stream) if (I_GetMusicType() != MU_MID && music_stream)
FMR_MUSIC(FMOD_Channel_SetVolume(music_channel, volume / 31.0)); FMR_MUSIC(FMOD_Channel_SetVolume(music_channel, volume / 31.0));
} }
@ -795,7 +826,7 @@ boolean I_PlaySong(boolean looping)
#endif #endif
FMR(FMOD_System_PlaySound(fsys, FMOD_CHANNEL_FREE, music_stream, false, &music_channel)); FMR(FMOD_System_PlaySound(fsys, FMOD_CHANNEL_FREE, music_stream, false, &music_channel));
if (midimode) if (I_GetMusicType() != MU_MID)
FMR(FMOD_Channel_SetVolume(music_channel, midi_volume / 31.0)); FMR(FMOD_Channel_SetVolume(music_channel, midi_volume / 31.0));
else else
FMR(FMOD_Channel_SetVolume(music_channel, music_volume / 31.0)); FMR(FMOD_Channel_SetVolume(music_channel, music_volume / 31.0));