Javascript 网络音频:右声道无声音

Javascript 网络音频:右声道无声音,javascript,html,web-audio-api,Javascript,Html,Web Audio Api,我正在尝试使用Web Audio API创建自定义平移控件,但使用通道拆分器和合并节点无法从正确的通道中获得任何声音: var context = new webkitAudioContext(), destination = context.destination, osc = context.createOscillator(), gainL = context.createGainNode(), gainR = context.createGainNode(

我正在尝试使用Web Audio API创建自定义平移控件,但使用通道拆分器和合并节点无法从正确的通道中获得任何声音:

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预览:


我运行的是Chrome v24.0.1312.57,以防万一。

我猜这是因为振荡器输出单声道信号。尝试使用立体声音源,你可能会有更多的运气


编辑:以下是如何平移“单声道”信号(绕过分离器,因为没有立体声信号进行分割,直接将振荡器连接到两个增益。然后在调整每个通道的增益后将两个单声道信号连接到合并)

这是一个很好的解决方案,谢谢;事实证明,我遗漏了一些显而易见的东西。尽管如此,我还是想到了从单声道->立体声混音是在将单声道源连接到立体声目的地时自动完成的。这里的规格不太清楚:考虑将振荡器直接连接到目的节点:声音将在L和R通道中播放,提示自动混合;我本以为在我的问题的场景中也会发生同样的情况……一般来说,上混会自动发生。但是,拆分器节点用于直接处理信号,因此它不会。根据规范:“[AudioSplitterNode]有一个输入和多个“活动”输出,这些输出等于输入音频流中的通道数。。。任何非“活动”的输出都将输出静音,通常不会连接到任何东西。“谢谢,克里斯-在你发表评论之前不久,我重新阅读了规范的AudioSplitterNode部分;有时,这是一个木头对树木的情况:盯着一个问题看足够长的时间,人们很容易就会忘记原来的问题!不太可能,@Asher,您可以将一个节点与一个输出连接到多个目的地。还是你的意思是其他地方出了问题?