我目前正致力於將這個web audio API demo適用於我正在開發的項目,但在iPhone上測試時沒有聲音。它可以在iPad上正常工作。Web Audio API演示不適用於iOS
我搜索過的解決方案,並發現這個thread StackOverflow上與其中一個答案的下面的代碼片段:
的Safari在iOS 6上有效地與網絡音頻API靜音啓動。在您嘗試播放用戶輸入 事件(創建緩衝區來源,將其連接到目標,並呼叫 noteOn())之前,它將不會取消靜音。在此之後,它取消靜音並且音頻播放不受限制,並且它應該是 。這是如何通過Web Audio API在iOS 6 工作的無證方面(蘋果的doc是在這裏,希望他們有 提到的這一聲更新!)
用戶輸入事件應該是onclick事件在播放按鈕,但改爲使用noteOn()
而不是start()
仍然不能解決它。
更新:我也嘗試綁定播放按鈕與touchend
事件,但無濟於事。
下面是一個使用noteOn()函數:
function playNote(buffer, pan, x, y, z, sendGain, mainGain, playbackRate, noteTime) {
// Create the note
var voice = context.createBufferSource();
voice.buffer = buffer;
voice.playbackRate.value = playbackRate;
// Optionally, connect to a panner
var finalNode;
if (pan) {
var panner = context.createPanner();
panner.panningModel = "HRTF";
panner.setPosition(x, y, z);
voice.connect(panner);
finalNode = panner;
} else {
finalNode = voice;
}
// Connect to dry mix
var dryGainNode = context.createGain();
dryGainNode.gain.value = mainGain * effectDryMix;
finalNode.connect(dryGainNode);
dryGainNode.connect(masterGainNode);
// Connect to wet mix
var wetGainNode = context.createGain();
wetGainNode.gain.value = sendGain;
finalNode.connect(wetGainNode);
wetGainNode.connect(convolver);
if (iOS) {
voice.noteOn(noteTime);
}
else {
voice.start(noteTime);
}
}
任何建議,將不勝感激。謝謝。
請顯示您的代碼 – user7951676
我已經添加了調用noteOn()的函數,但代碼庫相當大。該項目位於https:// github上的Github上。com/cwilso/MIDIDrums –
最初的演示在這裏,它也不能在iPhone上工作。 http://webaudiodemos.appspot.com/MIDIDrums/index.html –