Playback routines other targets

This commit is contained in:
mazmazz 2018-08-23 09:06:31 -04:00
parent 7efab8b314
commit 75cbfab8c6
5 changed files with 81 additions and 218 deletions

View File

@ -80,30 +80,26 @@ void I_ResumeSong(INT32 handle)
UINT8 midimusic_started = 0;
void I_InitMIDIMusic(void){}
void I_ShutdownMIDIMusic(void){}
INT32 I_RegisterSong(void *data, size_t len)
boolean I_LoadSong(void *data, size_t len)
{
(void)data;
(void)len;
return -1;
}
boolean I_PlaySong(INT32 handle, INT32 looping)
boolean I_PlaySong(void)
{
(void)handle;
(void)looping;
return false;
}
void I_StopSong(INT32 handle)
void I_StopSong(void)
{
(void)handle;
}
void I_UnRegisterSong(INT32 handle)
void I_UnloadSong(void)
{
(void)handle;
}
@ -114,19 +110,6 @@ void I_UnRegisterSong(INT32 handle)
UINT8 digmusic_started = 0;
void I_InitDigMusic(void){}
void I_ShutdownDigMusic(void){}
boolean I_StartDigSong(const char *musicname, INT32 looping)
{
(void)musicname;
(void)looping;
return false;
}
void I_StopDigSong(void){}
void I_SetDigMusicVolume(INT32 volume)
{
(void)volume;

View File

@ -380,7 +380,7 @@ static MIDI *load_midi_mem(char *mempointer,int *e)
return midi;
}
void I_InitMIDIMusic(void)
void I_InitMusic(void)
{
if (nomidimusic)
return;
@ -389,7 +389,7 @@ void I_InitMIDIMusic(void)
music_started = true;
}
void I_ShutdownMIDIMusic(void)
void I_ShutdownMusic(void)
{
if ( !music_started )
return;
@ -399,31 +399,7 @@ void I_ShutdownMIDIMusic(void)
music_started=false;
}
void I_InitDigMusic(void)
{
// CONS_Printf("Digital music not yet supported under DOS.\n");
}
void I_ShutdownDigMusic(void)
{
// CONS_Printf("Digital music not yet supported under DOS.\n");
}
void I_InitMusic(void)
{
if (!nodigimusic)
I_InitDigMusic();
if (!nomidimusic)
I_InitMIDIMusic();
}
void I_ShutdownMusic(void)
{
I_ShutdownMIDIMusic();
I_ShutdownDigMusic();
}
boolean I_PlaySong(INT32 handle, INT32 looping)
boolean I_PlaySong(void)
{
handle = 0;
if (nomidimusic)
@ -454,7 +430,7 @@ void I_ResumeSong (INT32 handle)
midi_resume();
}
void I_StopSong(INT32 handle)
void I_StopSong(void)
{
handle = 0;
if (nomidimusic)
@ -477,7 +453,7 @@ int I_QrySongPlaying(int handle)
}
#endif
void I_UnRegisterSong(INT32 handle)
void I_UnloadSong(void)
{
handle = 0;
if (nomidimusic)
@ -486,7 +462,7 @@ void I_UnRegisterSong(INT32 handle)
//destroy_midi(currsong);
}
INT32 I_RegisterSong(void *data, size_t len)
boolean I_LoadSong(void *data, size_t len)
{
int e = len; //Alam: For error
if (nomidimusic)
@ -511,20 +487,6 @@ INT32 I_RegisterSong(void *data, size_t len)
return 1;
}
/// \todo Add OGG/MP3 support for dos
boolean I_StartDigSong(const char *musicname, INT32 looping)
{
musicname = NULL;
looping = 0;
//CONS_Printf("I_StartDigSong: Not yet supported under DOS.\n");
return false;
}
void I_StopDigSong(void)
{
// CONS_Printf("I_StopDigSong: Not yet supported under DOS.\n");
}
void I_SetDigMusicVolume(INT32 volume)
{
volume = 0;

View File

@ -79,30 +79,26 @@ void I_ResumeSong(INT32 handle)
// MIDI I/O
//
void I_InitMIDIMusic(void){}
void I_ShutdownMIDIMusic(void){}
INT32 I_RegisterSong(void *data, size_t len)
boolean I_LoadSong(void *data, size_t len)
{
(void)data;
(void)len;
return -1;
}
boolean I_PlaySong(INT32 handle, boolean looping)
boolean I_PlaySong(void)
{
(void)handle;
(void)looping;
return false;
}
void I_StopSong(INT32 handle)
void I_StopSong(void)
{
(void)handle;
}
void I_UnRegisterSong(INT32 handle)
void I_UnloadSong(void)
{
(void)handle;
}
@ -111,19 +107,6 @@ void I_UnRegisterSong(INT32 handle)
// DIGMUSIC I/O
//
void I_InitDigMusic(void){}
void I_ShutdownDigMusic(void){}
boolean I_StartDigSong(const char *musicname, boolean looping)
{
(void)musicname;
(void)looping;
return false;
}
void I_StopDigSong(void){}
void I_SetDigMusicVolume(UINT8 volume)
{
(void)volume;

View File

@ -1313,12 +1313,6 @@ void I_StartupSound(void)
// MUSIC API.
//
void I_ShutdownMIDIMusic(void)
{
nomidimusic = false;
if (nodigimusic) I_ShutdownMusic();
}
#ifdef HAVE_LIBGME
static void I_ShutdownGMEMusic(void)
{
@ -1330,12 +1324,6 @@ static void I_ShutdownGMEMusic(void)
}
#endif
void I_ShutdownDigMusic(void)
{
nodigimusic = false;
if (nomidimusic) I_ShutdownMusic();
}
#ifdef HAVE_MIXER
static boolean LoadSong(void *data, size_t lumplength, size_t selectpos)
{
@ -1436,8 +1424,8 @@ void I_ShutdownMusic(void)
CONS_Printf("%s", M_GetText("I_ShutdownMusic: "));
I_UnRegisterSong(0);
I_StopDigSong();
I_UnloadSong();
I_StopSong();
Mix_CloseAudio();
#ifdef MIX_INIT
Mix_Quit();
@ -1450,16 +1438,6 @@ void I_ShutdownMusic(void)
#endif
}
void I_InitMIDIMusic(void)
{
if (nodigimusic) I_InitMusic();
}
void I_InitDigMusic(void)
{
if (nomidimusic) I_InitMusic();
}
void I_InitMusic(void)
{
#ifdef HAVE_MIXER
@ -1639,17 +1617,29 @@ void I_ResumeSong(INT32 handle)
#endif
}
void I_StopSong(INT32 handle)
void I_StopSong(void)
{
(void)handle;
I_StopGME();
#ifdef HAVE_MIXER
if (nomidimusic || !musicStarted)
if (nodigimusic)
return;
Mix_FadeOutMusic(MIDIfade);
#ifdef MIXER_POS
if (canlooping)
Mix_HookMusicFinished(NULL);
#endif
Mix_HaltMusic();
while (Mix_PlayingMusic())
;
if (music[1])
Mix_FreeMusic(music[1]);
music[1] = NULL;
LoadSong(NULL, 0, 1);
}
void I_UnRegisterSong(INT32 handle)
void I_UnloadSong(void)
{
#ifdef HAVE_MIXER
@ -1669,7 +1659,7 @@ void I_UnRegisterSong(INT32 handle)
#endif
}
INT32 I_RegisterSong(void *data, size_t len)
boolean I_LoadSong(void *data, size_t len)
{
#ifdef HAVE_MIXER
if (nomidimusic || !musicStarted)
@ -1771,7 +1761,7 @@ boolean I_StartDigSong(const char *musicname, boolean looping)
lumpnum = W_CheckNumForName(filename);
I_StopDigSong();
I_StopSong();
if (lumpnum == LUMPERROR)
{
@ -1923,29 +1913,6 @@ static void I_StopGME(void)
#endif
}
void I_StopDigSong(void)
{
I_StopGME();
#ifdef HAVE_MIXER
if (nodigimusic)
return;
#ifdef MIXER_POS
if (canlooping)
Mix_HookMusicFinished(NULL);
#endif
Mix_HaltMusic();
while (Mix_PlayingMusic())
;
if (music[1])
Mix_FreeMusic(music[1]);
music[1] = NULL;
LoadSong(NULL, 0, 1);
#endif
}
void I_SetDigMusicVolume(UINT8 volume)
{
#ifdef HAVE_MIXER

View File

@ -450,8 +450,7 @@ void I_InitMusic(void)
void I_ShutdownMusic(void)
{
I_ShutdownDigMusic();
I_ShutdownMIDIMusic();
I_StopSong();
}
void I_PauseSong(INT32 handle)
@ -468,17 +467,7 @@ void I_ResumeSong(INT32 handle)
FMR_MUSIC(FMOD_Channel_SetPaused(music_channel, false));
}
void I_InitDigMusic(void)
{
}
void I_ShutdownDigMusic(void)
{
if (!midimode)
I_StopDigSong();
}
boolean I_StartDigSong(const char *musicname, boolean looping)
boolean I_LoadSong(char *data, size_t len)
{
char *data;
size_t len;
@ -603,8 +592,6 @@ boolean I_StartDigSong(const char *musicname, boolean looping)
{
gme_equalizer_t gmeq = {GME_TREBLE, GME_BASS, 0,0,0,0,0,0,0,0};
Z_Free(data); // We don't need this anymore.
gme_start_track(gme, 0);
current_track = 0;
gme_set_equalizer(gme,&gmeq);
fmt.format = FMOD_SOUND_FORMAT_PCM16;
fmt.defaultfrequency = 44100;
@ -614,32 +601,21 @@ boolean I_StartDigSong(const char *musicname, boolean looping)
fmt.pcmreadcallback = GMEReadCallback;
fmt.userdata = gme;
FMR(FMOD_System_CreateStream(fsys, NULL, FMOD_OPENUSER | (looping ? FMOD_LOOP_NORMAL : 0), &fmt, &music_stream));
FMR(FMOD_System_PlaySound(fsys, FMOD_CHANNEL_FREE, music_stream, false, &music_channel));
FMR(FMOD_Channel_SetVolume(music_channel, music_volume / 31.0));
FMR(FMOD_Channel_SetPriority(music_channel, 0));
return true;
}
#endif
fmt.length = len;
FMOD_RESULT e = FMOD_System_CreateStream(fsys, data, FMOD_OPENMEMORY_POINT|(looping ? FMOD_LOOP_NORMAL : 0), &fmt, &music_stream);
if (e != FMOD_OK)
{
FMOD_RESULT e = FMOD_System_CreateStream(fsys, data, FMOD_OPENMEMORY_POINT|(looping ? FMOD_LOOP_NORMAL : 0), &fmt, &music_stream);
if (e != FMOD_OK)
{
if (e == FMOD_ERR_FORMAT)
CONS_Alert(CONS_WARNING, "Failed to play music lump %s due to invalid format.\n", W_CheckNameForNum(lumpnum));
else
FMR(e);
return false;
}
if (e == FMOD_ERR_FORMAT)
CONS_Alert(CONS_WARNING, "Failed to play music lump %s due to invalid format.\n", W_CheckNameForNum(lumpnum));
else
FMR(e);
return false;
}
FMR(FMOD_System_PlaySound(fsys, FMOD_CHANNEL_FREE, music_stream, false, &music_channel));
if (midimode)
FMR(FMOD_Channel_SetVolume(music_channel, midi_volume / 31.0));
else
FMR(FMOD_Channel_SetVolume(music_channel, music_volume / 31.0));
FMR(FMOD_Channel_SetPriority(music_channel, 0));
current_track = 0;
// Try to find a loop point in streaming music formats (ogg, mp3)
if (looping)
@ -660,6 +636,13 @@ boolean I_StartDigSong(const char *musicname, boolean looping)
return true;
}
// todo
// if(music type == MIDI)
// {
// FMR(FMOD_Sound_SetMode(music_stream, FMOD_LOOP_NORMAL));
// return true;
// }
// Use LOOPMS for time in miliseconds.
e = FMOD_Sound_GetTag(music_stream, "LOOPMS", 0, &tag);
if (e != FMOD_ERR_TAGNOTFOUND)
@ -698,23 +681,10 @@ boolean I_StartDigSong(const char *musicname, boolean looping)
}
}
// No special loop point, but we're playing so it's all good.
// No special loop point
return true;
}
void I_StopDigSong(void)
{
if (music_stream)
FMR(FMOD_Sound_Release(music_stream));
music_stream = NULL;
#ifdef HAVE_LIBGME
if (gme)
gme_delete(gme);
gme = NULL;
#endif
current_track = -1;
}
void I_SetDigMusicVolume(UINT8 volume)
{
// volume is 0 to 31.
@ -805,46 +775,44 @@ boolean I_SetSongTrack(INT32 track)
// Fuck MIDI. ... Okay fine, you can have your silly D_-only mode.
//
void I_InitMIDIMusic(void)
boolean I_PlaySong(void)
{
}
void I_ShutdownMIDIMusic(void)
{
if (midimode)
I_StopSong(0);
}
INT32 I_RegisterSong(void *data, size_t len)
{
FMOD_CREATESOUNDEXINFO fmt;
memset(&fmt, 0, sizeof(FMOD_CREATESOUNDEXINFO));
fmt.cbsize = sizeof(FMOD_CREATESOUNDEXINFO);
fmt.length = len;
FMR(FMOD_System_CreateStream(fsys, (char *)data, FMOD_OPENMEMORY_POINT, &fmt, &music_stream));
return 1337;
}
boolean I_PlaySong(INT32 handle, boolean looping)
{
if (1337 == handle)
#ifdef HAVE_LIBGME
if (gme)
{
midimode = true;
if (looping)
FMR(FMOD_Sound_SetMode(music_stream, FMOD_LOOP_NORMAL));
gme_start_track(gme, 0);
current_track = 0;
FMR(FMOD_System_PlaySound(fsys, FMOD_CHANNEL_FREE, music_stream, false, &music_channel));
FMR_MUSIC(FMOD_Channel_SetVolume(music_channel, midi_volume / 31.0));
FMR_MUSIC(FMOD_Channel_SetPriority(music_channel, 0));
FMR(FMOD_Channel_SetVolume(music_channel, music_volume / 31.0));
FMR(FMOD_Channel_SetPriority(music_channel, 0));
return true;
}
#endif
FMR(FMOD_System_PlaySound(fsys, FMOD_CHANNEL_FREE, music_stream, false, &music_channel));
if (midimode)
FMR(FMOD_Channel_SetVolume(music_channel, midi_volume / 31.0));
else
FMR(FMOD_Channel_SetVolume(music_channel, music_volume / 31.0));
FMR(FMOD_Channel_SetPriority(music_channel, 0));
current_track = 0;
return true;
}
void I_StopSong(INT32 handle)
void I_StopSong(void)
{
I_UnRegisterSong(handle);
#ifdef HAVE_LIBGME
if (gme)
gme_delete(gme);
gme = NULL;
#endif
current_track = -1;
I_UnloadSong();
}
void I_UnRegisterSong(INT32 handle)
void I_UnloadSong(void)
{
UNREFERENCED_PARAMETER(handle);
if (music_stream)