diff --git a/src/d_main.c b/src/d_main.c
index 5cf95f4b8d6b30f66f65e5a2838704e830799aa7..28f89f4f00c6c33193604a5169ac8541352ff87a 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -1325,10 +1325,6 @@ void D_SRB2Main(void)
 		midi_disabled = true;
 #endif
 	}
-	else
-	{
-		CONS_Printf("S_InitSfxChannels(): Setting up sound channels.\n");
-	}
 	if (M_CheckParm("-nosound"))
 		sound_disabled = true;
 	if (M_CheckParm("-nomusic")) // combines -nomidimusic and -nodigmusic
@@ -1347,10 +1343,18 @@ void D_SRB2Main(void)
 		if (M_CheckParm("-nodigmusic"))
 			digital_disabled = true; // WARNING: DOS version initmusic in I_StartupSound
 	}
-	I_StartupSound();
-	I_InitMusic();
-	S_InitSfxChannels(cv_soundvolume.value);
-	S_InitMusicDefs();
+	if (!( sound_disabled && digital_disabled
+#ifndef NO_MIDI
+				&& midi_disabled
+#endif
+	 ))
+	{
+		CONS_Printf("S_InitSfxChannels(): Setting up sound channels.\n");
+		I_StartupSound();
+		I_InitMusic();
+		S_InitSfxChannels(cv_soundvolume.value);
+		S_InitMusicDefs();
+	}
 
 	CONS_Printf("ST_Init(): Init status bar.\n");
 	ST_Init();