2012-10-26 118 views
2

我正在使用帶有javascript的Web Audio API。網絡音頻API延遲聲音在Chrome中變得異常

我創建了一個振盪器,將它連接到卷(gainNode),將它連接到一個目的地。

好的。尼斯。

我想要一個延遲效果,我堅持它之間的振盪器和音量。

那麼,這是行不通的,我只聽到延遲。雖然它很乾淨。好的,所以我把osc連接到音量的延遲,osc連接到音量,然後把音量連接到目的地。

現在它似乎被扭曲了。

我試過osc來延遲音量到目的地,osc到目的地,所以有兩個連接到目的地。這也是扭曲的。

這是關於鉻。

在很短的時間內我不得不嘗試它,它似乎在iOS6上正常工作。不知道關於safari。

嘗試通過去http://cloudmusiccompany.appspot.com/watch.jsp並點擊紅色和繪圖。這是一個正常的正弦波形。現在單擊白色並繪製,這與延遲相同,而在chrome(Ubuntu)上則是扭曲的。不知道薩法爾。

很明顯,您可以在鏈接中看到完整的源代碼,因爲它的JavaScript。

相關來源:

function makeNewChannel(color){ 
    var info = getInstrumentInfo(color); 
    var chan = {osc: acontext.createOscillator(), 
    freqs: [], 
    times: [], 
    pxdata: [], 
    i: 0, 
    muted: true, 
    finishedLoop: false, 
    volume: acontext.createGainNode(), 
    gate: acontext.createGainNode(), 
    delay: acontext.createDelayNode(), 
    delayGain: acontext.createGainNode(), 
    mute: function(){ 
     this.muted = true; 
     this.volume.gain.value = 0; 
    }, 
    unmute: function(){ 
     this.muted = false; 
     this.volume.gain.value = player.defaultGain/(info.soft ? 2 : 1); 
    } 
    } 
    chan.osc.type = info.type; 

    //  chan.osc.connect(chan.gate); 
    chan.osc.connect(chan.volume); 

    chan.delayGain.gain.value = player.defaultGain ; 
    /* ugh , the wet sounds ok, but somehow its distorting or doubling the dry signal 
    * although it seems ok on iphone? 
    * */ 
    if (info.delay){ 
    chan.delay.delayTime.value = 0.5; 
    chan.volume.connect(chan.delay) 
    chan.delay.connect(chan.delayGain); 

    chan.delayGain.connect(acontext.destination); 

    } 
    chan.volume.gain.value = 0; //player.defaultGain; 
    chan.gate.gain.value = 0; 
    chan.volume.connect(acontext.destination); 
    chan.osc.frequency.value = 0; 

    chan.osc.noteOn(0); 
    return chan; 
} 
+0

你介意從源頭中提取路由嗎?這是一個很大的閱讀通過找到它.. –

+0

對不起,我剛剛從我的手機發布,所以我會嘗試當我在電腦上。相關的方法是makeNewChannel – MikeHelland

+0

我認爲也許如果有iOS6設備的用戶可以確認延遲時間明顯延長,並且Chrome可能會顯示某些內容(通過在上面的網頁上使用白色進行繪圖)而出現扭曲。和Safari 6.對不起,我知道我應該在所有平臺上進行測試,我只是無法訪問Mac。 – MikeHelland

回答

2

我只是有機會使用它在Chrome Windows版,並能正常工作。延遲聽起來應該是這樣。

這肯定是Linux版本(鉻版)的一個bug

1

你也許可以通過上下文目的地前右加的壓縮機解決這個問題。所有的路徑都應該連接到它,然後壓縮機連接到目的地。

https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#DynamicsCompressorNode

+0

我曾嘗試過,特別是因爲該文檔使用它,並且我也使用了相同的g1,s1方案。但效果相同。無論是壓縮機還是收益,我都不會指望它們的表現太不同。我甚至嘗試過一個渠道分拆和合並,雖然顯然他們有不同的目的。 – MikeHelland