diff --git a/src/pitch.py b/src/pitch.py index 7c05db4..ce4ca25 100644 --- a/src/pitch.py +++ b/src/pitch.py @@ -42,11 +42,17 @@ class Pitch: def to_fraction(self) -> Fraction: """Convert to frequency ratio (e.g., 3/2).""" - from math import prod + from fractions import Fraction - return Fraction( - prod(pow(self.dims[d], self.hs_array[d]) for d in range(len(self.dims))) - ) + numerator = 1 + denominator = 1 + for d in range(len(self.dims)): + exp = self.hs_array[d] + if exp >= 0: + numerator *= self.dims[d] ** exp + else: + denominator *= self.dims[d] ** (-exp) + return Fraction(numerator, denominator) def to_cents(self) -> float: """Convert to cents (relative to 1/1 = 0 cents)."""