diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs
index 5fc0da8891..0373856ace 100644
--- a/osu.Game/Overlays/MusicController.cs
+++ b/osu.Game/Overlays/MusicController.cs
@@ -377,6 +377,8 @@ namespace osu.Game.Overlays
}
}
+ private readonly AudioAdjustments modTrackAdjustments = new AudioAdjustments();
+
///
/// Resets the adjustments currently applied on and applies the mod adjustments if is true.
///
@@ -385,15 +387,27 @@ namespace osu.Game.Overlays
///
public void ResetTrackAdjustments()
{
+ // todo: we probably want a helper method rather than this.
CurrentTrack.RemoveAllAdjustments(AdjustableProperty.Balance);
CurrentTrack.RemoveAllAdjustments(AdjustableProperty.Frequency);
CurrentTrack.RemoveAllAdjustments(AdjustableProperty.Tempo);
CurrentTrack.RemoveAllAdjustments(AdjustableProperty.Volume);
- if (allowTrackAdjustments)
+ modTrackAdjustments.RemoveAllAdjustments(AdjustableProperty.Balance);
+ modTrackAdjustments.RemoveAllAdjustments(AdjustableProperty.Frequency);
+ modTrackAdjustments.RemoveAllAdjustments(AdjustableProperty.Tempo);
+ modTrackAdjustments.RemoveAllAdjustments(AdjustableProperty.Volume);
+
+ var applicableToTrack = mods.Value.OfType();
+
+ if (!allowTrackAdjustments || !applicableToTrack.Any())
+ CurrentTrack.UnbindAdjustments(modTrackAdjustments);
+ else
{
- foreach (var mod in mods.Value.OfType())
- mod.ApplyToTrack(CurrentTrack);
+ CurrentTrack.BindAdjustments(modTrackAdjustments);
+
+ foreach (var mod in applicableToTrack)
+ mod.ApplyToTrack(modTrackAdjustments);
}
}
}