.connect()
および.disconnect()
を使用してグラフ レイアウトを動的に変更することができます。これは、オーディオが再生中またはストリームを介して送信されている場合でも (WebRTC を介してストリーミングすることもできます)。specで参照を見つけることができなかったので、これは当然のことだと確信しています。
たとえば、2 つの AudioBufferSourceNodesbufferSource1
とbufferSource2
、および MediaStreamAudioDestinationNodeがある場合streamDestination
:
bufferSource1.connect(streamDestination);
//do some other things here, and after some time, switch to bufferSource2:
//(streamDestination doesn't need to be explicitly specified here)
bufferSource1.disconnect(streamDestination);
bufferSource2.connect(streamDestination);
実際の例。
編集1:
適切な実装:
Editors Draft on the Audio Output APIによると、AudioContext 用のカスタム オーディオ出力デバイスも ( を使用して) 選択できるようになる予定new AudioContext({ sinkId: requestedSinkId });
です。進行状況に関する情報を見つけることができず、質問者がすでに読んでいるように見える関連する議論さえ見つけました。これと(多くの)他の参考文献によると、簡単な作業ではないようですが、WA V1 で計画されています。
編集:そのセクションは API ドラフトから削除されましたが、古いバージョン
でまだ見つけることができます。
現在の回避策:
私はあなたの回避策を(MediaStreamAudioDestinationNode
andAudio
オブジェクトを使用して)いじりましたが、何も接続されていないことに関連しているようです。単一のバッファーを切り替えるように例を変更し (例に似ていますが、 を使用AudioBufferSourceNode
)、同様の頻度の低下を観察しました。ただし、GainNode
in between を使用して または に設定するとgain.value
、0
周波数の低下がなくなりました (新しい を動的1
に作成して接続する場合、これは解決策にはなりません)。AudioBuffer