From 6e496b7a4a647db579ee0f3cf1f66883c1b91d15 Mon Sep 17 00:00:00 2001 From: Alex McLean Date: Sat, 27 Jul 2024 10:02:38 +0100 Subject: [PATCH] Fix loop at tactus (#1145) * fix loopAt tactus --- packages/core/pattern.mjs | 3 ++- packages/core/test/pattern.test.mjs | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/core/pattern.mjs b/packages/core/pattern.mjs index 99f038e2..e4745368 100644 --- a/packages/core/pattern.mjs +++ b/packages/core/pattern.mjs @@ -2929,7 +2929,8 @@ export const splice = register( ); export const { loopAt, loopat } = register(['loopAt', 'loopat'], function (factor, pat) { - return new Pattern((state) => _loopAt(factor, pat, state.controls._cps).query(state)); + const tactus = pat.tactus ? pat.tactus.div(factor) : undefined; + return new Pattern((state) => _loopAt(factor, pat, state.controls._cps).query(state), tactus); }); /** diff --git a/packages/core/test/pattern.test.mjs b/packages/core/test/pattern.test.mjs index 8c5a54ff..31ec4868 100644 --- a/packages/core/test/pattern.test.mjs +++ b/packages/core/test/pattern.test.mjs @@ -1248,4 +1248,9 @@ describe('Pattern', () => { ); }); }); + describe('loopAt', () => { + it('maintains tactus', () => { + expect(s('bev').chop(8).loopAt(2).tactus).toStrictEqual(Fraction(4)); + }); + }); });