我计划有大约100个同步音轨播放与现场可控音量每首曲目。音频来自wav
文件。
在Java中有没有实现这一点的库/最佳实践?
发布于 2013-08-04 11:39:09
我建议你看看Praxis和JAudioLibs。尼尔·史密斯对此很在行。
我可能一次播放30-50个wav,我的库肯定不是最有效的。而且我没有为那些wav文件改变音量或pans。如果你的一些声音足够短,可以存储在内存中(例如,一组声音效果),那么你拥有如此多的曲目就有更多的成功机会。我一次运行了100个短片(使用定制的片断,但同样,除了触发值之外,没有添加音量或平移)。
有一篇关于Java实时问题的好文章。这些问题是真实的,但并不是无法克服的。如果你坚持使用javax.audio.sampled库提供的最底层的工具,Java是相当低级和快速的,并且不介意有一点延迟。
http://quod.lib.umich.edu/cgi/p/pod/dod-idx?c=icmc;idno=bbp2372.2007.131
实时控制音量是很困难的,因为它需要一个非常小的缓冲区,或者需要一种进入并进行每帧计算的方法,否则就有可能获得拉链或点击等效果。当我对鼠标运动监听器的输出加时间戳并计算中间音量时,我在实时音量更改方面取得了一些成功。但我还没有尝试一次将其应用于多个通道。(这是一个虚拟的特雷曼项目)。
然而,可能有一种方法可以预先构建非常有效的信封选择,并通过从这些信封的菜单中进行选择来控制音量。嗯。
这是一个具有挑战性的问题,我不知道即使是我的DAW (Cakewalk Sonar,用某种风格的C编写)是否也能处理这个问题。
https://stackoverflow.com/questions/18033292
复制相似问题