From cc7ded746f87043a7481688f491e8c13ad3bfbf1 Mon Sep 17 00:00:00 2001 From: b-ma Date: Fri, 16 Jan 2026 09:47:02 +0100 Subject: [PATCH 1/2] feat: register global + tone.js example --- examples/tone.js | 17 +++++++++++++++++ package.json | 1 + register-global.mjs | 8 ++++++++ 3 files changed, 26 insertions(+) create mode 100644 examples/tone.js create mode 100644 register-global.mjs diff --git a/examples/tone.js b/examples/tone.js new file mode 100644 index 0000000..b70d247 --- /dev/null +++ b/examples/tone.js @@ -0,0 +1,17 @@ +import '../register-global.mjs'; +import * as Tone from 'tone'; + +const latencyHint = process.env.WEB_AUDIO_LATENCY === 'playback' ? 'playback' : 'interactive'; +const audioContext = new AudioContext({ latencyHint }); +Tone.setContext(audioContext); + +const synth = new Tone.Synth().toDestination(); +const now = Tone.now(); +// trigger the attack immediately +synth.triggerAttack("C4", now); +// wait one second before triggering the release +synth.triggerRelease(now + 1); + +await new Promise(resolve => setTimeout(resolve, 1500)); +console.log('closing'); +await audioContext.close(); diff --git a/package.json b/package.json index ef088a5..d31147f 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "mocha": "^11.0.1", "octokit": "^4.1.0", "template-literal": "^1.0.4", + "tone": "^15.1.22", "webidl2": "^24.2.0", "wpt-runner": "^5.0.0" }, diff --git a/register-global.mjs b/register-global.mjs new file mode 100644 index 0000000..5589c40 --- /dev/null +++ b/register-global.mjs @@ -0,0 +1,8 @@ +import * as webaudio from './index.mjs'; + +// Expose webaudio globally +Object.assign(globalThis, webaudio); +// note that `standardized-audio-context` explicitly relies on window +// cf. https://github.com/chrisguttandin/standardized-audio-context/blob/master/src/factories/window.ts +globalThis.window = {}; +Object.assign(globalThis.window, webaudio); From 8dd31a46a62e212e59d29d51636a88e707109ad2 Mon Sep 17 00:00:00 2001 From: b-ma Date: Fri, 16 Jan 2026 09:52:49 +0100 Subject: [PATCH 2/2] lint --- examples/tone.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/tone.js b/examples/tone.js index b70d247..a8edd11 100644 --- a/examples/tone.js +++ b/examples/tone.js @@ -8,7 +8,7 @@ Tone.setContext(audioContext); const synth = new Tone.Synth().toDestination(); const now = Tone.now(); // trigger the attack immediately -synth.triggerAttack("C4", now); +synth.triggerAttack('C4', now); // wait one second before triggering the release synth.triggerRelease(now + 1);