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); } }); },