From 758b94776dfcef50b7fbe92dcfecc0a67c12e27b Mon Sep 17 00:00:00 2001 From: Matthew Kaney Date: Mon, 10 Jun 2024 19:10:17 -0400 Subject: [PATCH 1/5] Configure base url for @strudel/web package --- packages/web/vite.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/web/vite.config.js b/packages/web/vite.config.js index bd14f5a9..99b93956 100644 --- a/packages/web/vite.config.js +++ b/packages/web/vite.config.js @@ -5,6 +5,7 @@ import replace from '@rollup/plugin-replace'; // https://vitejs.dev/config/ export default defineConfig({ + base: './', plugins: [], build: { lib: { From b72e71b0bdadcfd775018e501496a5d7eb6886c0 Mon Sep 17 00:00:00 2001 From: Matthew Kaney Date: Tue, 11 Jun 2024 10:02:57 -0400 Subject: [PATCH 2/5] Update base path build setting for core and repl packages --- packages/core/vite.config.js | 1 + packages/repl/vite.config.js | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/core/vite.config.js b/packages/core/vite.config.js index 5df3edc1..718798fb 100644 --- a/packages/core/vite.config.js +++ b/packages/core/vite.config.js @@ -4,6 +4,7 @@ import { resolve } from 'path'; // https://vitejs.dev/config/ export default defineConfig({ + base: './', plugins: [], build: { lib: { diff --git a/packages/repl/vite.config.js b/packages/repl/vite.config.js index ca209b4e..84781891 100644 --- a/packages/repl/vite.config.js +++ b/packages/repl/vite.config.js @@ -6,6 +6,7 @@ import replace from '@rollup/plugin-replace'; // https://vitejs.dev/config/ export default defineConfig({ + base: './', plugins: [], build: { lib: { From 283a071c8609960e6d2bf6799265e81035c7c134 Mon Sep 17 00:00:00 2001 From: Alex McLean Date: Tue, 18 Jun 2024 22:58:08 +0100 Subject: [PATCH 3/5] Fix bug in Fraction.lcm (#1133) * bugfix lcm --- packages/core/fraction.mjs | 4 ++-- packages/core/test/pattern.test.mjs | 36 +++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/packages/core/fraction.mjs b/packages/core/fraction.mjs index a339567f..dc7fe27a 100644 --- a/packages/core/fraction.mjs +++ b/packages/core/fraction.mjs @@ -119,10 +119,10 @@ export const lcm = (...fractions) => { if (fractions.length === 0) { return undefined; } - + const x = fractions.pop(); return fractions.reduce( (lcm, fraction) => (lcm === undefined || fraction === undefined ? undefined : lcm.lcm(fraction)), - fraction(1), + x, ); }; diff --git a/packages/core/test/pattern.test.mjs b/packages/core/test/pattern.test.mjs index 845ed00a..c8129b5c 100644 --- a/packages/core/test/pattern.test.mjs +++ b/packages/core/test/pattern.test.mjs @@ -1209,4 +1209,40 @@ describe('Pattern', () => { } }); }); + describe('s_expand', () => { + it('can expand four things in half', () => { + expect( + sameFirst( + sequence(0, 1, 2, 3).s_expand(1, 0.5), + s_cat(sequence(0, 1, 2, 3), sequence(0, 1, 2, 3).s_expand(0.5)), + ), + ); + }); + it('can expand five things in half', () => { + expect( + sameFirst( + sequence(0, 1, 2, 3, 4).s_expand(1, 0.5), + s_cat(sequence(0, 1, 2, 3, 4), sequence(0, 1, 2, 3, 4).s_expand(0.5)), + ), + ); + }); + }); + describe('stepJoin', () => { + it('can join a pattern with a tactus of 2', () => { + expect( + sameFirst( + sequence(pure(pure('a')), pure(pure('b').setTactus(2))).stepJoin(), + s_cat(pure('a'), pure('b').setTactus(2)), + ), + ); + }); + it('can join a pattern with a tactus of 0.5', () => { + expect( + sameFirst( + sequence(pure(pure('a')), pure(pure('b').setTactus(0.5))).stepJoin(), + s_cat(pure('a'), pure('b').setTactus(0.5)), + ), + ); + }); + }); }); From a4bd0ae100e49f3e7067d726afc9d86bccec484e Mon Sep 17 00:00:00 2001 From: Alex McLean Date: Mon, 24 Jun 2024 17:19:22 +0100 Subject: [PATCH 4/5] Chop chop (#1078) * failing test * support chopping chops --- packages/core/pattern.mjs | 10 +++++++++- packages/core/test/pattern.test.mjs | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/core/pattern.mjs b/packages/core/pattern.mjs index a8a4f7da..5e206622 100644 --- a/packages/core/pattern.mjs +++ b/packages/core/pattern.mjs @@ -2804,8 +2804,16 @@ export const s_tour = function (pat, ...many) { export const chop = register('chop', function (n, pat) { const slices = Array.from({ length: n }, (x, i) => i); const slice_objects = slices.map((i) => ({ begin: i / n, end: (i + 1) / n })); + const merge = function (a, b) { + if ('begin' in a && 'end' in a && a.begin !== undefined && a.end !== undefined) { + const d = a.end - a.begin; + b = { begin: a.begin + b.begin * d, end: a.begin + b.end * d }; + } + // return a; + return Object.assign({}, a, b); + }; const func = function (o) { - return sequence(slice_objects.map((slice_o) => Object.assign({}, o, slice_o))); + return sequence(slice_objects.map((slice_o) => merge(o, slice_o))); }; return pat.squeezeBind(func).setTactus(__tactus ? Fraction(n).mulmaybe(pat.tactus) : undefined); }); diff --git a/packages/core/test/pattern.test.mjs b/packages/core/test/pattern.test.mjs index c8129b5c..8c5a54ff 100644 --- a/packages/core/test/pattern.test.mjs +++ b/packages/core/test/pattern.test.mjs @@ -937,6 +937,9 @@ describe('Pattern', () => { .firstCycle(), ); }); + it('Can chop chops', () => { + expect(pure({ s: 'bev' }).chop(2).chop(2).firstCycle()).toStrictEqual(pure({ s: 'bev' }).chop(4).firstCycle()); + }); }); describe('range', () => { it('Can be patterned', () => { From d53929cf68121dc3b1bc4b4e15ce22f4d0bc4cfb Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Tue, 25 Jun 2024 10:00:26 +0200 Subject: [PATCH 5/5] export comment commands --- packages/codemirror/codemirror.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/codemirror/codemirror.mjs b/packages/codemirror/codemirror.mjs index 9bb1df09..6bb0af0a 100644 --- a/packages/codemirror/codemirror.mjs +++ b/packages/codemirror/codemirror.mjs @@ -1,4 +1,5 @@ import { closeBrackets } from '@codemirror/autocomplete'; +export { toggleComment, toggleBlockComment, toggleLineComment, toggleBlockCommentByLine } from '@codemirror/commands'; // import { search, highlightSelectionMatches } from '@codemirror/search'; import { history } from '@codemirror/commands'; import { javascript } from '@codemirror/lang-javascript';