Audio Web音频API:安排声音和导出混音

Audio Web音频API:安排声音和导出混音,audio,html5-audio,web-audio-api,Audio,Html5 Audio,Web Audio Api,我一直在查看Web Audio API文档和教程,但还没有找到解决这个问题的方法 假设我通过XMLHttpRequest加载几个wav文件,然后创建缓冲源。我知道我可以精确地安排播放何时开始。但如果我不想播放它们,而是想将它们存储并安排在缓冲区中呢 一个真实的例子:我想创建一个简单的序列器,您可以在其中安排鼓,然后将整个混音输出到wav(而不使用RecorderJS或其他方式录制)。有什么想法,图书馆吗?只是做了一些类似的事情 基本上,您需要创建一个脱机上下文: var offline = ne

我一直在查看Web Audio API文档和教程,但还没有找到解决这个问题的方法

假设我通过XMLHttpRequest加载几个wav文件,然后创建缓冲源。我知道我可以精确地安排播放何时开始。但如果我不想播放它们,而是想将它们存储并安排在缓冲区中呢


一个真实的例子:我想创建一个简单的序列器,您可以在其中安排鼓,然后将整个混音输出到wav(而不使用RecorderJS或其他方式录制)。有什么想法,图书馆吗?

只是做了一些类似的事情

基本上,您需要创建一个脱机上下文:

var offline = new webkitOfflineAudioContext(numChannels, lengthInSamples, sampleRate)
您必须使用此新上下文重新创建所有缓冲源:

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浏览器。如果您感兴趣,这里有一个链接:

不知何故,我没有通过查看文档来了解这个脱机上下文的用途。非常感谢:)这是我做的一个有效的例子:太棒了。很高兴你开始运行了。脱机。startRendering();不在safari中工作,有解决方案吗?