1

我计划播放约 100 条同步音轨,每条音轨具有实时可控音量。音频来自wav文件。

是否有任何库/最佳实践可以在 Java 中实现这一目标?

4

1 回答 1

1

我建议看看 Praxis 和 JAudioLibs。尼尔史密斯知道他的东西。

我可能一次播放了 30-50 个 wav,而且我的库肯定不是最有效的。而且我没有更改这些 wav 文件的音量或平移。如果您的其中一些声音足够短,可以存储在内存中(例如,一组音效),那么您拥有这么多曲目的成功机会就更大。我一次运行了 100 个短片(使用定制的剪辑,但同样,除了触发值之外,没有添加音量或平移)。

有一篇关于 Java 实时问题的好文章。这些问题是真实的,但并非无法克服。如果您坚持使用 javax.audio.sampled 库提供的最低级别的工具,并且不介意一点延迟,Java 是相当低级和快速的。

http://quod.lib.umich.edu/cgi/p/pod/dod-idx?c=icmc;idno=bbp2372.2007.131

实时控制音量是很困难的,因为它要么需要一个非常小的缓冲区,要么需要一种进入并进行每帧计算的方法,否则就有可能出现拉链或点击等效果。当我为鼠标运动监听器输出加上时间戳并计算中间音量时,我在实时音量变化方面取得了一些成功。但我没有尝试一次将其应用于多个频道。(这是一个虚拟的 Theremin 项目)。

但是,可能有一种方法可以预先构建一个非常有效的包络选择,并通过从这些包络的菜单中进行选择来控制音量。嗯。

这是一个具有挑战性的问题,我不知道我的 DAW(Cakewalk Sonar,用某种 C 语言编写)是否能够处理这个问题。

于 2013-08-04T03:39:09.017 回答