我为游戏制作了一个网站,可以录制和共享音乐,一些用户问我是否可以添加混响选项来打开/关闭混响(这可以模拟在洞穴内),我在Google上搜索了一下[ C0]老实说,我对此并不太了解,但是我设法使其正常运行,最终我做到了:
found about the webAudio api reverb with the convolver node.
变量“ buf”是已解码的音频文件,它似乎确实可以工作,但是它确实很大且失真,我有一个演示const source = a_ctx.createBufferSource()
source.buffer = buf
source.playbackRate.value = pitchKey;
if(reverbToggled){
let convolver = a_ctx.createConvolver();
convolver.buffer = buf
source.connect(convolver)
convolver.connect(a_ctx.destination)
}else{
source.connect(a_ctx.destination)
}
source.start(0)
,要查看开/关混响之间的区别,只需按“ R”按钮在右侧,然后按中间的注释按钮。
我可能在convolverNode的实现中犯了一些错误,但是我不完全知道是什么原因导致的,如何解决?
卷积器当然可以用于混响,但是您要提供的“缓冲区”不应与您正在播放的音频相同。相反,应该给它一个混响内核(或脉冲响应),可以预先计算或实际录音。它对应于空间对声音脉冲的反应。您可能可以在网上找到合适的免版税内核,尽管我自己从来没有自己找过。
有关卷积混响here的更多信息。