2013-06-06 8 views
8

私はWeb Audio APIのドキュメントとチュートリアルをチェックしていますが、この問題に近づく方法を理解していません。WebオーディオAPI:音をスケジュールし、ミックスをエクスポートする

XMLHttpRequestでwavファイルをほとんど読み込まずに、次にバッファソースを作成したとします。私は、再生が正確に開始するときにスケジュールを設定できることを知っています。しかし、もし私がそれらを再生したくない場合は、代わりにそれらをバッファに保存してスケジュールしたいでしょう。

実際の例:ドラムをスケジュールし、ミックス全体をwavにエクスポートするシンプルなシーケンサーを作成したいと思います(RecorderJSなどで録音せずに)。任意のアイデア、図書館?

答えて

4

ちょっとこのようなことをしました。

基本的に、あなたがオフラインのコンテキストを作成する必要があります:あなたの再生をスケジュールその後

var newBufferSource = offline.createBufferSource(); 
newBufferSource.buffer = someAudioBuffer; 
newBufferSource.connect(offline.destination); 

:あなたはこの新しいコンテキストを使用してすべてのあなたのBufferSourcesを再作成する必要があります

var offline = new webkitOfflineAudioContext(numChannels, lengthInSamples, sampleRate) 

newBufferSource.start(offline.currentTime + 10); 

次に、オフラインレンタルのcompleteイベントにバインドしますdering:

offline.onComplete = function(ev){ 
    doSomething(ev.renderedBuffer); 
} 

を次に 'レンダリング' を開始:

offline.startRendering(); 

あなたはev.renderedBufferを持っていたら、あなたはそれでやりたいことができます。私のアプリでは、自分で作ったWAVエンコーダを持っていますが、同じことをかなり簡単に行うためにRecorder.jsを修正することもできます。

ただのヘッドアップ:webkitOfflineAudioContextは現時点ではChromeのみです。興味があればここにリンクがあります:OfflineAudioContext

+1

どういうわけか、ドキュメントを見るだけで、このオフラインコンテキストの目的を理解できませんでした。ありがとうございました:)私が作った実例は次のとおりです:http://jsfiddle.net/jC6rd/ –

+0

素晴らしいです。あなたが起きて走ってうれしいです。 –

+0

offline.startRendering();サファリ、これのための任意のソリューションで動作していない? –

関連する問題