Web音频API:安排声音并导出混音

问题描述 投票:8回答:1

我一直在检查Web Audio API文档和教程,但是还没有静静地弄清楚如何解决此问题。

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

一个真实的例子:我想创建一个简单的音序器,在其中您排定鼓,然后将整个混音导出到wav中(无需使用RecorderJS或其他东西进行录制)。有什么想法,图书馆吗?

audio html5-audio web-audio-api
1个回答
5
投票

只是做了这样的事情。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.