From fde0da3b195c0c2863aca24668fc3e2198504376 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 3 Apr 2024 22:43:35 +0200 Subject: [PATCH 01/10] dont ignore hydra.mjs in eslint + fix lint --- .eslintignore | 1 - packages/hydra/hydra.mjs | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.eslintignore b/.eslintignore index 7d807b65..9f6d5035 100644 --- a/.eslintignore +++ b/.eslintignore @@ -20,5 +20,4 @@ vite.config.js **/dist /src-tauri/target/**/* reverbGen.mjs -hydra.mjs jsdoc-synonyms.js \ No newline at end of file diff --git a/packages/hydra/hydra.mjs b/packages/hydra/hydra.mjs index 13d08de6..91401034 100644 --- a/packages/hydra/hydra.mjs +++ b/packages/hydra/hydra.mjs @@ -1,5 +1,5 @@ import { getDrawContext } from '@strudel/draw'; -import { controls } from '@strudel/core'; +import { controls, getTime } from '@strudel/core'; let latestOptions; let hydra; @@ -27,6 +27,7 @@ export async function initHydra(options = {}) { hydraConfig.canvas = canvas; await import(/* @vite-ignore */ src); + /* eslint-disable-next-line */ hydra = new Hydra(hydraConfig); if (feedStrudel) { const { canvas } = getDrawContext(); From d06b70c28d3e153a727653c38c3f0b56884e1cba Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 3 Apr 2024 23:02:42 +0200 Subject: [PATCH 02/10] fix: call setTime in initStrudel + return promise with scheduler --- packages/web/web.mjs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/web/web.mjs b/packages/web/web.mjs index 660acf26..2c07d2a6 100644 --- a/packages/web/web.mjs +++ b/packages/web/web.mjs @@ -5,7 +5,7 @@ export * from '@strudel/transpiler'; export * from '@strudel/mini'; export * from '@strudel/tonal'; export * from '@strudel/webaudio'; -import { Pattern, evalScope } from '@strudel/core'; +import { Pattern, evalScope, setTime } from '@strudel/core'; import { initAudioOnFirstClick, registerSynthSounds, webaudioScheduler } from '@strudel/webaudio'; // import { registerSoundfonts } from '@strudel/soundfonts'; import { evaluate as _evaluate } from '@strudel/transpiler'; @@ -33,11 +33,14 @@ export function initStrudel(options = {}) { miniAllStrings(); const { prebake, ...schedulerOptions } = options; + scheduler = webaudioScheduler(schedulerOptions); initDone = (async () => { await defaultPrebake(); await prebake?.(); + return scheduler; })(); - scheduler = webaudioScheduler(schedulerOptions); + setTime(() => scheduler.now()); + return initDone; } window.initStrudel = initStrudel; From 610c848ff4632b1924f5b78b8651d190e21ae906 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 3 Apr 2024 23:06:02 +0200 Subject: [PATCH 03/10] fix: reify hydra pattern --- packages/hydra/hydra.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/hydra/hydra.mjs b/packages/hydra/hydra.mjs index 91401034..8f6d9d8e 100644 --- a/packages/hydra/hydra.mjs +++ b/packages/hydra/hydra.mjs @@ -47,4 +47,4 @@ export function clearHydra() { globalThis.shape = controls.shape; } -export const H = (p) => () => p.queryArc(getTime(), getTime())[0].value; +export const H = (p) => () => reify(p).queryArc(getTime(), getTime())[0].value; From 3a4ffb13ad6b7d6f2b394ee3ce72316e57e08e05 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 3 Apr 2024 23:48:08 +0200 Subject: [PATCH 04/10] add more info on using strings for patterns in web package --- packages/web/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/web/README.md b/packages/web/README.md index 8b567729..659c8271 100644 --- a/packages/web/README.md +++ b/packages/web/README.md @@ -72,7 +72,13 @@ document.getElementById('play').addEventListener('stop', There is a tiny difference between the [Strudel REPL](https://strudel.cc/) and `@strudel/web`. In the REPL you can use 'single quotes' for regular JS strings and "double quotes" for mini notation patterns. In `@strudel/web`, it does not matter which types of quotes you're using. -There will probably be an escapte hatch for that in the future. + +This difference means that you cannot call pattern methods on raw strings, for example `"1 2 3".slow(2)`. +To make it work you can either: + +1. Use the `evaluate` function, which behaves exactly like the Strudel REPL, interpreting double quoted strings as mini notation. +2. wrap the string with `m`: `m("1 2 3").slow(2)` +3. wrap the string in a control function: `n("1 2 3").slow(2)` depending on your context. ## More Examples From 915a4d2149ca33943e22ef752088e06cfe6ceb2f Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Wed, 3 Apr 2024 23:53:25 +0200 Subject: [PATCH 05/10] fix: example encoding for testing builds locally without server --- examples/buildless/headless-simple.html | 25 ++++++++---- examples/buildless/headless-with-samples.html | 38 +++++++++++-------- 2 files changed, 40 insertions(+), 23 deletions(-) diff --git a/examples/buildless/headless-simple.html b/examples/buildless/headless-simple.html index 15a56161..768765d6 100644 --- a/examples/buildless/headless-simple.html +++ b/examples/buildless/headless-simple.html @@ -1,9 +1,18 @@ - - - - + + + + + + + + + + + + + diff --git a/examples/buildless/headless-with-samples.html b/examples/buildless/headless-with-samples.html index 18b5e379..1915cd54 100644 --- a/examples/buildless/headless-with-samples.html +++ b/examples/buildless/headless-with-samples.html @@ -1,16 +1,24 @@ - - - - - - + + + + + + + + + + + + + + From 6ff7697cfda05188caabf575fbdc68f425cfc59a Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 4 Apr 2024 00:03:32 +0200 Subject: [PATCH 06/10] fix: use foreground color for pianoroll playhead --- packages/draw/pianoroll.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/draw/pianoroll.mjs b/packages/draw/pianoroll.mjs index 1bdf81c4..247213b4 100644 --- a/packages/draw/pianoroll.mjs +++ b/packages/draw/pianoroll.mjs @@ -108,7 +108,7 @@ export function pianoroll({ active = getTheme().foreground, background = 'transparent', smear = 0, - playheadColor = 'white', + playheadColor = getTheme().foreground, minMidi = 10, maxMidi = 90, autorange = 0, From 18abcaccbb844438b9948f4700079471255e1a9f Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 4 Apr 2024 00:03:43 +0200 Subject: [PATCH 07/10] add fallback theme --- packages/draw/draw.mjs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/draw/draw.mjs b/packages/draw/draw.mjs index cfd2ce75..81123f46 100644 --- a/packages/draw/draw.mjs +++ b/packages/draw/draw.mjs @@ -191,7 +191,16 @@ export function getComputedPropertyValue(name) { return getComputedStyle(document.documentElement).getPropertyValue(name); } -let theme = {}; +let theme = { + background: '#222', + foreground: '#75baff', + caret: '#ffcc00', + selection: 'rgba(128, 203, 196, 0.5)', + selectionMatch: '#036dd626', + lineHighlight: '#00000050', + gutterBackground: 'transparent', + gutterForeground: '#8a919966', +}; export function getTheme() { return theme; } From ca8707f32a626d250a498987937400cd2bfe9420 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 4 Apr 2024 00:13:37 +0200 Subject: [PATCH 08/10] cooler example --- examples/buildless/headless-simple.html | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/examples/buildless/headless-simple.html b/examples/buildless/headless-simple.html index 768765d6..61533447 100644 --- a/examples/buildless/headless-simple.html +++ b/examples/buildless/headless-simple.html @@ -2,16 +2,29 @@ - - - + + From 0ba4be0571834b7d0729ca2715238f76df7bcd0d Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 4 Apr 2024 00:13:43 +0200 Subject: [PATCH 09/10] bg --- examples/buildless/headless-with-samples.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/buildless/headless-with-samples.html b/examples/buildless/headless-with-samples.html index 1915cd54..3ac6d42e 100644 --- a/examples/buildless/headless-with-samples.html +++ b/examples/buildless/headless-with-samples.html @@ -2,10 +2,10 @@ - - + + From a4897adb831b9ad0e4ed0c53bead73a497b90e52 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 4 Apr 2024 00:38:08 +0200 Subject: [PATCH 10/10] fix: import --- packages/hydra/hydra.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/hydra/hydra.mjs b/packages/hydra/hydra.mjs index 8f6d9d8e..2cb265c2 100644 --- a/packages/hydra/hydra.mjs +++ b/packages/hydra/hydra.mjs @@ -1,5 +1,5 @@ import { getDrawContext } from '@strudel/draw'; -import { controls, getTime } from '@strudel/core'; +import { controls, getTime, reify } from '@strudel/core'; let latestOptions; let hydra;