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