From 1bca05e3497c1062fc1eaf0b350672b8134b23e2 Mon Sep 17 00:00:00 2001 From: Bernhard Wagner Date: Tue, 5 Dec 2023 11:15:13 +0100 Subject: [PATCH] FIXES: palindrome abc -> abccba (#831) * FIXES: palindrome abc -> abccba * FIXES: tests for palindrome --------- Co-authored-by: Bernhard Wagner --- packages/core/pattern.mjs | 2 +- packages/core/test/pattern.test.mjs | 13 +++++++++ test/__snapshots__/examples.test.mjs.snap | 32 +++++++++++------------ test/__snapshots__/tunes.test.mjs.snap | 20 +++++++------- 4 files changed, 40 insertions(+), 27 deletions(-) diff --git a/packages/core/pattern.mjs b/packages/core/pattern.mjs index 9a5c456a..f6969a73 100644 --- a/packages/core/pattern.mjs +++ b/packages/core/pattern.mjs @@ -1985,7 +1985,7 @@ Pattern.prototype.hush = function () { * note("c d e g").palindrome() */ export const palindrome = register('palindrome', function (pat) { - return pat.every(2, rev); + return pat.lastOf(2, rev); }); /** diff --git a/packages/core/test/pattern.test.mjs b/packages/core/test/pattern.test.mjs index f4a03110..1c849499 100644 --- a/packages/core/test/pattern.test.mjs +++ b/packages/core/test/pattern.test.mjs @@ -20,6 +20,7 @@ import { slowcat, cat, sequence, + palindrome, polymeter, polymeterSteps, polyrhythm, @@ -571,6 +572,18 @@ describe('Pattern', () => { expect(sequence(1, 2, 3).firstCycle()).toStrictEqual(fastcat(1, 2, 3).firstCycle()); }); }); + describe('palindrome()', () => { + it('Can create palindrome', () => { + expect( + fastcat('a', 'b', 'c') + .palindrome() + .fast(2) + .firstCycle() + .sort((a, b) => a.part.begin.sub(b.part.begin)) + .map((a) => a.value), + ).toStrictEqual(['a', 'b', 'c', 'c', 'b', 'a']); + }); + }); describe('polyrhythm()', () => { it('Can layer up cycles', () => { expect(polyrhythm(['a', 'b'], ['c']).firstCycle()).toStrictEqual( diff --git a/test/__snapshots__/examples.test.mjs.snap b/test/__snapshots__/examples.test.mjs.snap index 34f7a850..721c7342 100644 --- a/test/__snapshots__/examples.test.mjs.snap +++ b/test/__snapshots__/examples.test.mjs.snap @@ -3267,22 +3267,22 @@ exports[`runs examples > example "outside" example index 0 1`] = ` exports[`runs examples > example "palindrome" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:g ]", - "[ 1/4 → 1/2 | note:e ]", - "[ 1/2 → 3/4 | note:d ]", - "[ 3/4 → 1/1 | note:c ]", - "[ 1/1 → 5/4 | note:c ]", - "[ 5/4 → 3/2 | note:d ]", - "[ 3/2 → 7/4 | note:e ]", - "[ 7/4 → 2/1 | note:g ]", - "[ 2/1 → 9/4 | note:g ]", - "[ 9/4 → 5/2 | note:e ]", - "[ 5/2 → 11/4 | note:d ]", - "[ 11/4 → 3/1 | note:c ]", - "[ 3/1 → 13/4 | note:c ]", - "[ 13/4 → 7/2 | note:d ]", - "[ 7/2 → 15/4 | note:e ]", - "[ 15/4 → 4/1 | note:g ]", + "[ 0/1 → 1/4 | note:c ]", + "[ 1/4 → 1/2 | note:d ]", + "[ 1/2 → 3/4 | note:e ]", + "[ 3/4 → 1/1 | note:g ]", + "[ 1/1 → 5/4 | note:g ]", + "[ 5/4 → 3/2 | note:e ]", + "[ 3/2 → 7/4 | note:d ]", + "[ 7/4 → 2/1 | note:c ]", + "[ 2/1 → 9/4 | note:c ]", + "[ 9/4 → 5/2 | note:d ]", + "[ 5/2 → 11/4 | note:e ]", + "[ 11/4 → 3/1 | note:g ]", + "[ 3/1 → 13/4 | note:g ]", + "[ 13/4 → 7/2 | note:e ]", + "[ 7/2 → 15/4 | note:d ]", + "[ 15/4 → 4/1 | note:c ]", ] `; diff --git a/test/__snapshots__/tunes.test.mjs.snap b/test/__snapshots__/tunes.test.mjs.snap index 8d696d75..0a341d12 100644 --- a/test/__snapshots__/tunes.test.mjs.snap +++ b/test/__snapshots__/tunes.test.mjs.snap @@ -8372,16 +8372,16 @@ exports[`renders tunes > tune: hyperpop 1`] = ` exports[`renders tunes > tune: juxUndTollerei 1`] = ` [ - "[ 0/1 → 1/4 | note:bb3 s:sawtooth pan:0 cutoff:1188.2154262966046 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", - "[ 0/1 → 1/4 | note:c3 s:sawtooth pan:1 cutoff:1188.2154262966046 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", - "[ 1/4 → 1/2 | note:g3 s:sawtooth pan:0 cutoff:1361.2562095290161 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", - "[ 1/4 → 1/2 | note:eb3 s:sawtooth pan:1 cutoff:1361.2562095290161 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", - "[ 1/2 → 3/4 | note:eb3 s:sawtooth pan:0 cutoff:1524.257063143398 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", - "[ 1/2 → 3/4 | note:g3 s:sawtooth pan:1 cutoff:1524.257063143398 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", - "[ (101/200 → 1/1) ⇝ 201/200 | note:65 s:triangle pan:0 cutoff:1601.4815730092653 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", - "[ (101/200 → 1/1) ⇝ 201/200 | note:55 s:triangle pan:1 cutoff:1601.4815730092653 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", - "[ 3/4 → 1/1 | note:c3 s:sawtooth pan:0 cutoff:1670.953955747281 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", - "[ 3/4 → 1/1 | note:bb3 s:sawtooth pan:1 cutoff:1670.953955747281 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", + "[ 0/1 → 1/4 | note:c3 s:sawtooth pan:0 cutoff:1188.2154262966046 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", + "[ 0/1 → 1/4 | note:bb3 s:sawtooth pan:1 cutoff:1188.2154262966046 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", + "[ 1/4 → 1/2 | note:eb3 s:sawtooth pan:0 cutoff:1361.2562095290161 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", + "[ 1/4 → 1/2 | note:g3 s:sawtooth pan:1 cutoff:1361.2562095290161 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", + "[ 1/2 → 3/4 | note:g3 s:sawtooth pan:0 cutoff:1524.257063143398 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", + "[ 1/2 → 3/4 | note:eb3 s:sawtooth pan:1 cutoff:1524.257063143398 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", + "[ (101/200 → 1/1) ⇝ 201/200 | note:55 s:triangle pan:0 cutoff:1601.4815730092653 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", + "[ (101/200 → 1/1) ⇝ 201/200 | note:65 s:triangle pan:1 cutoff:1601.4815730092653 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", + "[ 3/4 → 1/1 | note:bb3 s:sawtooth pan:0 cutoff:1670.953955747281 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", + "[ 3/4 → 1/1 | note:c3 s:sawtooth pan:1 cutoff:1670.953955747281 lpattack:0.2 lpenv:-2 decay:0.05 sustain:0 room:0.6 delay:0.5 delaytime:0.1 delayfeedback:0.4 ]", ] `;