【问题标题】:Wavetable Synthesis - WebAudioApi波表合成 - WebAudioApi
【发布时间】:2019-05-01 10:35:18
【问题描述】:

我正在尝试使用 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,@987654325 @=5 等等。

这是一种有效的方法吗?

【问题讨论】:

    标签: javascript web-audio-api sound-synthesis


    【解决方案1】:

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

    我认为您必须自己使用AudioWorkletNode 来执行此操作。

    【讨论】:

    • 如何实现我的代码?我完全不知道如何实现我所需要的(如果增益方法不起作用)。只是关于算法的提示
    • 对不起,我真的不知道该怎么做。也许搜索会产生一些关于如何做到这一点的研究论文。
    猜你喜欢
    • 2012-01-01
    • 1970-01-01
    • 2010-09-06
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    相关资源
    最近更新 更多