正在播放的 WebAudio 振​​荡器的动态 setPeriodicWave()?

Dynamically setPeriodicWave() of WebAudio Oscillator that's playing?

尝试进行一些基本的波表合成(为 p5.sound 开发插件)– 想知道是否可以在振荡器播放时动态改变波形(恒定音调而不是音符持续时间)?在我的基本测试中,必须在振荡器连接到 AudioContext 输出然后启动之前调用 setPeriodicWave() 函数。希望做一些动态波表合成器(带有两个硬声相通道)以馈入示波器的 X-Y 模式(用于基于音频信号的矢量视觉效果)。上面的工作流程,随着每次波表的变化不断创建一个新的振荡器,会导致很多伪影和相移问题……如果我可以启动两个振荡器并只更新它们的波形那就太好了。这样做的工作流程有什么技巧吗?我抽象的工作流程:

您有什么问题?例如,这对我有用。我可以清楚地听到声音变化:

let c = new AudioContext();
let s = new OscillatorNode(c, {type: "sawtooth"});
s.connect(c.destination);
// Some random custom wave form
let w = new PeriodicWave(c, {real: [0, 1], imag: [0, 1]});
s.start();
// Wait a bit
s.setPeriodicWave(w);
// Sound changes