2013-08-19 29 views
5

Web Audio APIを使用した今後のプロジェクトでは、一部のオーディオの音量を増幅したいと考えています。Web Audio APIでオーディオを増幅する

ドキュメントを読むと、ゲインノードは入力信号にゲイン値を乗算します。ドキュメントには、この値が0から1の範囲にあると記載されているため、増幅はゲインノードで実行できないようです。しかし、どうすればそれをすることができますか?

+0

[Web API仕様](https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#GainNode)は> 1の値を許可しているようですが、実装では1を超える値を無視します(「公称maxValueは1ですが、より高い値が許可されます」)。特に、Chromeは> 1の値を増幅するようです。注意:1つ以上の物理的[電圧制御アンプ](http://electronicmusic.wikia.com/wiki/Voltage_controlled_amplifier)(VCA)は、1を超えるゲインを使用しないという理由から、名目上の> 1制限の理由があります。 – apsillers

+0

ああ、ちょうど明確にする:私はあなたの質問に実際の答えがありません。私は定義されていない "ゲイン> 1"のクロスブラウザー(またはブラウザーのアップデート間でさえも)に依存しません。 – apsillers

答えて

3

より具体的には、ケビン氏が述べたように、1の「公称」値はユニティゲインを表します。つまり、変更はありません。それは範囲と同じではありません。実装は値> 1 - 実際には値の全範囲をサポートしなければならない。興味深いことをするために大きなゲインスケーリング値を使うシナリオはたくさんありますが、実装がこれをサポートしていない場合は非常に壊れます。

要約すると、ゲイン> 1を使用して物を増幅します。クリッピングが心配な場合は、後にダイナミクスプロセッサノードを配置します。

1

私はゲイン1を上回らない実装については気づいていません。それは私のすべてのプロジェクトで使用してきたことであり、何の問題も起こしていません。

超懸念されているのであれば、ScriptProcessorNodeを使用して、基本的にすべてのサンプルを任意の倍率で乗算することができますが、パフォーマンスはあなたが得るよりもかなり悪くなります利得ノード。そして、それはちょっとばかばかしいばかりです。

私が仕様を読んでも、GainNodegainパラメータでは、1より大きい値が無視される理由はありません。基本的には、1が公称の値であるということだけです。言い換えれば、オーディオが影響を受けないようにするには、値を1に設定します。それ以外の場合は、減衰または増幅が発生します。

関連する問題