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