From 7f50bcebd29a36d90b13678ebc6473a512b0f291 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Fri, 13 Jun 2025 10:28:03 +0200 Subject: [PATCH] avoid floating point inaccuracy by using Fraction --- packages/core/euclid.mjs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/core/euclid.mjs b/packages/core/euclid.mjs index c3bb7a6d5..2ee9962da 100644 --- a/packages/core/euclid.mjs +++ b/packages/core/euclid.mjs @@ -12,6 +12,7 @@ This program is free software: you can redistribute it and/or modify it under th import { timeCat, register, silence } from './pattern.mjs'; import { rotate, flatten, splitAt, zipWith } from './util.mjs'; +import Fraction, { lcm } from './fraction.mjs'; const left = function (n, x) { const [ons, offs] = n; @@ -165,7 +166,7 @@ const _euclidLegato = function (pulses, steps, rotation, pat) { .split('1') .slice(1) .map((s) => [s.length + 1, true]); - return pat.struct(timeCat(...gapless)).late(rotation / steps); + return pat.struct(timeCat(...gapless)).late(Fraction(rotation).div(steps)); }; export const euclidLegato = register(['euclidLegato'], function (pulses, steps, pat) {