diff --git a/assets b/assets
index 5f1726f1b..90d7bcfaf 160000
--- a/assets
+++ b/assets
@@ -1 +1 @@
-Subproject commit 5f1726f1b0c11fc747b7473708cf4e5f28be05f1
+Subproject commit 90d7bcfaf9f46303c1b644bd36350de80df9f2c6
diff --git a/source/funkin/audio/FunkinSound.hx b/source/funkin/audio/FunkinSound.hx
index 687860265..6520ff27f 100644
--- a/source/funkin/audio/FunkinSound.hx
+++ b/source/funkin/audio/FunkinSound.hx
@@ -1,17 +1,18 @@
 package funkin.audio;
 
-import flixel.sound.FlxSound;
 import flixel.group.FlxGroup.FlxTypedGroup;
-import flixel.util.FlxSignal.FlxTypedSignal;
+import flixel.math.FlxMath;
+import flixel.sound.FlxSound;
 import flixel.system.FlxAssets.FlxSoundAsset;
-import funkin.util.tools.ICloneable;
+import flixel.tweens.FlxTween;
+import flixel.util.FlxSignal.FlxTypedSignal;
+import funkin.audio.waveform.WaveformData;
+import funkin.audio.waveform.WaveformDataParser;
 import funkin.data.song.SongData.SongMusicData;
 import funkin.data.song.SongRegistry;
-import funkin.audio.waveform.WaveformData;
-import openfl.media.SoundMixer;
-import funkin.audio.waveform.WaveformDataParser;
-import flixel.math.FlxMath;
+import funkin.util.tools.ICloneable;
 import openfl.Assets;
+import openfl.media.SoundMixer;
 #if (openfl >= "8.0.0")
 import openfl.utils.AssetType;
 #end
@@ -325,6 +326,7 @@ class FunkinSound extends FlxSound implements ICloneable<FunkinSound>
 
     if (FlxG.sound.music != null)
     {
+      FlxG.sound.music.fadeTween?.cancel();
       FlxG.sound.music.stop();
       FlxG.sound.music.kill();
     }
@@ -401,6 +403,8 @@ class FunkinSound extends FlxSound implements ICloneable<FunkinSound>
   {
     // trace('[FunkinSound] Destroying sound "${this._label}"');
     super.destroy();
+    FlxTween.cancelTweensOf(this);
+    this._label = 'unknown';
   }
 
   /**
diff --git a/source/funkin/audio/SoundGroup.hx b/source/funkin/audio/SoundGroup.hx
index 9a754049b..020d5f5bb 100644
--- a/source/funkin/audio/SoundGroup.hx
+++ b/source/funkin/audio/SoundGroup.hx
@@ -152,9 +152,12 @@ class SoundGroup extends FlxTypedGroup<FunkinSound>
    */
   public function stop()
   {
-    forEachAlive(function(sound:FunkinSound) {
-      sound.stop();
-    });
+    if (members != null)
+    {
+      forEachAlive(function(sound:FunkinSound) {
+        sound.stop();
+      });
+    }
   }
 
   public override function destroy()
diff --git a/source/funkin/audio/VoicesGroup.hx b/source/funkin/audio/VoicesGroup.hx
index 5daebc89d..91054cfb0 100644
--- a/source/funkin/audio/VoicesGroup.hx
+++ b/source/funkin/audio/VoicesGroup.hx
@@ -160,7 +160,9 @@ class VoicesGroup extends SoundGroup
   public override function destroy():Void
   {
     playerVoices.destroy();
+    playerVoices = null;
     opponentVoices.destroy();
+    opponentVoices = null;
     super.destroy();
   }
 }
diff --git a/source/funkin/play/PlayState.hx b/source/funkin/play/PlayState.hx
index 169809a63..6dc41e3f9 100644
--- a/source/funkin/play/PlayState.hx
+++ b/source/funkin/play/PlayState.hx
@@ -1925,14 +1925,14 @@ class PlayState extends MusicBeatSubState
     FlxG.sound.music.play(true, startTimestamp - Conductor.instance.instrumentalOffset);
     FlxG.sound.music.pitch = playbackRate;
 
-    // I am going insane.
+    // Prevent the volume from being wrong.
     FlxG.sound.music.volume = 1.0;
-
     FlxG.sound.music.fadeTween?.cancel();
 
     trace('Playing vocals...');
     add(vocals);
     vocals.play();
+    vocals.volume = 1.0;
     vocals.pitch = playbackRate;
     resyncVocals();
 
@@ -2927,6 +2927,9 @@ class PlayState extends MusicBeatSubState
     // If the camera is being tweened, stop it.
     cancelAllCameraTweens();
 
+    // Dispatch the destroy event.
+    dispatchEvent(new ScriptEvent(DESTROY, false));
+
     if (currentConversation != null)
     {
       remove(currentConversation);
@@ -2970,7 +2973,6 @@ class PlayState extends MusicBeatSubState
     {
       remove(currentStage);
       currentStage.kill();
-      dispatchEvent(new ScriptEvent(DESTROY, false));
       currentStage = null;
     }
 
diff --git a/source/funkin/ui/story/StoryMenuState.hx b/source/funkin/ui/story/StoryMenuState.hx
index d3aa68c49..5881ef624 100644
--- a/source/funkin/ui/story/StoryMenuState.hx
+++ b/source/funkin/ui/story/StoryMenuState.hx
@@ -438,6 +438,8 @@ class StoryMenuState extends MusicBeatState
       }
     }
 
+    FunkinSound.playOnce(Paths.sound('scrollMenu'), 0.4);
+
     updateText();
     updateBackground(previousLevelId);
     updateProps();
@@ -481,6 +483,7 @@ class StoryMenuState extends MusicBeatState
     if (hasChanged)
     {
       buildDifficultySprite();
+      FunkinSound.playOnce(Paths.sound('scrollMenu'), 0.4);
       // Disable the funny music thing for now.
       // funnyMusicThing();
     }