我正在使用帶有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;
}
你介意從源頭中提取路由嗎?這是一個很大的閱讀通過找到它.. –
對不起,我剛剛從我的手機發布,所以我會嘗試當我在電腦上。相關的方法是makeNewChannel – MikeHelland
我認爲也許如果有iOS6設備的用戶可以確認延遲時間明顯延長,並且Chrome可能會顯示某些內容(通過在上面的網頁上使用白色進行繪圖)而出現扭曲。和Safari 6.對不起,我知道我應該在所有平臺上進行測試,我只是無法訪問Mac。 – MikeHelland