1

我正在尝试使用 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。然后我将它们更改为互补,Gain1=5,Gain2=5 等等。

这是一种有效的方法吗?

4

1 回答 1

1

IIUC,我不认为使用一组增益节点会产生你想要的。并且没有内置节点可以执行此操作。

我认为您必须自己使用AudioWorkletNode.

于 2018-11-29T20:12:26.967 回答