首页 > 解决方案 > 正在播放的 WebAudio Oscillator 的动态 setPeriodicWave()?

问题描述

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

标签: javascriptsignal-processingweb-audio-apip5.js

解决方案


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

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

推荐阅读