diff --git a/packages/core/draw.mjs b/packages/core/draw.mjs index d1cdd7be..c57baa63 100644 --- a/packages/core/draw.mjs +++ b/packages/core/draw.mjs @@ -29,6 +29,9 @@ export const getDrawContext = (id = 'test-canvas') => { }; Pattern.prototype.draw = function (callback, { from, to, onQuery } = {}) { + if (typeof window === 'undefined') { + return this; + } if (window.strudelAnimation) { cancelAnimationFrame(window.strudelAnimation); } diff --git a/test/__snapshots__/examples.test.mjs.snap b/test/__snapshots__/examples.test.mjs.snap index 787bc461..60b39c53 100644 --- a/test/__snapshots__/examples.test.mjs.snap +++ b/test/__snapshots__/examples.test.mjs.snap @@ -1806,127 +1806,127 @@ exports[`runs examples > example "floor" example index 0 1`] = ` exports[`runs examples > example "fm" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c fmi:0 ]", - "[ 1/4 → 1/2 | note:e fmi:0 ]", - "[ 1/2 → 3/4 | note:g fmi:0 ]", - "[ 3/4 → 1/1 | note:b fmi:0 ]", - "[ 1/1 → 5/4 | note:c fmi:1 ]", - "[ 5/4 → 3/2 | note:e fmi:1 ]", - "[ 3/2 → 7/4 | note:g fmi:1 ]", - "[ 7/4 → 2/1 | note:b fmi:1 ]", - "[ 2/1 → 9/4 | note:c fmi:2 ]", - "[ 9/4 → 5/2 | note:e fmi:2 ]", - "[ 5/2 → 11/4 | note:g fmi:2 ]", - "[ 11/4 → 3/1 | note:b fmi:2 ]", - "[ 3/1 → 13/4 | note:c fmi:8 ]", - "[ 13/4 → 7/2 | note:e fmi:8 ]", - "[ 7/2 → 15/4 | note:g fmi:8 ]", - "[ 15/4 → 4/1 | note:b fmi:8 ]", + "[ 0/1 → 1/4 | note:c fmi:0 analyze:1 ]", + "[ 1/4 → 1/2 | note:e fmi:0 analyze:1 ]", + "[ 1/2 → 3/4 | note:g fmi:0 analyze:1 ]", + "[ 3/4 → 1/1 | note:b fmi:0 analyze:1 ]", + "[ 1/1 → 5/4 | note:c fmi:1 analyze:1 ]", + "[ 5/4 → 3/2 | note:e fmi:1 analyze:1 ]", + "[ 3/2 → 7/4 | note:g fmi:1 analyze:1 ]", + "[ 7/4 → 2/1 | note:b fmi:1 analyze:1 ]", + "[ 2/1 → 9/4 | note:c fmi:2 analyze:1 ]", + "[ 9/4 → 5/2 | note:e fmi:2 analyze:1 ]", + "[ 5/2 → 11/4 | note:g fmi:2 analyze:1 ]", + "[ 11/4 → 3/1 | note:b fmi:2 analyze:1 ]", + "[ 3/1 → 13/4 | note:c fmi:8 analyze:1 ]", + "[ 13/4 → 7/2 | note:e fmi:8 analyze:1 ]", + "[ 7/2 → 15/4 | note:g fmi:8 analyze:1 ]", + "[ 15/4 → 4/1 | note:b fmi:8 analyze:1 ]", ] `; exports[`runs examples > example "fmattack" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c fmi:4 fmattack:0 ]", - "[ 1/4 → 1/2 | note:e fmi:4 fmattack:0 ]", - "[ 1/2 → 3/4 | note:g fmi:4 fmattack:0 ]", - "[ 3/4 → 1/1 | note:b fmi:4 fmattack:0 ]", - "[ 1/1 → 5/4 | note:c fmi:4 fmattack:0.05 ]", - "[ 5/4 → 3/2 | note:e fmi:4 fmattack:0.05 ]", - "[ 3/2 → 7/4 | note:g fmi:4 fmattack:0.05 ]", - "[ 7/4 → 2/1 | note:b fmi:4 fmattack:0.05 ]", - "[ 2/1 → 9/4 | note:c fmi:4 fmattack:0.1 ]", - "[ 9/4 → 5/2 | note:e fmi:4 fmattack:0.1 ]", - "[ 5/2 → 11/4 | note:g fmi:4 fmattack:0.1 ]", - "[ 11/4 → 3/1 | note:b fmi:4 fmattack:0.1 ]", - "[ 3/1 → 13/4 | note:c fmi:4 fmattack:0.2 ]", - "[ 13/4 → 7/2 | note:e fmi:4 fmattack:0.2 ]", - "[ 7/2 → 15/4 | note:g fmi:4 fmattack:0.2 ]", - "[ 15/4 → 4/1 | note:b fmi:4 fmattack:0.2 ]", + "[ 0/1 → 1/4 | note:c fmi:4 fmattack:0 analyze:1 ]", + "[ 1/4 → 1/2 | note:e fmi:4 fmattack:0 analyze:1 ]", + "[ 1/2 → 3/4 | note:g fmi:4 fmattack:0 analyze:1 ]", + "[ 3/4 → 1/1 | note:b fmi:4 fmattack:0 analyze:1 ]", + "[ 1/1 → 5/4 | note:c fmi:4 fmattack:0.05 analyze:1 ]", + "[ 5/4 → 3/2 | note:e fmi:4 fmattack:0.05 analyze:1 ]", + "[ 3/2 → 7/4 | note:g fmi:4 fmattack:0.05 analyze:1 ]", + "[ 7/4 → 2/1 | note:b fmi:4 fmattack:0.05 analyze:1 ]", + "[ 2/1 → 9/4 | note:c fmi:4 fmattack:0.1 analyze:1 ]", + "[ 9/4 → 5/2 | note:e fmi:4 fmattack:0.1 analyze:1 ]", + "[ 5/2 → 11/4 | note:g fmi:4 fmattack:0.1 analyze:1 ]", + "[ 11/4 → 3/1 | note:b fmi:4 fmattack:0.1 analyze:1 ]", + "[ 3/1 → 13/4 | note:c fmi:4 fmattack:0.2 analyze:1 ]", + "[ 13/4 → 7/2 | note:e fmi:4 fmattack:0.2 analyze:1 ]", + "[ 7/2 → 15/4 | note:g fmi:4 fmattack:0.2 analyze:1 ]", + "[ 15/4 → 4/1 | note:b fmi:4 fmattack:0.2 analyze:1 ]", ] `; exports[`runs examples > example "fmdecay" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c fmi:4 fmdecay:0.01 fmsustain:0.4 ]", - "[ 1/4 → 1/2 | note:e fmi:4 fmdecay:0.01 fmsustain:0.4 ]", - "[ 1/2 → 3/4 | note:g fmi:4 fmdecay:0.01 fmsustain:0.4 ]", - "[ 3/4 → 1/1 | note:b fmi:4 fmdecay:0.01 fmsustain:0.4 ]", - "[ 1/1 → 5/4 | note:c fmi:4 fmdecay:0.05 fmsustain:0.4 ]", - "[ 5/4 → 3/2 | note:e fmi:4 fmdecay:0.05 fmsustain:0.4 ]", - "[ 3/2 → 7/4 | note:g fmi:4 fmdecay:0.05 fmsustain:0.4 ]", - "[ 7/4 → 2/1 | note:b fmi:4 fmdecay:0.05 fmsustain:0.4 ]", - "[ 2/1 → 9/4 | note:c fmi:4 fmdecay:0.1 fmsustain:0.4 ]", - "[ 9/4 → 5/2 | note:e fmi:4 fmdecay:0.1 fmsustain:0.4 ]", - "[ 5/2 → 11/4 | note:g fmi:4 fmdecay:0.1 fmsustain:0.4 ]", - "[ 11/4 → 3/1 | note:b fmi:4 fmdecay:0.1 fmsustain:0.4 ]", - "[ 3/1 → 13/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0.4 ]", - "[ 13/4 → 7/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0.4 ]", - "[ 7/2 → 15/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0.4 ]", - "[ 15/4 → 4/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0.4 ]", + "[ 0/1 → 1/4 | note:c fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", + "[ 1/4 → 1/2 | note:e fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", + "[ 1/2 → 3/4 | note:g fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", + "[ 3/4 → 1/1 | note:b fmi:4 fmdecay:0.01 fmsustain:0.4 analyze:1 ]", + "[ 1/1 → 5/4 | note:c fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", + "[ 5/4 → 3/2 | note:e fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", + "[ 3/2 → 7/4 | note:g fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", + "[ 7/4 → 2/1 | note:b fmi:4 fmdecay:0.05 fmsustain:0.4 analyze:1 ]", + "[ 2/1 → 9/4 | note:c fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", + "[ 9/4 → 5/2 | note:e fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", + "[ 5/2 → 11/4 | note:g fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", + "[ 11/4 → 3/1 | note:b fmi:4 fmdecay:0.1 fmsustain:0.4 analyze:1 ]", + "[ 3/1 → 13/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", + "[ 13/4 → 7/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", + "[ 7/2 → 15/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", + "[ 15/4 → 4/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0.4 analyze:1 ]", ] `; exports[`runs examples > example "fmenv" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp ]", - "[ 1/4 → 1/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp ]", - "[ 1/2 → 3/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp ]", - "[ 3/4 → 1/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp ]", - "[ 1/1 → 5/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin ]", - "[ 5/4 → 3/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin ]", - "[ 3/2 → 7/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin ]", - "[ 7/4 → 2/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin ]", - "[ 2/1 → 9/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp ]", - "[ 9/4 → 5/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp ]", - "[ 5/2 → 11/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp ]", - "[ 11/4 → 3/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp ]", - "[ 3/1 → 13/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin ]", - "[ 13/4 → 7/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin ]", - "[ 7/2 → 15/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin ]", - "[ 15/4 → 4/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin ]", + "[ 0/1 → 1/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 1/4 → 1/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 1/2 → 3/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 3/4 → 1/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 1/1 → 5/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 5/4 → 3/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 3/2 → 7/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 7/4 → 2/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 2/1 → 9/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 9/4 → 5/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 5/2 → 11/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 11/4 → 3/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:exp analyze:1 ]", + "[ 3/1 → 13/4 | note:c fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 13/4 → 7/2 | note:e fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 7/2 → 15/4 | note:g fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", + "[ 15/4 → 4/1 | note:b fmi:4 fmdecay:0.2 fmsustain:0 fmenv:lin analyze:1 ]", ] `; exports[`runs examples > example "fmh" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c fmi:4 fmh:1 ]", - "[ 1/4 → 1/2 | note:e fmi:4 fmh:1 ]", - "[ 1/2 → 3/4 | note:g fmi:4 fmh:1 ]", - "[ 3/4 → 1/1 | note:b fmi:4 fmh:1 ]", - "[ 1/1 → 5/4 | note:c fmi:4 fmh:2 ]", - "[ 5/4 → 3/2 | note:e fmi:4 fmh:2 ]", - "[ 3/2 → 7/4 | note:g fmi:4 fmh:2 ]", - "[ 7/4 → 2/1 | note:b fmi:4 fmh:2 ]", - "[ 2/1 → 9/4 | note:c fmi:4 fmh:1.5 ]", - "[ 9/4 → 5/2 | note:e fmi:4 fmh:1.5 ]", - "[ 5/2 → 11/4 | note:g fmi:4 fmh:1.5 ]", - "[ 11/4 → 3/1 | note:b fmi:4 fmh:1.5 ]", - "[ 3/1 → 13/4 | note:c fmi:4 fmh:1.61 ]", - "[ 13/4 → 7/2 | note:e fmi:4 fmh:1.61 ]", - "[ 7/2 → 15/4 | note:g fmi:4 fmh:1.61 ]", - "[ 15/4 → 4/1 | note:b fmi:4 fmh:1.61 ]", + "[ 0/1 → 1/4 | note:c fmi:4 fmh:1 analyze:1 ]", + "[ 1/4 → 1/2 | note:e fmi:4 fmh:1 analyze:1 ]", + "[ 1/2 → 3/4 | note:g fmi:4 fmh:1 analyze:1 ]", + "[ 3/4 → 1/1 | note:b fmi:4 fmh:1 analyze:1 ]", + "[ 1/1 → 5/4 | note:c fmi:4 fmh:2 analyze:1 ]", + "[ 5/4 → 3/2 | note:e fmi:4 fmh:2 analyze:1 ]", + "[ 3/2 → 7/4 | note:g fmi:4 fmh:2 analyze:1 ]", + "[ 7/4 → 2/1 | note:b fmi:4 fmh:2 analyze:1 ]", + "[ 2/1 → 9/4 | note:c fmi:4 fmh:1.5 analyze:1 ]", + "[ 9/4 → 5/2 | note:e fmi:4 fmh:1.5 analyze:1 ]", + "[ 5/2 → 11/4 | note:g fmi:4 fmh:1.5 analyze:1 ]", + "[ 11/4 → 3/1 | note:b fmi:4 fmh:1.5 analyze:1 ]", + "[ 3/1 → 13/4 | note:c fmi:4 fmh:1.61 analyze:1 ]", + "[ 13/4 → 7/2 | note:e fmi:4 fmh:1.61 analyze:1 ]", + "[ 7/2 → 15/4 | note:g fmi:4 fmh:1.61 analyze:1 ]", + "[ 15/4 → 4/1 | note:b fmi:4 fmh:1.61 analyze:1 ]", ] `; exports[`runs examples > example "fmsustain" example index 0 1`] = ` [ - "[ 0/1 → 1/4 | note:c fmi:4 fmdecay:0.1 fmsustain:1 ]", - "[ 1/4 → 1/2 | note:e fmi:4 fmdecay:0.1 fmsustain:1 ]", - "[ 1/2 → 3/4 | note:g fmi:4 fmdecay:0.1 fmsustain:1 ]", - "[ 3/4 → 1/1 | note:b fmi:4 fmdecay:0.1 fmsustain:1 ]", - "[ 1/1 → 5/4 | note:c fmi:4 fmdecay:0.1 fmsustain:0.75 ]", - "[ 5/4 → 3/2 | note:e fmi:4 fmdecay:0.1 fmsustain:0.75 ]", - "[ 3/2 → 7/4 | note:g fmi:4 fmdecay:0.1 fmsustain:0.75 ]", - "[ 7/4 → 2/1 | note:b fmi:4 fmdecay:0.1 fmsustain:0.75 ]", - "[ 2/1 → 9/4 | note:c fmi:4 fmdecay:0.1 fmsustain:0.5 ]", - "[ 9/4 → 5/2 | note:e fmi:4 fmdecay:0.1 fmsustain:0.5 ]", - "[ 5/2 → 11/4 | note:g fmi:4 fmdecay:0.1 fmsustain:0.5 ]", - "[ 11/4 → 3/1 | note:b fmi:4 fmdecay:0.1 fmsustain:0.5 ]", - "[ 3/1 → 13/4 | note:c fmi:4 fmdecay:0.1 fmsustain:0 ]", - "[ 13/4 → 7/2 | note:e fmi:4 fmdecay:0.1 fmsustain:0 ]", - "[ 7/2 → 15/4 | note:g fmi:4 fmdecay:0.1 fmsustain:0 ]", - "[ 15/4 → 4/1 | note:b fmi:4 fmdecay:0.1 fmsustain:0 ]", + "[ 0/1 → 1/4 | note:c fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", + "[ 1/4 → 1/2 | note:e fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", + "[ 1/2 → 3/4 | note:g fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", + "[ 3/4 → 1/1 | note:b fmi:4 fmdecay:0.1 fmsustain:1 analyze:1 ]", + "[ 1/1 → 5/4 | note:c fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", + "[ 5/4 → 3/2 | note:e fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", + "[ 3/2 → 7/4 | note:g fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", + "[ 7/4 → 2/1 | note:b fmi:4 fmdecay:0.1 fmsustain:0.75 analyze:1 ]", + "[ 2/1 → 9/4 | note:c fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", + "[ 9/4 → 5/2 | note:e fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", + "[ 5/2 → 11/4 | note:g fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", + "[ 11/4 → 3/1 | note:b fmi:4 fmdecay:0.1 fmsustain:0.5 analyze:1 ]", + "[ 3/1 → 13/4 | note:c fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", + "[ 13/4 → 7/2 | note:e fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", + "[ 7/2 → 15/4 | note:g fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", + "[ 15/4 → 4/1 | note:b fmi:4 fmdecay:0.1 fmsustain:0 analyze:1 ]", ] `;