diff --git a/packages/core/pattern.mjs b/packages/core/pattern.mjs index 65804a262..f666dda87 100644 --- a/packages/core/pattern.mjs +++ b/packages/core/pattern.mjs @@ -850,6 +850,22 @@ export class Pattern { return stack(this, ...pats); } + stackLeft(...pats) { + return stackLeft(this, ...pats); + } + + stackRight(...pats) { + return stackRight(this, ...pats); + } + + stackCentre(...pats) { + return stackCentre(this, ...pats); + } + + stackRepeat(...pats) { + return stackRepeat(this, ...pats); + } + sequence(...pats) { return sequence(this, ...pats); } @@ -1527,6 +1543,9 @@ function _stackWith(func, pats) { * @return {Pattern} * @example * stackLeft("0 1 2 3", "3 4", "[4 5 6] 7 8 9 10").scale("c:minor").note() + * @example + * // chainable + * "0 1 2 3".stackLeft("3 4", "[4 5 6] 7 8 9 10").scale("c:minor").note() */ export function stackLeft(...pats) { return _stackWith( @@ -1543,6 +1562,9 @@ export function stackLeft(...pats) { * @return {Pattern} * @example * stackRight("0 1 2 3", "3 4", "[4 5 6] 7 8 9 10").scale("c:minor").note() + * @example + * // chainable + * "0 1 2 3".stackRight("3 4", "[4 5 6] 7 8 9 10").scale("c:minor").note() */ export function stackRight(...pats) { return _stackWith( @@ -1559,6 +1581,9 @@ export function stackRight(...pats) { * @return {Pattern} * @example * stackCentre("0 1 2 3", "3 4", "[4 5 6] 7 8 9 10").scale("c:minor").note() + * @example + * // chainable + * "0 1 2 3".stackCentre("3 4", "[4 5 6] 7 8 9 10").scale("c:minor").note() */ export function stackCentre(...pats) { return _stackWith( @@ -1585,6 +1610,9 @@ export function stackCenter(pats) { * @return {Pattern} * @example * stackRepeat("0 1 2 3", "3 4", "[4 5 6] 7 8 9 10").scale("c:minor").note() + * @example + * // chainable + * "0 1 2 3".stackRepeat("3 4", "[4 5 6] 7 8 9 10").scale("c:minor").note() */ export function stackRepeat(...pats) { return stackBy(reify('repeat'), ...pats); diff --git a/test/__snapshots__/examples.test.mjs.snap b/test/__snapshots__/examples.test.mjs.snap index a4d4e2536..c4d616cee 100644 --- a/test/__snapshots__/examples.test.mjs.snap +++ b/test/__snapshots__/examples.test.mjs.snap @@ -12751,6 +12751,63 @@ exports[`runs examples > example "stackCentre" example index 0 1`] = ` ] `; +exports[`runs examples > example "stackCentre" example index 1 1`] = ` +[ + "[ 0/1 → 1/15 | note:G3 ]", + "[ 1/15 → 2/15 | note:Ab3 ]", + "[ 1/10 → 3/10 | note:C3 ]", + "[ 2/15 → 1/5 | note:Bb3 ]", + "[ 1/5 → 2/5 | note:C4 ]", + "[ 3/10 → 1/2 | note:D3 ]", + "[ 3/10 → 1/2 | note:F3 ]", + "[ 2/5 → 3/5 | note:D4 ]", + "[ 1/2 → 7/10 | note:Eb3 ]", + "[ 1/2 → 7/10 | note:G3 ]", + "[ 3/5 → 4/5 | note:Eb4 ]", + "[ 7/10 → 9/10 | note:F3 ]", + "[ 4/5 → 1/1 | note:F4 ]", + "[ 1/1 → 16/15 | note:G3 ]", + "[ 16/15 → 17/15 | note:Ab3 ]", + "[ 11/10 → 13/10 | note:C3 ]", + "[ 17/15 → 6/5 | note:Bb3 ]", + "[ 6/5 → 7/5 | note:C4 ]", + "[ 13/10 → 3/2 | note:D3 ]", + "[ 13/10 → 3/2 | note:F3 ]", + "[ 7/5 → 8/5 | note:D4 ]", + "[ 3/2 → 17/10 | note:Eb3 ]", + "[ 3/2 → 17/10 | note:G3 ]", + "[ 8/5 → 9/5 | note:Eb4 ]", + "[ 17/10 → 19/10 | note:F3 ]", + "[ 9/5 → 2/1 | note:F4 ]", + "[ 2/1 → 31/15 | note:G3 ]", + "[ 31/15 → 32/15 | note:Ab3 ]", + "[ 21/10 → 23/10 | note:C3 ]", + "[ 32/15 → 11/5 | note:Bb3 ]", + "[ 11/5 → 12/5 | note:C4 ]", + "[ 23/10 → 5/2 | note:D3 ]", + "[ 23/10 → 5/2 | note:F3 ]", + "[ 12/5 → 13/5 | note:D4 ]", + "[ 5/2 → 27/10 | note:Eb3 ]", + "[ 5/2 → 27/10 | note:G3 ]", + "[ 13/5 → 14/5 | note:Eb4 ]", + "[ 27/10 → 29/10 | note:F3 ]", + "[ 14/5 → 3/1 | note:F4 ]", + "[ 3/1 → 46/15 | note:G3 ]", + "[ 46/15 → 47/15 | note:Ab3 ]", + "[ 31/10 → 33/10 | note:C3 ]", + "[ 47/15 → 16/5 | note:Bb3 ]", + "[ 16/5 → 17/5 | note:C4 ]", + "[ 33/10 → 7/2 | note:D3 ]", + "[ 33/10 → 7/2 | note:F3 ]", + "[ 17/5 → 18/5 | note:D4 ]", + "[ 7/2 → 37/10 | note:Eb3 ]", + "[ 7/2 → 37/10 | note:G3 ]", + "[ 18/5 → 19/5 | note:Eb4 ]", + "[ 37/10 → 39/10 | note:F3 ]", + "[ 19/5 → 4/1 | note:F4 ]", +] +`; + exports[`runs examples > example "stackLeft" example index 0 1`] = ` [ "[ 0/1 → 1/15 | note:G3 ]", @@ -12808,6 +12865,63 @@ exports[`runs examples > example "stackLeft" example index 0 1`] = ` ] `; +exports[`runs examples > example "stackLeft" example index 1 1`] = ` +[ + "[ 0/1 → 1/15 | note:G3 ]", + "[ 0/1 → 1/5 | note:C3 ]", + "[ 0/1 → 1/5 | note:F3 ]", + "[ 1/15 → 2/15 | note:Ab3 ]", + "[ 2/15 → 1/5 | note:Bb3 ]", + "[ 1/5 → 2/5 | note:D3 ]", + "[ 1/5 → 2/5 | note:G3 ]", + "[ 1/5 → 2/5 | note:C4 ]", + "[ 2/5 → 3/5 | note:Eb3 ]", + "[ 2/5 → 3/5 | note:D4 ]", + "[ 3/5 → 4/5 | note:F3 ]", + "[ 3/5 → 4/5 | note:Eb4 ]", + "[ 4/5 → 1/1 | note:F4 ]", + "[ 1/1 → 16/15 | note:G3 ]", + "[ 1/1 → 6/5 | note:C3 ]", + "[ 1/1 → 6/5 | note:F3 ]", + "[ 16/15 → 17/15 | note:Ab3 ]", + "[ 17/15 → 6/5 | note:Bb3 ]", + "[ 6/5 → 7/5 | note:D3 ]", + "[ 6/5 → 7/5 | note:G3 ]", + "[ 6/5 → 7/5 | note:C4 ]", + "[ 7/5 → 8/5 | note:Eb3 ]", + "[ 7/5 → 8/5 | note:D4 ]", + "[ 8/5 → 9/5 | note:F3 ]", + "[ 8/5 → 9/5 | note:Eb4 ]", + "[ 9/5 → 2/1 | note:F4 ]", + "[ 2/1 → 31/15 | note:G3 ]", + "[ 2/1 → 11/5 | note:C3 ]", + "[ 2/1 → 11/5 | note:F3 ]", + "[ 31/15 → 32/15 | note:Ab3 ]", + "[ 32/15 → 11/5 | note:Bb3 ]", + "[ 11/5 → 12/5 | note:D3 ]", + "[ 11/5 → 12/5 | note:G3 ]", + "[ 11/5 → 12/5 | note:C4 ]", + "[ 12/5 → 13/5 | note:Eb3 ]", + "[ 12/5 → 13/5 | note:D4 ]", + "[ 13/5 → 14/5 | note:F3 ]", + "[ 13/5 → 14/5 | note:Eb4 ]", + "[ 14/5 → 3/1 | note:F4 ]", + "[ 3/1 → 46/15 | note:G3 ]", + "[ 3/1 → 16/5 | note:C3 ]", + "[ 3/1 → 16/5 | note:F3 ]", + "[ 46/15 → 47/15 | note:Ab3 ]", + "[ 47/15 → 16/5 | note:Bb3 ]", + "[ 16/5 → 17/5 | note:D3 ]", + "[ 16/5 → 17/5 | note:G3 ]", + "[ 16/5 → 17/5 | note:C4 ]", + "[ 17/5 → 18/5 | note:Eb3 ]", + "[ 17/5 → 18/5 | note:D4 ]", + "[ 18/5 → 19/5 | note:F3 ]", + "[ 18/5 → 19/5 | note:Eb4 ]", + "[ 19/5 → 4/1 | note:F4 ]", +] +`; + exports[`runs examples > example "stackRepeat" example index 0 1`] = ` [ "[ 0/1 → 1/15 | note:G3 ]", @@ -12881,6 +12995,79 @@ exports[`runs examples > example "stackRepeat" example index 0 1`] = ` ] `; +exports[`runs examples > example "stackRepeat" example index 1 1`] = ` +[ + "[ 0/1 → 1/15 | note:G3 ]", + "[ 0/1 → 1/5 | note:C3 ]", + "[ 0/1 → 1/5 | note:F3 ]", + "[ 1/15 → 2/15 | note:Ab3 ]", + "[ 2/15 → 1/5 | note:Bb3 ]", + "[ 1/5 → 2/5 | note:D3 ]", + "[ 1/5 → 2/5 | note:G3 ]", + "[ 1/5 → 2/5 | note:C4 ]", + "[ 2/5 → 3/5 | note:Eb3 ]", + "[ 2/5 → 3/5 | note:F3 ]", + "[ 2/5 → 3/5 | note:D4 ]", + "[ 3/5 → 4/5 | note:F3 ]", + "[ 3/5 → 4/5 | note:G3 ]", + "[ 3/5 → 4/5 | note:Eb4 ]", + "[ 4/5 → 1/1 | note:C3 ]", + "[ 4/5 → 1/1 | note:F3 ]", + "[ 4/5 → 1/1 | note:F4 ]", + "[ 1/1 → 16/15 | note:G3 ]", + "[ 1/1 → 6/5 | note:D3 ]", + "[ 1/1 → 6/5 | note:G3 ]", + "[ 16/15 → 17/15 | note:Ab3 ]", + "[ 17/15 → 6/5 | note:Bb3 ]", + "[ 6/5 → 7/5 | note:Eb3 ]", + "[ 6/5 → 7/5 | note:F3 ]", + "[ 6/5 → 7/5 | note:C4 ]", + "[ 7/5 → 8/5 | note:F3 ]", + "[ 7/5 → 8/5 | note:G3 ]", + "[ 7/5 → 8/5 | note:D4 ]", + "[ 8/5 → 9/5 | note:C3 ]", + "[ 8/5 → 9/5 | note:F3 ]", + "[ 8/5 → 9/5 | note:Eb4 ]", + "[ 9/5 → 2/1 | note:D3 ]", + "[ 9/5 → 2/1 | note:G3 ]", + "[ 9/5 → 2/1 | note:F4 ]", + "[ 2/1 → 31/15 | note:G3 ]", + "[ 2/1 → 11/5 | note:Eb3 ]", + "[ 2/1 → 11/5 | note:F3 ]", + "[ 31/15 → 32/15 | note:Ab3 ]", + "[ 32/15 → 11/5 | note:Bb3 ]", + "[ 11/5 → 12/5 | note:F3 ]", + "[ 11/5 → 12/5 | note:G3 ]", + "[ 11/5 → 12/5 | note:C4 ]", + "[ 12/5 → 13/5 | note:C3 ]", + "[ 12/5 → 13/5 | note:F3 ]", + "[ 12/5 → 13/5 | note:D4 ]", + "[ 13/5 → 14/5 | note:D3 ]", + "[ 13/5 → 14/5 | note:G3 ]", + "[ 13/5 → 14/5 | note:Eb4 ]", + "[ 14/5 → 3/1 | note:Eb3 ]", + "[ 14/5 → 3/1 | note:F3 ]", + "[ 14/5 → 3/1 | note:F4 ]", + "[ 3/1 → 46/15 | note:G3 ]", + "[ 3/1 → 16/5 | note:F3 ]", + "[ 3/1 → 16/5 | note:G3 ]", + "[ 46/15 → 47/15 | note:Ab3 ]", + "[ 47/15 → 16/5 | note:Bb3 ]", + "[ 16/5 → 17/5 | note:C3 ]", + "[ 16/5 → 17/5 | note:F3 ]", + "[ 16/5 → 17/5 | note:C4 ]", + "[ 17/5 → 18/5 | note:D3 ]", + "[ 17/5 → 18/5 | note:G3 ]", + "[ 17/5 → 18/5 | note:D4 ]", + "[ 18/5 → 19/5 | note:Eb3 ]", + "[ 18/5 → 19/5 | note:F3 ]", + "[ 18/5 → 19/5 | note:Eb4 ]", + "[ 19/5 → 4/1 | note:F3 ]", + "[ 19/5 → 4/1 | note:G3 ]", + "[ 19/5 → 4/1 | note:F4 ]", +] +`; + exports[`runs examples > example "stackRight" example index 0 1`] = ` [ "[ 0/1 → 1/15 | note:G3 ]", @@ -12938,6 +13125,63 @@ exports[`runs examples > example "stackRight" example index 0 1`] = ` ] `; +exports[`runs examples > example "stackRight" example index 1 1`] = ` +[ + "[ 0/1 → 1/15 | note:G3 ]", + "[ 1/15 → 2/15 | note:Ab3 ]", + "[ 2/15 → 1/5 | note:Bb3 ]", + "[ 1/5 → 2/5 | note:C3 ]", + "[ 1/5 → 2/5 | note:C4 ]", + "[ 2/5 → 3/5 | note:D3 ]", + "[ 2/5 → 3/5 | note:D4 ]", + "[ 3/5 → 4/5 | note:Eb3 ]", + "[ 3/5 → 4/5 | note:F3 ]", + "[ 3/5 → 4/5 | note:Eb4 ]", + "[ 4/5 → 1/1 | note:F3 ]", + "[ 4/5 → 1/1 | note:G3 ]", + "[ 4/5 → 1/1 | note:F4 ]", + "[ 1/1 → 16/15 | note:G3 ]", + "[ 16/15 → 17/15 | note:Ab3 ]", + "[ 17/15 → 6/5 | note:Bb3 ]", + "[ 6/5 → 7/5 | note:C3 ]", + "[ 6/5 → 7/5 | note:C4 ]", + "[ 7/5 → 8/5 | note:D3 ]", + "[ 7/5 → 8/5 | note:D4 ]", + "[ 8/5 → 9/5 | note:Eb3 ]", + "[ 8/5 → 9/5 | note:F3 ]", + "[ 8/5 → 9/5 | note:Eb4 ]", + "[ 9/5 → 2/1 | note:F3 ]", + "[ 9/5 → 2/1 | note:G3 ]", + "[ 9/5 → 2/1 | note:F4 ]", + "[ 2/1 → 31/15 | note:G3 ]", + "[ 31/15 → 32/15 | note:Ab3 ]", + "[ 32/15 → 11/5 | note:Bb3 ]", + "[ 11/5 → 12/5 | note:C3 ]", + "[ 11/5 → 12/5 | note:C4 ]", + "[ 12/5 → 13/5 | note:D3 ]", + "[ 12/5 → 13/5 | note:D4 ]", + "[ 13/5 → 14/5 | note:Eb3 ]", + "[ 13/5 → 14/5 | note:F3 ]", + "[ 13/5 → 14/5 | note:Eb4 ]", + "[ 14/5 → 3/1 | note:F3 ]", + "[ 14/5 → 3/1 | note:G3 ]", + "[ 14/5 → 3/1 | note:F4 ]", + "[ 3/1 → 46/15 | note:G3 ]", + "[ 46/15 → 47/15 | note:Ab3 ]", + "[ 47/15 → 16/5 | note:Bb3 ]", + "[ 16/5 → 17/5 | note:C3 ]", + "[ 16/5 → 17/5 | note:C4 ]", + "[ 17/5 → 18/5 | note:D3 ]", + "[ 17/5 → 18/5 | note:D4 ]", + "[ 18/5 → 19/5 | note:Eb3 ]", + "[ 18/5 → 19/5 | note:F3 ]", + "[ 18/5 → 19/5 | note:Eb4 ]", + "[ 19/5 → 4/1 | note:F3 ]", + "[ 19/5 → 4/1 | note:G3 ]", + "[ 19/5 → 4/1 | note:F4 ]", +] +`; + exports[`runs examples > example "stepalt" example index 0 1`] = ` [ "[ 0/1 → 1/5 | s:bd ]",