2

Web オーディオを使用する場合、作成したすべてのサウンドをグローバルに作成された 1 つに接続し、gainNodeそのノードを使用して「マスター ボリューム」プロパティを設定できます。これは、マスター ボリュームをオンザフライで変更し、すべてのサウンドに即座に影響を与えたい場合に非常に便利です。

今、私は同じことを達成しようとしていますが、playbackRate. 参考までに: これは、パワーアップを使用して時間を遅くすることができる Web ゲームの場合で、すべての音楽とサウンドも遅くなります。

私が作成する各サウンドはAudioBufferSourceNode、一連の処理ノードにリンクされています。AudioBufferSourceNodeこれで、 the自体にplaybackRate変更可能なプロパティがあることがわかりました。これは素晴らしいことですが、その場で「グローバル再生レート」を変更したい場合はAudioBufferSourceNodes、作成したものすべてをキャッシュし、それらをループして変更する必要があります。playbackRateglobal と同じ方法でこれを達成できれば完璧ですがgainNode、それを行う方法が見つかりませんでした。

そのような機能を実装する適切な方法は何でしょうか? 作成されたすべて (数千になる可能性があります) をキャッシュAudioBufferSourceNodesし、それらをループすることをお勧めしますか? それが HTML5 Audio でこれを行う方法ですが、はるかに高度な Web Audio ではハッキーに思えます。

さらに詳しい情報が必要な場合は、お問い合わせください。質問を更新します。

4

1 に答える 1

1

それを直接行うことはできません。ライブ入力のように、再生レート コントロールを持たないソース ノードがいくつかあります。この場合、あなたが提案したことを実行するのが最善です - ループするアクティブなサウンドのリストを保持します。

私のオーディオ入力エフェクト デモ ( https://webaudiodemos.appspot.com/input/ )の「ピッチ ベンド」コードのように、粒状の方法を使用してリサンプリングし、ピッチ ベンドを下げることができます。ただし、効果を出したい場合に備えて、維持するには少しコストがかかります.

于 2014-09-18T10:00:45.763 に答える