Javascript 动态设置WebAudio振荡器的PeriodicWave(),该';在玩什么?
尝试做一些基本的波形表合成(开发一个附加组件),想知道是否有可能在振荡器播放时动态改变其波形(恒定音调而不是音符持续时间)?在我的基本测试中,必须先调用Javascript 动态设置WebAudio振荡器的PeriodicWave(),该';在玩什么?,javascript,signal-processing,web-audio-api,p5.js,Javascript,Signal Processing,Web Audio Api,P5.js,尝试做一些基本的波形表合成(开发一个附加组件),想知道是否有可能在振荡器播放时动态改变其波形(恒定音调而不是音符持续时间)?在我的基本测试中,必须先调用setPeriodicWave()函数,然后再将振荡器连接到AudioContext输出,然后再启动。希望做一些动态波形表合成器(带有两个硬平移通道),用于输入示波器的X-Y模式(用于基于音频信号的矢量视觉)。上面的工作流程,随着每个波表的变化不断地创建一个新的振荡器,会导致大量的伪影和相移问题。。。如果我能启动两个振荡器并更新它们的波形,那就太
setPeriodicWave()
函数,然后再将振荡器连接到AudioContext输出,然后再启动。希望做一些动态波形表合成器(带有两个硬平移通道),用于输入示波器的X-Y模式(用于基于音频信号的矢量视觉)。上面的工作流程,随着每个波表的变化不断地创建一个新的振荡器,会导致大量的伪影和相移问题。。。如果我能启动两个振荡器并更新它们的波形,那就太好了。关于这样做的工作流程有什么提示吗?我的抽象工作流:
- 创建具有“自定义”类型的振荡器(用平波/无声波初始化)
- 自定义
,它使用到的函数setWavetable()
和数组值createPeriodicWave()
- 用该波重新初始化振荡器(停止振荡器,断开/丢弃振荡器,初始化新振荡器,带波,连接+启动振荡器)
- 您有什么问题?举个例子,这对我来说很有效。我能清楚地听到声音的变化:
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
啊哈-谢谢这个超级清晰的例子!哎呀,问题肯定出在我的执行上。奇怪的是,它产生的信号是交流耦合(摆动/居中)与直流耦合(使用直流耦合DAC+测试)-但这也必须在实现库或使用dsp.js将(-1.0,1.0)值的简单数组转换为周期波时实现。。。和我的一样。。需要振荡器功能(freq/pan)+从阵列进行波表整形。。。搜索仍在继续