2013-12-17 17 views
2

我試圖使用ChannelSplitter節點向ChannelMerger節點和目標發送音頻信號,然後嘗試使用ChannelMerger節點合併兩個不同的音頻信號(一個來自拆分源,一個來自使用getUserMedia的麥克風)使用Recorder.js進入錄像機。在Web Audio API中使用ChannelSplitter和MergeSplitter節點

我不斷收到以下錯誤:「Uncaught SyntaxError:指定了無效或非法字符串。」

的錯誤是在下面的行的代碼:

audioSource.splitter.connect(merger); 

在哪裏的AudioSource是ThreeAudio.Source的實例從庫ThreeAudio.js,分離器是我通過修改原型實例化自己的信道分離器,併購是我的合併節點。之前的代碼是:

merger = context.createChannelMerger(2); 
userInput.connect(merger); 

其中,userInput是來自用戶麥克風的流。那個連接沒有發生錯誤。聲音從音頻源到達目的地(我可以聽到它),所以它看起來不像分路器是錯誤的 - 我似乎無法連接它。

有沒有人有任何見解?

+0

如果你有整個代碼示例,這將會容易得多。我懷疑別的是錯的。 – cwilso

+0

不幸的是我認爲這是太多的代碼張貼在一個問題上!我也有這種感覺,我正在編寫一個版本,現在不使用ThreeAudio庫,所以我可以確定我以正確的方式連接所有的東西。如果你已經看到了使用分離器和合並的適當示例的鏈接,那也是有幫助的。 –

回答

4

這裏有一些工作的分離器/合併器代碼會產生乒乓延遲 - 也就是說,它會在立體聲信號的L和R通道上設置單獨的延遲,並跨越反饋。這是來自我在webaudiodemos.appspot.com上的輸入效果演示(代碼在github上)。

var merger = context.createChannelMerger(2); 
var leftDelay = context.createDelayNode(); 
var rightDelay = context.createDelayNode(); 
var leftFeedback = audioContext.createGainNode(); 
var rightFeedback = audioContext.createGainNode(); 
var splitter = context.createChannelSplitter(2); 

// Split the stereo signal. 
splitter.connect(leftDelay, 0); 

// If the signal is dual copies of a mono signal, we don't want the right channel - 
// it will just sound like a mono delay. If it was a real stereo signal, we do want 
// it to just mirror the channels. 
if (isTrueStereo) 
    splitter.connect(rightDelay, 1); 

leftDelay.delayTime.value = delayTime; 
rightDelay.delayTime.value = delayTime; 

leftFeedback.gain.value = feedback; 
rightFeedback.gain.value = feedback; 

// Connect the routing - left bounces to right, right bounces to left. 
leftDelay.connect(leftFeedback); 
leftFeedback.connect(rightDelay); 

rightDelay.connect(rightFeedback); 
rightFeedback.connect(leftDelay); 

// Re-merge the two delay channels into stereo L/R 
leftFeedback.connect(merger, 0, 0); 
rightFeedback.connect(merger, 0, 1); 

// Now connect your input to "splitter", and connect "merger" to your output destination. 
+0

非常感謝,非常感謝!這真的有幫助。 –