From 325eec2c6f8656f5e2623d2e2fbdc7fd691936c9 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 14 Apr 2022 00:32:41 +0200 Subject: [PATCH] refactor scheduler constructor + add onEvent --- packages/webaudio/examples/repl.html | 11 +++++++---- packages/webaudio/scheduler.mjs | 8 ++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/webaudio/examples/repl.html b/packages/webaudio/examples/repl.html index f39826cd..6f0d84bf 100644 --- a/packages/webaudio/examples/repl.html +++ b/packages/webaudio/examples/repl.html @@ -18,10 +18,13 @@ Loading... { + e.context?.createAudioNode?.(e); + }, + }); let initialCode = `sequence(1,2).mul(55/2) // frequencies .mul(slowcat(1,2)) diff --git a/packages/webaudio/scheduler.mjs b/packages/webaudio/scheduler.mjs index 8a82796c..3f41266d 100644 --- a/packages/webaudio/scheduler.mjs +++ b/packages/webaudio/scheduler.mjs @@ -3,7 +3,7 @@ import ClockWorker from './clockworker.mjs'; class Scheduler { worker; pattern; - constructor(audioContext, interval = 0.2) { + constructor({ audioContext, interval = 0.2, onEvent }) { this.worker = new ClockWorker( audioContext, (begin, end) => { @@ -11,10 +11,10 @@ class Scheduler { if (!e.part.begin.equals(e.whole.begin)) { return; } - if (e.context.createAudioNode) { - e.context.createAudioNode(e); + if (onEvent) { + onEvent?.(e); } else { - console.warn('unplayable event: no audio node'); + console.warn('unplayable event: no audio node nor onEvent callback', e); } }); },