diff --git a/src/android/i_sound.c b/src/android/i_sound.c
index 24db3e21d04c096dd9e9561f78a9a7c2beb9ea08..c99f340960647e8a050f656b6e9f427d556f7c3f 100644
--- a/src/android/i_sound.c
+++ b/src/android/i_sound.c
@@ -84,13 +84,6 @@ void I_InitMIDIMusic(void){}
 
 void I_ShutdownMIDIMusic(void){}
 
-INT32 I_RegisterSong(void *data, size_t len)
-{
-        (void)data;
-        (void)len;
-        return -1;
-}
-
 boolean I_PlaySong(INT32 handle, INT32 looping)
 {
         (void)handle;
diff --git a/src/djgppdos/i_sound.c b/src/djgppdos/i_sound.c
index dcf64fa6901ffcee2f06ffca730095612da08800..6fd743aef330e9711473b1970c9295d4b7fa1721 100644
--- a/src/djgppdos/i_sound.c
+++ b/src/djgppdos/i_sound.c
@@ -423,19 +423,6 @@ void I_ShutdownMusic(void)
 	I_ShutdownDigMusic();
 }
 
-boolean I_PlaySong(INT32 handle, INT32 looping)
-{
-	handle = 0;
-	if (nomidimusic)
-		return false;
-
-	islooping = looping;
-	musicdies = gametic + NEWTICRATE*30;
-	if (play_midi(currsong,looping)==0)
-		return true;
-	return false;
-}
-
 void I_PauseSong (INT32 handle)
 {
 	handle = 0;
@@ -486,11 +473,24 @@ void I_UnRegisterSong(INT32 handle)
 	//destroy_midi(currsong);
 }
 
-INT32 I_RegisterSong(void *data, size_t len)
+boolean I_StartDigSong(const char *musicname, INT32 looping)
 {
+	/////////////////
+	// Load the song!
+
+	char *data;
+	size_t len;
+	lumpnum_t lumpnum = W_CheckNumForName(va("D_%s",musicname));
+
+	if (lumpnum == LUMPERROR)
+		return false;
+
+	data = (char *)W_CacheLumpNum(lumpnum, PU_MUSIC);
+	len = W_LumpLength(lumpnum);
+
 	int e = len; //Alam: For error
 	if (nomidimusic)
-		return 0;
+		return false;
 
 	if (memcmp(data,"MThd",4)==0) // support mid file in WAD !!!
 	{
@@ -499,24 +499,25 @@ INT32 I_RegisterSong(void *data, size_t len)
 	else
 	{
 		CONS_Printf("Music Lump is not a MIDI lump\n");
-		return 0;
+		return false;
 	}
 
 	if (currsong==NULL)
 	{
 		CONS_Printf("Not a valid mid file : %d\n",e);
-		return 0;
+		return false;
 	}
 
-	return 1;
-}
+	/////////////////
+	// Play the song!
+	handle = 0;
+	if (nomidimusic)
+		return false;
 
-/// \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");
+	islooping = looping;
+	musicdies = gametic + NEWTICRATE*30;
+	if (play_midi(currsong,looping)==0)
+		return true;
 	return false;
 }
 
diff --git a/src/dummy/i_sound.c b/src/dummy/i_sound.c
index 89ccc2b6a911aca69bea4d5b79361e33a94e945f..6b2ebeab206320fe567ee4b3c00309277a122214 100644
--- a/src/dummy/i_sound.c
+++ b/src/dummy/i_sound.c
@@ -83,20 +83,6 @@ void I_InitMIDIMusic(void){}
 
 void I_ShutdownMIDIMusic(void){}
 
-INT32 I_RegisterSong(void *data, size_t len)
-{
-	(void)data;
-	(void)len;
-	return -1;
-}
-
-boolean I_PlaySong(INT32 handle, boolean looping)
-{
-	(void)handle;
-	(void)looping;
-	return false;
-}
-
 void I_StopSong(INT32 handle)
 {
 	(void)handle;
diff --git a/src/s_sound.c b/src/s_sound.c
index 6a55523b8038b795f268eff105dde3c56b0411a4..b921f733bef69f29b9426f357091db1296b3ca08 100644
--- a/src/s_sound.c
+++ b/src/s_sound.c
@@ -1308,53 +1308,9 @@ const char *compat_special_music_slots[16] =
 #define music_playing (music_name[0]) // String is empty if no music is playing
 
 static char      music_name[7]; // up to 6-character name
-static lumpnum_t music_lumpnum; // lump number of music (used??)
-static void     *music_data;    // music raw data
-static INT32     music_handle;  // once registered, the handle for the music
 
 static boolean mus_paused     = 0;  // whether songs are mus_paused
 
-static boolean S_MIDIMusic(const char *mname, boolean looping)
-{
-	lumpnum_t mlumpnum;
-	void *mdata;
-	INT32 mhandle;
-
-	if (nomidimusic || music_disabled)
-		return false; // didn't search.
-
-	if (W_CheckNumForName(va("d_%s", mname)) == LUMPERROR)
-		return false;
-	mlumpnum = W_GetNumForName(va("d_%s", mname));
-
-	// load & register it
-	mdata = W_CacheLumpNum(mlumpnum, PU_MUSIC);
-	mhandle = I_RegisterSong(mdata, W_LumpLength(mlumpnum));
-
-#ifdef MUSSERV
-	if (msg_id != -1)
-	{
-		struct musmsg msg_buffer;
-
-		msg_buffer.msg_type = 6;
-		memset(msg_buffer.msg_text, 0, sizeof (msg_buffer.msg_text));
-		sprintf(msg_buffer.msg_text, "d_%s", mname);
-		msgsnd(msg_id, (struct msgbuf*)&msg_buffer, sizeof (msg_buffer.msg_text), IPC_NOWAIT);
-	}
-#endif
-
-	// play it
-	if (!I_PlaySong(mhandle, looping))
-		return false;
-
-	strncpy(music_name, mname, 7);
-	music_name[6] = 0;
-	music_lumpnum = mlumpnum;
-	music_data = mdata;
-	music_handle = mhandle;
-	return true;
-}
-
 static boolean S_DigMusic(const char *mname, boolean looping)
 {
 	if (nodigimusic || digital_disabled)
@@ -1365,9 +1321,6 @@ static boolean S_DigMusic(const char *mname, boolean looping)
 
 	strncpy(music_name, mname, 7);
 	music_name[6] = 0;
-	music_lumpnum = LUMPERROR;
-	music_data = NULL;
-	music_handle = 0;
 	return true;
 }
 
@@ -1386,7 +1339,7 @@ void S_ChangeMusic(const char *mmusic, UINT16 mflags, boolean looping)
 	if (strncmp(music_name, mmusic, 6))
 	{
 		S_StopMusic(); // shutdown old music
-		if (!S_DigMusic(mmusic, looping) && !S_MIDIMusic(mmusic, looping))
+		if (!S_DigMusic(mmusic, looping))
 		{
 			CONS_Alert(CONS_ERROR, M_GetText("Music lump %.6s not found!\n"), mmusic);
 			return;