現在、私が取り組んでいるプロジェクトにはこのweb audio API demoを適用していますが、iPhoneでテストするとサウンドはありません。それはiPad上で正常に動作します。iOSでウェブオーディオAPIのデモが動作しない
私は解決策を検索し、答えの1の次のスニペットでStackOverflowの上で、このthreadを見つけた:
のiOS 6のSafariは、効果的にミュートウェブオーディオAPIから始まります。 イベントでサウンドを再生しようとすると(バッファソースを作成して宛先に接続し、 noteOn()にコールするまで)、 はミュートを解除しません。この後、ミュート解除され、オーディオ再生は制限されず、 とする必要があります。これは、(うまくいけば、彼らはすぐにこのの 言及し、それを更新し、Appleのドキュメントはここにある!)のiOS 6で動作します ウェブオーディオAPIがどのように文書化されていない側面です
ユーザ入力イベントは、onclickイベントでなければなりません再生ボタンにはstart()
の代わりにnoteOn()
を使用するように変更するとまだ修正されていません。
更新:私はまた、再生ボタンを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()を呼び出す関数を追加しましたが、コードベースはかなり大きいです。プロジェクトはGithubのhttps:// githubにあります。com/cwilso/MIDIDrums –
オリジナルデモはこちらですが、iPhoneでも動作しません。 http://webaudiodemos.appspot.com/MIDIDrums/index.html –