2013-06-06 37 views
8

Web Audio API belgelerini ve eğiticileri inceledim, ancak bu soruna nasıl yaklaşacağımı anlayamadım.Web ses API'si: sesleri zamanlama ve karıma gönderme

XMLHttpRequest aracılığıyla birkaç wav dosyası yüklediğimi ve ardından arabellek kaynaklarını oluşturduğumu varsayalım. Oynatmanın tam olarak başladığında programlayabileceğimi biliyorum. Ama ya onları oynamak istemiyorsam, ama onları bir tamponda saklamak ve programlamak isterim.

Gerçek bir örnek: Tamburları programladığınız ve tüm karışımı wav'a (RecorderJS veya bir şey kullanarak kaydetmeden) dışa aktardığınız basit bir sıralayıcı oluşturmak istiyorum. Herhangi bir fikir, kütüphane?

cevap

4

Sadece biraz böyle bir şey yaptım.

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

Bu yeni bağlamı kullanarak tüm BufferSources yeniden oluşturmanız gerekir: Sonra oynatmayı planlamak

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

:

Esasen, bir çevrimdışı bağlam oluşturmak gerekir

newBufferSource.start(offline.currentTime + 10); 

Ardından, çevrimdışı rengeniz için complete etkinliğine bağlanır. dering:

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

Ardından 'oluşturma' başlatın: Eğer ev.renderedBuffer sahip olduktan sonra

offline.startRendering(); 

, size onunla istediğinizi yapabilirsiniz. Uygulamamda kendime yazdığım bir WAV kodlayıcım var - ama aynı şeyi kolayca yapmak için Recorder.js dosyasını değiştirebiliyordunuz.

Yalnızca bir başlık: webkitOfflineAudioContext şu anda yalnızca Chrome'dur. İlgilendiğiniz bir bağlantı: OfflineAudioContext

+1

Her nasılsa, bu çevrimdışı içeriğin amacını yalnızca belgelere bakarak anlayamadım. Çok teşekkür ederim :) İşte yaptığım bir çalışma örneği: http://jsfiddle.net/jC6rd/ –

+0

Harika. Takıldığın ve kaçtığına sevindim. –

+0

offline.startRendering(); Safari'de çalışmıyor, bunun için herhangi bir çözüm var mı? –

İlgili konular