From 53753ef6f2fd9fd22f95be7a9b9ad1a1fd127bd2 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Sat, 15 Nov 2025 16:54:47 -0500 Subject: [PATCH] Show Music formats by name in dbg_music --- src/deh_tables.c | 1 + src/i_sound.h | 3 ++- src/s_sound.c | 44 +++++++++++++++++++++++++++++++++++++++++++ src/s_sound.h | 1 + src/sdl/al_sound.c | 33 ++++++++++++++++++++++++++++++-- src/sdl/mixer_sound.c | 6 ++++++ src/st_stuff.c | 3 ++- 7 files changed, 87 insertions(+), 4 deletions(-) diff --git a/src/deh_tables.c b/src/deh_tables.c index 345e9488d..3f75781ab 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -1452,6 +1452,7 @@ struct int_const_s const INT_CONST[] = { {"MU_WAV", MU_WAV}, {"MU_MOD", MU_MOD}, {"MU_MID", MU_MID}, + {"MU_OPUS", MU_OPUS}, {"MU_OGG", MU_OGG}, {"MU_MP3", MU_MP3}, {"MU_FLAC", MU_FLAC}, diff --git a/src/i_sound.h b/src/i_sound.h index 3857ea5ce..7a5b826d2 100644 --- a/src/i_sound.h +++ b/src/i_sound.h @@ -29,11 +29,12 @@ typedef enum { MU_MOD, MU_MID, MU_OGG, + MU_OPUS, MU_MP3, MU_FLAC, MU_GME, MU_MOD_EX, // libopenmpt - MU_MID_EX // Non-native MIDI + MU_MID_EX, // Non-native MIDI } musictype_t; /** \brief Sound subsystem runing and waiting diff --git a/src/s_sound.c b/src/s_sound.c index 34f1d7e86..8cb665dfa 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -1859,6 +1859,50 @@ musictype_t S_MusicType(void) return I_SongType(); } +const char *S_MusicTypeName(musictype_t mustype) +{ + const char *TypeString = "Unknown"; + musictype_t MusicType = mustype; + + switch (MusicType) + { + case MU_GME: + TypeString = "Game Music Emu"; + break; + case MU_MOD_EX: + TypeString = "OpenMPT"; + break; + case MU_MOD: + TypeString = "MOD"; + break; + case MU_MID: + TypeString = "Native MIDI"; + break; + case MU_MID_EX: + TypeString = "Software MIDI"; + break; + case MU_WAV: + TypeString = "Wave Audio"; + break; + case MU_OPUS: + TypeString = "Opus"; + break; + case MU_OGG: + TypeString = "Vorbis"; + break; + case MU_MP3: + TypeString = "MPEG"; + break; + case MU_FLAC: + TypeString = "FLAC"; + break; + default: + break; + } + + return TypeString; +} + const char *S_MusicName(void) { return music_name; diff --git a/src/s_sound.h b/src/s_sound.h index 84cb6489e..f31e142cb 100644 --- a/src/s_sound.h +++ b/src/s_sound.h @@ -153,6 +153,7 @@ boolean S_MusicPlaying(void); boolean S_MusicPaused(void); boolean S_MusicNotInFocus(void); musictype_t S_MusicType(void); +const char *S_MusicTypeName(musictype_t mustype); const char *S_MusicName(void); boolean S_MusicExists(const char *mname); diff --git a/src/sdl/al_sound.c b/src/sdl/al_sound.c index aff0c9be9..67fc48b85 100644 --- a/src/sdl/al_sound.c +++ b/src/sdl/al_sound.c @@ -951,9 +951,38 @@ musictype_t I_SongType(void) if (openmpt_mhandle) return MU_MOD_EX; #endif + + // TODO if ever ported back to SRB2: add fluidsynth support + if (audio.music != INVALID_HANDLE) - return MU_MP3; - // TODO: add fluidsynth support + { + switch ((audio.musicinfo.format & SF_FORMAT_SUBMASK)) + { + case SF_FORMAT_OPUS: + return MU_OPUS; + break; + case SF_FORMAT_VORBIS: + return MU_OGG; + break; + case SF_FORMAT_FLAC: + case SF_FORMAT_ALAC_20: + case SF_FORMAT_ALAC_24: + case SF_FORMAT_ALAC_32: + return MU_FLAC; + break; + case SF_FORMAT_WAV: + return MU_WAV; + break; +#ifdef HAVE_SNDFILE_MPEG + case SF_FORMAT_MPEG_LAYER_I: + case SF_FORMAT_MPEG_LAYER_II: + case SF_FORMAT_MPEG_LAYER_III: + return MU_MP3; + break; +#endif + } + } + return MU_NONE; } diff --git a/src/sdl/mixer_sound.c b/src/sdl/mixer_sound.c index 2cc9ae7ca..dc56633fc 100644 --- a/src/sdl/mixer_sound.c +++ b/src/sdl/mixer_sound.c @@ -817,6 +817,12 @@ musictype_t I_SongType(void) case MUS_MP3: case MUS_MP3_MAD: return MU_MP3; + case MUS_OPUS: + return MU_OPUS; + case MUS_OGG: + return MU_OGG; + case MUS_WAV: + return MU_WAV; default: return (musictype_t)mustype; } diff --git a/src/st_stuff.c b/src/st_stuff.c index 6d66b2398..be67821c0 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -467,7 +467,8 @@ static void ST_drawMusicDebug(INT32 *height) if (format) { - ST_pushDebugString(height, va(" Format: %d", S_MusicType())); + musictype_t mustype = S_MusicType(); + ST_pushDebugString(height, va(" Format: %s", S_MusicTypeName(mustype))); } ST_pushDebugString(height, va(" Song: %8s", mname));