Web Audio API の WaveShaperNode の伝達関数がどのように機能するか理解できません。私が理解しているように、伝達関数は、信号入力xを取り込み、新しい信号yを生成するウェーブシェイパーです。そう、
y = f(x)
xがゼロに等しい場合、yもそうであることを理解しています。したがって、0 = f(0)
. 適切な範囲に収まるように、yは [-1, 1] の間にある必要があるため、この関数y = x / (1 + |x|)
は出力範囲を [-1, 1] に制限します。また、チェビシェフ多項式は、音楽入力信号を「歪める」ために使用される伝達関数に役立ちます。
ただし、伝達関数の場合、入力信号xを操作して出力yを作成するには、入力信号 x が必要です。ただし、Web Audio API の WaveShaperNode では、元の入力xにアクセスできません(またはアクセスしますか?)。多くの場合、次のようなアルゴリズムを目にします。
for(var i = 0; i < sampleRate; i++){
var x = i * 2 / sampleRate - 1;
this.curve[i] = (3 + distortionAmount) * x * 20 * (Math.PI / 180) / (Math.PI + distortionAmount * Math.abs(x));
}
上記のコードのthis.curve
は、各サンプル フレームのグラフを表す Float32Array です。x
ここでは、入力オーディオ信号を表すと想定しています。ただし、実際には正確な入力オーディオ信号を表しているわけではありません。これは、平均的な正弦波を表しているだけで、実際の入力は重要ではないためですか? WaveShaperNode は元の入力xを受け取り、出力yを計算するために作成した一般的な曲線を使用 (乗算?) しますか?