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などに変更します。
それは有効なアプローチですか?