2015-12-23 57 views
1

我一直在玩幾個不同的Web Audio API庫,我一直在混合的結果。目前我最喜歡的是Timbre.js。我通常會從iOS上的揚聲器發出'嗡嗡聲'(即使使用AudioContextMonkeyPatch)。這有時不會發生。例如,重新啓動手機,啓動應用程序,點擊「開始」按鈕,聲音與我的桌面瀏覽器完全相同。進行更改(例如更改速度),併發出嗡嗡聲。一般來說,音頻輸出會引起蜂鳴聲。iOS 9.2上的Buzz與AudioContext(網絡音頻API)

示例代碼:

var freqs = T(function(count) { 
    return [220, 440, 660, 880][count % 4]; 
}); 

var osc = T("sin", {freq:freqs, mul:0.5}); 
var env = T("perc", {a:50, r:500}, osc).bang(); 

var interval = T("param", {value:500}).linTo(50, "30sec"); 

T("interval", {interval:interval}, freqs, env).start(); 

env.play(); 

回答

1

我問過類似的問題不多時,你們(Distortion in WebAudio API in iOS9?),相信以後我找到了答案:WebKit Audio distorts on iOS 6 (iPhone 5) first time after power cycling

摘要:在所需的碼率播放音頻樣本,然後創建一個新的上下文。

// inside the click/touch handler 
var playInitSound = function playInitSound() { 
    var source = context.createBufferSource(); 
    source.buffer = context.createBuffer(1, 1, 48000); 
    source.connect(context.destination); 
    if (source.start) { 
     source.start(0); 
    } else { 
     source.noteOn(0); 
    } 
}; 

playInit(); 
if (context.sampleRate === 48000) { 
    context = new AudioContext(); 
    playInit(); 
} 

編輯要注意,這是可能的,你必須做Timbre.js的一些黑客得到這個工作,但至少我對自己使用Web音頻工作。

+0

現在對timbre.js使用不同的音頻庫(timbre.js不再處於開發中)。在噪音創造/沉默之間,我重置了audiocontext。與上述類似的解決方案。我做了「context = new AudioContext();'作爲「停止聲音」按鈕內的命令按下。 –