私は Web Audio API が大好きです。可能性は素晴らしいです。とは言っても、まだ初期段階です。私が最も心配しているのは、不要になったバッファー/サウンドを解放する方法がわからないことです。ウェブソケットを介して接続されたミュージシャン/DJ/モデレーターからのライブサウンドをミキシングするため、常に新しいサウンドのサウンドバッファー。
次のコードは、行内の新しいバッファーの再生のロードをシミュレートします。エフェクトのミキシングを追加して、誰もが彼のパフォーマンスでライブ結果を聞くことができるようにするには、Web オーディオ API が必要です。
残念ながら、このコードは RAM 全体を消費し、モバイル サファリとデスクトップ サファリの両方をクラッシュさせます。それらが再生された後、それらの大きなバッファーを解放する方法がわかりません。また、それらはもう必要ありません。新しい大きなデータをメモリ内の代わりにロードする必要があります。誰か考えがありますか?そうしないと、再生された最初の 8 つのファイルがロードできなくなります。
var context = new webkitAudioContext();
var total=0;
function onTouchStart(){
setInterval(function(){
total+=10;
source = context.createBufferSource();
source.connect(context.destination); // simulates loading large file
source.buffer=context.createBuffer(1, 10*1024*1024, context.sampleRate);
source.noteOn(0);
source.noteOff(0); // acording to w3c spec resources should be deleted immediately.
// making source property and call delete or =null will release nether source or buffer i am desperate.
console.log(total,'mb'); //
},1000);
}
document.addEventListener( "touchstart", onTouchStart );
document.addEventListener( "click", onTouchStart );