在单个频道中播放振荡

时间:2013-01-22 17:38:26

标签: javascript html5 web-audio

我一直试图让振荡器声音仅在一个频道播放,但我无法让它发挥作用。

我尝试使用panner节点来设置声音的位置,但它仍会在两个声道中播放,而不是在更远的声道中播放。

我最近的尝试尝试使用频道合并,但它仍然在两个频道中播放:

var audioContext = new webkitAudioContext();
var merger = audioContext.createChannelMerger();
merger.connect(audioContext.destination);

var osc = audioContext.createOscillator();
osc.frequency.value = 500;
osc.connect( merger, 0, 1 );
osc.start( audioContext.currentTime );
osc.stop( audioContext.currentTime + 2 );

如何创建仅在单个通道中播放的振荡器?

1 个答案:

答案 0 :(得分:2)

嗯,奇怪 - 当合并的输入未连接时,似乎是一个错误。要解决此问题,只需将清零的增益节点连接到另一个输入,如下所示:

var audioContext = new webkitAudioContext();
var merger = audioContext.createChannelMerger(2);
merger.connect(audioContext.destination);

var osc = audioContext.createOscillator();
osc.frequency.value = 500;
osc.connect( merger, 0, 0 );

// workaround here:
var gain= audioContext.createGainNode();
gain.gain.value = 0.0;
osc.connect( gain );
gain.connect( merger, 0, 1 );
// end workaround

osc.start( audioContext.currentTime );
osc.stop( audioContext.currentTime + 2 );