波表综合-WebAudioApi

时间:2018-11-29 11:13:44

标签: javascript web-audio sound-synthesis

我正在尝试使用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,依此类推。

这是有效的方法吗?

1 个答案:

答案 0 :(得分:1)

IIUC,我认为使用一组增益节点不会产生您想要的。而且没有内置节点可以做到这一点。

我认为您必须自己使用AudioWorkletNode来做到这一点。