Web音频API:调度声音和导出混音

时间:2013-06-06 18:12:56

标签: audio html5-audio web-audio

我一直在检查Web Audio API文档和教程,但还没有想到如何解决这个问题。

假设我通过XMLHttpRequest加载了几个wav文件,然后创建了buffersources。我知道我可以安排精确播放的时间。但是,如果我不想播放它们,而是希望将它们存储在缓冲区中,那该怎么办呢。

一个真实的例子:我想创建一个简单的音序器来安排鼓,然后将整个混音导出到wav(不使用RecorderJS或其他东西录制)。任何想法,图书馆?

1 个答案:

答案 0 :(得分:4)

做了类似的事情。

基本上,您需要创建一个离线上下文:

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

您必须使用以下新上下文重新创建所有BufferSource:

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

然后安排播放:

newBufferSource.start(offline.currentTime + 10);

然后绑定到离线呈现的complete事件:

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

然后开始'渲染':

offline.startRendering();

一旦你拥有ev.renderedBuffer,你可以随心所欲地做任何事情。在我的应用程序中,我有一个WAV编码器,我最终自己写了 - 但你可以修改Recorder.js来做同样的事情。

只是单挑:webkitOfflineAudioContext目前仅限Chrome浏览器。如果您有兴趣,请点击此链接:OfflineAudioContext