我有一个振荡器来生成键盘的频率。这一切都在我输出到扬声器时有效,但是除了输出到扬声器之外我想要缓冲它以便我可以将它变成基座64并在以后再次使用。我见过的唯一例子是xhr,我不需要它,因为显然我希望能够在模块化路由中添加一个节点来获取输入,将其存储在一个数组中,然后输出到硬件。
这样的事情:
var osc = ctx.createOscillator();
osc.type = 3;
osc.frequency.value = freq;
osc.connect(buffer);
buffer.connect(ctx.destination);
这可能吗?
答案 0 :(得分:1)
您是否考虑过使用ScriptProcessorNode? p>
请参阅:http://www.w3.org/TR/webaudio/#ScriptProcessorNode
您可以将eventListener附加到此节点,以便在通过时捕获音频样本数组。然后,您可以保存这些缓冲区并根据需要对其进行操作。
答案 1 :(得分:1)
你检查过RecorderJs吗? https://github.com/mattdiamond/Recorderjs。我认为它可以满足您的需求。
答案 2 :(得分:0)
我通过使用Matt的Recorder.js https://github.com/mattdiamond/Recorderjs并将其连接到GainNode解决了我的问题,GainNode充当从多个振荡器到ctx.destination的中介。我将使用localStorage,但这是一个使用数组的示例(这不包括振荡器设置)。
var recorder;
recorder = new Recorder(gainNode, { workerPath: "../recorderWorker.js"});
recorder.record();
var recordedSound = [];
function recordSound() {
recorder.exportWAV(function(blob) {
recordedSound.push(blob);
});
}
function play(i) {
var audio = new Audio(window.URL.createObjectURL(recordedSound[i]));
audio.play();
}