diff --git a/__init__.py b/__init__.py
index 807a48ddbbdf14b64a30cda67da80d80981822c9..19ec8a75b20d803fb696ea6ba5aedbe55b456325 100644
--- a/__init__.py
+++ b/__init__.py
@@ -181,6 +181,7 @@ class PetalHero(Application):
             self.load()
         else:
             self.blm.foreground = True
+        media.set_volume(1.0)
         media.load(self.path + '/sounds/menu.mp3')
         self.time = -1
         leds.set_slew_rate(255)
diff --git a/difficulty.py b/difficulty.py
index e73443d1a29702aaa5b233fa006d8ef2a5686a28..5b61639d505ab82739486d28b581fdf05e9483f6 100644
--- a/difficulty.py
+++ b/difficulty.py
@@ -115,6 +115,8 @@ class DifficultyView(BaseView):
             self._sc.think(ins, delta_ms)
             return
 
+        media.set_volume(min(1.0, media.get_volume() + delta_ms / 1000))
+
         if self.input.buttons.app.left.pressed or self.input.buttons.app.left.repeated:
             self._sc.scroll_left()
             self._scroll_pos = 0.0
diff --git a/select.py b/select.py
index b3a8e94e28e00acd4a56c8c2a1535f56020bc71c..f0d90af1a2abc944cc31a21f615838b082c1d672 100644
--- a/select.py
+++ b/select.py
@@ -259,11 +259,6 @@ class SelectView(BaseView):
         if pos < 0: pos = 0
         if pos > len(self.songs) - 1: pos = len(self.songs) - 1
 
-        if pos != cur_target:
-            song = self.songs[pos].load()
-            media.load(song.dirName + "/song.mp3")
-            self.first_scroll_think = True
-
         if media.get_position() == media.get_duration():
             media.seek(0)
 
@@ -277,6 +272,14 @@ class SelectView(BaseView):
             self.first_scroll_think = False
         else:
             self._sc.think(ins, delta_ms)
+            media.set_volume(min(1.0, media.get_volume() + delta_ms / 1000))
+            
+        if pos != cur_target:
+            song = self.songs[pos].load()
+            media.load(song.dirName + "/song.mp3")
+            media.seek(media.get_duration() * 0.1)
+            media.set_volume(0.0)
+            self.first_scroll_think = True
 
     def on_enter(self, vm: Optional[ViewManager]) -> None:
         super().on_enter(vm)
@@ -290,6 +293,9 @@ class SelectView(BaseView):
         if self.songs:
             song = self.songs[self._sc.target_position()].load()
             media.load(song.dirName + "/song.mp3")
+            media.seek(media.get_duration() * 0.1)
+            media.set_volume(0.0)
+            self.first_scroll_think = True
         else:
             media.stop()
 
diff --git a/song.py b/song.py
index f7b440365eb3d3f741cadab629b7533684a6d0ba..b15c8d51c2dcdf0a2111f2b64ec159cd1b6e31fc 100644
--- a/song.py
+++ b/song.py
@@ -480,6 +480,7 @@ class SongView(BaseView):
         self.first_think = True
         if self.vm.direction == ViewTransitionDirection.FORWARD: # self-pushed
             return
+        media.set_volume(1.0)
         if self.app:
             media.load(self.app.path + '/sounds/start.mp3')
             utils.volume(self.app, 8000)