4

我一直试图让振荡器声音只在一个通道中播放,但我无法让它工作。

我尝试使用一个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 );

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

4

1 回答 1

3

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

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 );
于 2013-01-23T00:29:45.480 回答