diff --git a/src/i_sound.h b/src/i_sound.h
index 14eb6c2157214a31466361dd483bcaeebef6d891..59d9c438294d33cf03897508287610dea1d24907 100644
--- a/src/i_sound.h
+++ b/src/i_sound.h
@@ -132,6 +132,18 @@ void I_PauseSong(INT32 handle);
 */
 void I_ResumeSong(INT32 handle);
 
+/**	\brief Get MIDI music status
+
+	\return boolean
+*/
+boolean I_MIDIPlaying(void);
+
+/**	\brief Get general music status
+
+	\return boolean
+*/
+boolean I_MusicPlaying(void);
+
 //
 //  MIDI I/O
 //
diff --git a/src/s_sound.c b/src/s_sound.c
index 6e4f9494da467680dbe23122a2742eb961d04d29..092f1c7797e68554a210775b6fe3b0af067d965a 100644
--- a/src/s_sound.c
+++ b/src/s_sound.c
@@ -1575,3 +1575,13 @@ void S_ResumeAudio(void)
 	// resume cd music
 	I_ResumeCD();
 }
+
+boolean S_MIDIPlaying(void)
+{
+	return I_MIDIPlaying();
+}
+
+boolean S_MusicPlaying(void)
+{
+	return I_MusicPlaying();
+}
diff --git a/src/s_sound.h b/src/s_sound.h
index bb7cad07126b2f0122d9143a71639eb14869835b..a463b85810f120d1f650950a8b8b34e91d37edf0 100644
--- a/src/s_sound.h
+++ b/src/s_sound.h
@@ -148,6 +148,12 @@ void S_StopMusic(void);
 void S_PauseAudio(void);
 void S_ResumeAudio(void);
 
+// Gets MIDI music status
+boolean S_MIDIPlaying(void);
+
+// Gets general music status
+boolean S_MusicPlaying(void);
+
 //
 // Updates music & sounds
 //
diff --git a/src/sdl/mixer_sound.c b/src/sdl/mixer_sound.c
index 2e9a91ef92e98b62b714296ad85c0b57f67363ae..d94093f81ad861738e00bbdac9d8bc04330a9692 100644
--- a/src/sdl/mixer_sound.c
+++ b/src/sdl/mixer_sound.c
@@ -497,6 +497,16 @@ void I_ResumeSong(INT32 handle)
 	songpaused = false;
 }
 
+boolean I_MIDIPlaying(void)
+{
+	return midimode && music;
+}
+
+boolean I_MusicPlaying(void)
+{
+	return (boolean)music;
+}
+
 //
 // Digital Music
 //
diff --git a/src/win32/win_snd.c b/src/win32/win_snd.c
index e125c721dbcabeaaf39beea44c4157e32abba32a..7b220f12bd4d3941f9098735a635c8ed8ebe941e 100644
--- a/src/win32/win_snd.c
+++ b/src/win32/win_snd.c
@@ -468,6 +468,16 @@ void I_ResumeSong(INT32 handle)
 		FMR_MUSIC(FMOD_Channel_SetPaused(music_channel, false));
 }
 
+boolean I_MIDIPlaying(void)
+{
+	return midimode && music_stream;
+}
+
+boolean I_MusicPlaying(void)
+{
+	return (boolean)music_stream;
+}
+
 void I_InitDigMusic(void)
 {
 }