2013-01-22 58 views
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); 

你如何創建僅在單一通道中起着振盪器?

回答

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); 
+0

這是否會成爲鉻或webkit項目的bug? – Randy

+0

此外,我正在測試添加零點增益節點的想法,並且我仍然聽到另一個聲道中發出微弱的聲音...?還有什麼會導致它繼續? – Randy

+0

鉻。不,我不知道爲什麼它會繼續,除了數模轉換器電路或模擬插孔/電纜中的串擾。儘管如此,大聲的正弦波可以做到這一點。 (60週期嗡嗡聲,任何人?) – cwilso