2013-02-16 14 views
5

Web Audio APIを使用してカスタムパンコントロールを作成しようとしていますが、チャンネルスプリッタとマージャーノードを使用して正しいチャンネルから音が出ることはありません:Webオーディオ:右チャンネルに音声がありません

var context = new webkitAudioContext(), 
    destination = context.destination, 
    osc = context.createOscillator(), 
    gainL = context.createGainNode(), 
    gainR = context.createGainNode(), 
    splitter = context.createChannelSplitter(2), 
    merger = context.createChannelMerger(2); 

osc.frequency.value = 500; 

osc.connect(splitter); 

splitter.connect(gainL, 0); 
splitter.connect(gainR, 1); 

gainL.connect(merger, 0, 0); 
gainR.connect(merger, 0, 1); 

osc.noteOn(0); 

gainL.gain.value = 0.1; 
gainR.gain.value = 0.5; 

osc.noteOff(2); 

merger.connect(destination); 

私はここで何かが分かりませんか?上記のコードのJSBinプレビューはここにあります:http://jsbin.com/ayijoy/1/

私はChromeのv24.0.1312.57を使用しています。

答えて

2

オシレータがモノラル信号を出力するので、これが最も起こりそうです。ステレオソースを使ってみてください。おそらくもっと運が必要です。

編集:分割するステレオ信号がないため、「モノラル」信号をパンする方法(スプリッタをバイパスし、2つのゲインに直接オシレータを接続してから、2つのモノ信号をマージャに接続する各チャンネルのゲインを調整する)http://jsbin.com/ayijoy/16/

+0

これは素晴らしいソリューションです。私は結局何かが分からないことが判明しました。 – SquareFeet

+0

しかし、私は、mono - > stereoからのup-mixingは、モノソースをステレオ目的地に接続するときに自動的に行われると考えました。ここでの仕様はあまり明確ではありません。http://www.w3.org/TR/webaudio/#UpMix オシレーターを宛先ノードに直接接続することを検討してください。サウンドはLチャンネルとRチャンネルの両方で再生され、自動アップミックス;私は私の質問のシナリオで同じことが起こると思っていたでしょう... – SquareFeet

+0

一般に、アップミックスは自動的に起こります。ただし、スプリッタノードは信号を直接混乱させるためのもので、そうではありません。仕様から: '[AudioSplitterNode]には1つの入力と、入力オーディオストリームのチャンネル数に等しい数の「アクティブ」出力があります。 ... "アクティブ"でない出力は無音を出力し、通常は何にも接続されません。 – cwilso

関連する問題