BaseAudioContext: createChannelSplitter() メソッド
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
createChannelSplitter()
は BaseAudioContext
インターフェイスのメソッドで、 ChannelSplitterNode
を作成します。これは音声ストリームの個々のチャンネルにアクセスし、それらを個別に処理するために使用されます。
メモ: ChannelSplitterNode()
コンストラクターは ChannelSplitterNode
を作成するための推奨される方法です。 AudioNode の作成を参照してください。
構文
js
createChannelSplitter(numberOfOutputs)
引数
numberOfOutputs
-
入力オーディオストリームのうち、個別に出力したいチャンネル数です。この引数が指定されていない場合の既定値は 6 です。
返値
例
次の単純な例では、ステレオトラック(例えば音楽)を分離し、左チャンネルと右チャンネルを別々に処理する方法を示しています。これを使うには、 AudioNode.connect(AudioNode)
メソッドの第 2、第 3 引数を使って、接続元のチャンネルのインデックスと接続先のチャンネルのインデックスを指定することが必要です。
js
const ac = new AudioContext();
ac.decodeAudioData(someStereoBuffer, (data) => {
const source = ac.createBufferSource();
source.buffer = data;
const splitter = ac.createChannelSplitter(2);
source.connect(splitter);
const merger = ac.createChannelMerger(2);
// 左チャンネルのボリュームのみ小さくする
const gainNode = ac.createGain();
gainNode.gain.setValueAtTime(0.5, ac.currentTime);
splitter.connect(gainNode, 0);
// スプリッターをマージャーの 2 番目の入力に接続すると、チャンネルが効果的に交換され、
// ステレオイメージが反転します。
gainNode.connect(merger, 0, 1);
splitter.connect(merger, 1, 0);
const dest = ac.createMediaStreamDestination();
// ChannelMergerNode を使っているので、ステレオの MediaStream が
// できました。これでウェブオーディオグラフを WebRTC や MediaRecorder などに
// パイプするのに使えます。
merger.connect(dest);
});
仕様書
Specification |
---|
Web Audio API # dom-baseaudiocontext-createchannelsplitter |
ブラウザーの互換性
BCD tables only load in the browser