From 51231b2e2ec86a1ceb87f70b8a3414b8d939df86 Mon Sep 17 00:00:00 2001 From: Goatgarien Date: Wed, 15 Feb 2023 00:36:04 -0800 Subject: [PATCH] Fixed GetQuantization to not assume everything is 16th notes --- BAKKA-Editor/Utils.cs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/BAKKA-Editor/Utils.cs b/BAKKA-Editor/Utils.cs index 3f09276..a58f269 100644 --- a/BAKKA-Editor/Utils.cs +++ b/BAKKA-Editor/Utils.cs @@ -193,11 +193,29 @@ namespace BAKKA_Editor internal static Tuple GetQuantization(int val, int min) { - while (!HasDecimal((double)(val * min) / 1920.0)) + int numerator = val; + int denominator = 1920; + + int gcd = GetGcd(numerator, denominator); + + numerator /= gcd; + denominator /= gcd; + + denominator = Math.Max(denominator, min); + + return Tuple.Create(numerator, denominator); + } + + private static int GetGcd(int a, int b) + { + while (b != 0) { - min *= 2; + int temp = b; + b = a % b; + a = temp; } - return new Tuple((int)(val * min / 1920.0), min); + + return a; } internal static float GetDist(Point a, Point b)