diff --git a/DryWetMidi/Common/MathUtilities.cs b/DryWetMidi/Common/MathUtilities.cs index 7d7d88e09..315a956be 100644 --- a/DryWetMidi/Common/MathUtilities.cs +++ b/DryWetMidi/Common/MathUtilities.cs @@ -143,13 +143,6 @@ public static long GreatestCommonDivisor(long a, long b) return a; } - // ax + by = 0 - public static Tuple SolveDiophantineEquation(long a, long b) - { - var greatestCommonDivisor = GreatestCommonDivisor(a, b); - return Tuple.Create(b / greatestCommonDivisor, -a / greatestCommonDivisor); - } - public static double Round(double value) { return Math.Round(value, MidpointRounding.AwayFromZero); diff --git a/DryWetMidi/Interaction/TimeSpan/Converters/MusicalTimeSpanConverter.cs b/DryWetMidi/Interaction/TimeSpan/Converters/MusicalTimeSpanConverter.cs index 8d785fe11..078cac2e9 100644 --- a/DryWetMidi/Interaction/TimeSpan/Converters/MusicalTimeSpanConverter.cs +++ b/DryWetMidi/Interaction/TimeSpan/Converters/MusicalTimeSpanConverter.cs @@ -17,8 +17,8 @@ public ITimeSpan ConvertTo(long timeSpan, long time, TempoMap tempoMap) if (timeSpan == 0) return new MusicalTimeSpan(); - var xy = MathUtilities.SolveDiophantineEquation(4 * ticksPerQuarterNoteTimeDivision.TicksPerQuarterNote, -timeSpan); - return new MusicalTimeSpan(Math.Abs(xy.Item1), Math.Abs(xy.Item2)); + var gcd = MathUtilities.GreatestCommonDivisor(timeSpan, 4 * ticksPerQuarterNoteTimeDivision.TicksPerQuarterNote); + return new MusicalTimeSpan(timeSpan / gcd, 4 * ticksPerQuarterNoteTimeDivision.TicksPerQuarterNote / gcd); } public long ConvertFrom(ITimeSpan timeSpan, long time, TempoMap tempoMap)