diff --git a/osu.Game.Tests/Visual/Editing/TestSceneBeatDivisorControl.cs b/osu.Game.Tests/Visual/Editing/TestSceneBeatDivisorControl.cs
index f2b3351533..6c36e6729e 100644
--- a/osu.Game.Tests/Visual/Editing/TestSceneBeatDivisorControl.cs
+++ b/osu.Game.Tests/Visual/Editing/TestSceneBeatDivisorControl.cs
@@ -210,6 +210,13 @@ namespace osu.Game.Tests.Visual.Editing
switchPresets(-1);
assertPreset(BeatDivisorType.Custom, 15);
assertBeatSnap(15);
+
+ setDivisorViaInput(24);
+ assertPreset(BeatDivisorType.Custom, 24);
+ switchPresets(1);
+ assertPreset(BeatDivisorType.Common);
+ switchPresets(-2);
+ assertPreset(BeatDivisorType.Triplets);
}
private void switchBeatSnap(int direction) => AddRepeatStep($"move snap {(direction > 0 ? "forward" : "backward")}", () =>
diff --git a/osu.Game/Screens/Edit/BindableBeatDivisor.cs b/osu.Game/Screens/Edit/BindableBeatDivisor.cs
index ffa4f01e75..87cb191a82 100644
--- a/osu.Game/Screens/Edit/BindableBeatDivisor.cs
+++ b/osu.Game/Screens/Edit/BindableBeatDivisor.cs
@@ -29,10 +29,11 @@ namespace osu.Game.Screens.Edit
/// Set a divisor, updating the valid divisor range appropriately.
///
/// The intended divisor.
- public void SetArbitraryDivisor(int divisor)
+ /// Ignores the current valid divisor range when true.
+ public void SetArbitraryDivisor(int divisor, bool force = false)
{
// If the current valid divisor range doesn't contain the proposed value, attempt to find one which does.
- if (!ValidDivisors.Value.Presets.Contains(divisor))
+ if (force || !ValidDivisors.Value.Presets.Contains(divisor))
{
if (BeatDivisorPresetCollection.COMMON.Presets.Contains(divisor))
ValidDivisors.Value = BeatDivisorPresetCollection.COMMON;
diff --git a/osu.Game/Screens/Edit/Compose/Components/BeatDivisorControl.cs b/osu.Game/Screens/Edit/Compose/Components/BeatDivisorControl.cs
index b33edb9edb..da1a37d57f 100644
--- a/osu.Game/Screens/Edit/Compose/Components/BeatDivisorControl.cs
+++ b/osu.Game/Screens/Edit/Compose/Components/BeatDivisorControl.cs
@@ -208,11 +208,11 @@ namespace osu.Game.Screens.Edit.Compose.Components
switch (currentType)
{
case BeatDivisorType.Common:
- beatDivisor.SetArbitraryDivisor(4);
+ beatDivisor.SetArbitraryDivisor(4, true);
break;
case BeatDivisorType.Triplets:
- beatDivisor.SetArbitraryDivisor(6);
+ beatDivisor.SetArbitraryDivisor(6, true);
break;
case BeatDivisorType.Custom: