Index: code/parse/sexp.cpp
===================================================================
--- code/parse/sexp.cpp	(revision 11284)
+++ code/parse/sexp.cpp	(working copy)
@@ -10490,7 +10490,7 @@
 
 	if (n > 0) {
 		int option = audio_volume_option_lookup(CTEXT(n));
-		if (option > 0) {
+		if (option >= 0) {
 			n = CDR(n);
 
 			float target_volume = 1.0f;
Index: code/sound/sound.cpp
===================================================================
--- code/sound/sound.cpp	(revision 11284)
+++ code/sound/sound.cpp	(working copy)
@@ -12,6 +12,7 @@
 #include "render/3d.h"
 #include "sound/sound.h"
 #include "sound/audiostr.h"
+#include "gamesnd/eventmusic.h"
 #include "cmdline/cmdline.h"
 #include "osapi/osapi.h"
 #include "globalincs/vmallocator.h"
@@ -1518,6 +1519,12 @@
 	//apply change
 	*volume_now = data->start_volume + (data->delta * done);
 	CLAMP(*volume_now, 0.0f, 1.0f);
+
+	// if setting music volume, trigger volume change in playing tracks
+	// done here in order to avoid setting music volume in every frame regardless if it changed or not
+	if (&aav_music_volume == volume_now) {
+		audiostream_set_volume_all(Master_event_music_volume * aav_music_volume, ASF_EVENTMUSIC);
+	}
 }
 
 void snd_aav_init()
