我正在尝试使用Web Audio Api创建波表合成器。我想实现的是一种可能性,可以从一种波形线性交换为另一种波形(例如Massive或Serum)。
例如:从正弦波开始,我旋转旋钮将其逐渐转换为方波。
我已经搜索了文档,到目前为止,我已经找到了如何创建自定义波形的方法:
var real = new Float32Array(2);
var imag = new Float32Array(2);
var ac = new AudioContext();
var osc = ac.createOscillator();
real[0] = 0;
imag[0] = 0;
real[1] = 1;
imag[1] = 0;
var wave = ac.createPeriodicWave(real, imag, {disableNormalization: true});
osc.setPeriodicWave(wave);
osc.connect(ac.destination);
osc.start();
osc.stop(2);
主要问题是该波形是静态的,我无法将其逐渐更改为其他波形。
我如何实现我的目标?我正在考虑在每个波之后放置2个增益节点,它们将彼此互补。
例如:我的正弦波进入Gain1
,它是10,而我的正弦波进入Gain2
,它是0。然后我将它们互补,{{1} } = 5,Gain1
= 5,依此类推。
这是有效的方法吗?
答案 0 :(得分:1)
IIUC,我认为使用一组增益节点不会产生您想要的。而且没有内置节点可以做到这一点。
我认为您必须自己使用AudioWorkletNode
来做到这一点。