我有一个使用 Tone.js 在循环上运行的简短、交叉渐变的环境声音剪辑。麻烦的是,在一个播放的结束和下一个播放的开始之间有一个可听的间隙。
我知道可以使用音频精灵在 Howler.js 中实现无缝交叉淡入淡出的循环,但我不确定如何在 Tone.js 中做到这一点(如果可能的话,我宁愿坚持使用这个库)。
有没有人知道如何解决这个问题?
我有一个使用 Tone.js 在循环上运行的简短、交叉渐变的环境声音剪辑。麻烦的是,在一个播放的结束和下一个播放的开始之间有一个可听的间隙。
我知道可以使用音频精灵在 Howler.js 中实现无缝交叉淡入淡出的循环,但我不确定如何在 Tone.js 中做到这一点(如果可能的话,我宁愿坚持使用这个库)。
有没有人知道如何解决这个问题?
为避免循环音频中的不连续性,您需要交叉淡入淡出循环的结尾和开头。如果您的程序只使用一组固定的循环,您可以使用 Audacity 等音频编辑器或 Pro Tools 或 Reaper 等 DAW 将交叉淡入淡出预渲染到剪辑中。
如果您有一个需要处理用户提供的音频的通用应用程序,那么您需要编写代码来混合循环结束淡出和循环开始淡入。
无缝循环 MP3 曲目很困难,但并非不可能。MP3 文件包含由解码器解码为音频数据的附加填充。我会推荐这两个选项之一来解决填充:
使用特殊软件准备无缝 MP3 循环。您可以在此处阅读更多相关信息:https ://www.compuphase.com/mp3/mp3loops.htm
切换到不同的格式:AAC(所有浏览器的最佳支持,但仍然可能存在一些填充问题,可以克服)、OPUS、OGG。在此处阅读更多信息:https ://en.wikipedia.org/wiki/Gapless_playback#Prerequisites