Wavetable Synthesis - WebAudioApi - PullRequest
       21

Wavetable Synthesis - WebAudioApi

0 голосов
/ 29 ноября 2018

Я пытаюсь создать волновой синтезатор, используя 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 и т. Д.

Это правильный подход?

1 Ответ

0 голосов
/ 29 ноября 2018

IIUC, я не думаю, что использование набора узлов усиления даст то, что вы хотите.И нет встроенного узла для этого.

Я думаю, вам придется сделать это самостоятельно с AudioWorkletNode.

...