diff --git a/osu.Game.Rulesets.Taiko/Difficulty/Preprocessing/Rhythm/TaikoRhythmData.cs b/osu.Game.Rulesets.Taiko/Difficulty/Preprocessing/Rhythm/TaikoRhythmData.cs
index d895dcfc55..6c4a332624 100644
--- a/osu.Game.Rulesets.Taiko/Difficulty/Preprocessing/Rhythm/TaikoRhythmData.cs
+++ b/osu.Game.Rulesets.Taiko/Difficulty/Preprocessing/Rhythm/TaikoRhythmData.cs
@@ -27,30 +27,10 @@ namespace osu.Game.Rulesets.Taiko.Difficulty.Preprocessing.Rhythm
/// to previous for the rhythm change.
/// A above 1 indicates a slow-down; a below 1 indicates a speed-up.
///
- public readonly double Ratio;
-
- ///
- /// List of most common rhythm changes in taiko maps. Based on how each object's interval compares to the previous object.
- ///
///
- /// The general guidelines for the values are:
- ///
- /// - rhythm changes with ratio closer to 1 (that are not 1) are harder to play,
- /// - speeding up is generally harder than slowing down (with exceptions of rhythm changes requiring a hand switch).
- ///
+ /// This is snapped to the closest matching .
///
- private static readonly TaikoRhythmData[] common_rhythms =
- {
- new TaikoRhythmData(1, 1),
- new TaikoRhythmData(2, 1),
- new TaikoRhythmData(1, 2),
- new TaikoRhythmData(3, 1),
- new TaikoRhythmData(1, 3),
- new TaikoRhythmData(3, 2),
- new TaikoRhythmData(2, 3),
- new TaikoRhythmData(5, 4),
- new TaikoRhythmData(4, 5)
- };
+ public readonly double Ratio;
///
/// Initialises a new instance of s,
@@ -67,31 +47,33 @@ namespace osu.Game.Rulesets.Taiko.Difficulty.Preprocessing.Rhythm
return;
}
- TaikoRhythmData closestRhythmData = getClosestRhythm(current.DeltaTime, previous.DeltaTime);
- Ratio = closestRhythmData.Ratio;
+ double actualRatio = current.DeltaTime / previous.DeltaTime;
+ double closestRatio = common_ratios.OrderBy(r => Math.Abs(r - actualRatio)).First();
+
+ Ratio = closestRatio;
}
///
- /// Creates an object representing a rhythm change.
+ /// List of most common rhythm changes in taiko maps. Based on how each object's interval compares to the previous object.
///
- /// The numerator for .
- /// The denominator for
- private TaikoRhythmData(int numerator, int denominator)
+ ///
+ /// The general guidelines for the values are:
+ ///
+ /// - rhythm changes with ratio closer to 1 (that are not 1) are harder to play,
+ /// - speeding up is generally harder than slowing down (with exceptions of rhythm changes requiring a hand switch).
+ ///
+ ///
+ private static readonly double[] common_ratios = new[]
{
- Ratio = numerator / (double)denominator;
- }
-
- ///
- /// Determines the closest rhythm change from that matches the timing ratio
- /// between the current and previous intervals.
- ///
- /// The time difference between the current hit object and the previous one.
- /// The time difference between the previous hit object and the one before it.
- /// The closest matching rhythm from .
- private TaikoRhythmData getClosestRhythm(double currentDeltaTime, double previousDeltaTime)
- {
- double ratio = currentDeltaTime / previousDeltaTime;
- return common_rhythms.OrderBy(x => Math.Abs(x.Ratio - ratio)).First();
- }
+ 1.0 / 1,
+ 2.0 / 1,
+ 1.0 / 2,
+ 3.0 / 1,
+ 1.0 / 3,
+ 3.0 / 2,
+ 2.0 / 3,
+ 5.0 / 4,
+ 4.0 / 5
+ };
}
}