コンテキスト:Attack、Decay、SustainおよびReleaseがすべてAudioParams
のWebAudioAPIにADSRエンベロープを実装しようとしています。「ノートオン」と「ノートオフ」は入力それぞれ1と0の値。私は4つのDynamicCompressor
ノードを使用しており、これを達成するために多くのゲイン操作を行っています。これは、コンプレッサーが技術的にアタック・リリース・エンベロープであるためです。WebAudioAPI:2つのAudioNodesの出力を分割する
減衰信号を生成するDynamicCompressorと組み合わされたレベルオフセットを得るために、ある信号のレベルを別の信号のレベルで除算する必要があるという点を除いて、すべてがうまくいっています。 sustainLevel
、attackDur
とdecayDur
はすべてAudioParamsであることを
decayOffsetY = (1 - sustainLevel) * (attackDur + decayDur)/decayDur
注:それが助け場合
は、ここで式です。
加算、減算、および乗算はいずれもConstantSourceNodes
とGainNodes
を使用するとかなり簡単に達成できますが、除算についてはどうすればよいですか?
注:私は、圧縮機は、技術的に比で信号を分割するため、分割を実行するために別のDynamicCompressorNode
の使用について考えたが、この比は、対数スケールであり、そしてIは
log(decayDur)/5
1/decayDur
の値を達成し、別のGainNode
に接続します。しかし、AudioNodesだけでMath.log
を実行することは可能ですか?
ワウ私は単なるディストーションツールとして波打ちを見落としました。私は 'WaveShaperNode'入力が-1から1の範囲に制限されていることを理解していますが、この制限も出力にも当てはまりますか? – euwbah
良い質問です。出力は同じ範囲に限定されません。それは多かれ少なかれ任意であるべきです。 –