1

我有兴趣找出是否存在可以执行以下任务的程序或库,并且适合作为网站上服务器端进程的一部分运行。(如果它花费的时间超过单页请求合理的 200 毫秒最大值也没关系 - 我可以将它作为异步进程运行。)

任务是这样的:我有一组音频文件作为输入,并且我有一些关于每个音频文件应该何时开始在时间线上播放的数据。程序应该输出一个音频文件,它是输入音频的混合,使用时间线数据组合。也就是说,我想要一个以批处理模式而不是实时运行的混音器。

我做了一些谷歌搜索,但有点沮丧,因为我不确定我应该寻找什么。大多数音频混音器似乎都面向游戏等实时应用程序,我不确定如何找到像命令行实用程序那样执行此任务的东西——纯粹接受输入,并尽可能快地产生输出。

我希望这个问题是有道理的。

编辑:有人评论了Csound,然后将其删除。什么是Csound?做我要求的事情相对简单吗?请记住,我的输入声音文件可能长达 10-50 秒,而且我对音高失真不感兴趣。

您将如何在 Csound 中完成此任务?

除了Csound之外还有什么可以做这种事情的吗?

4

6 回答 6

2

如果您愿意考虑在此过程中运行批处理脚本,您可能会发现SoX很有用。它的“mixer”和“remix”命令看起来很有帮助,尽管您可能需要在声音文件的开头渲染空白空间以处理偏移量。

于 2009-11-26T12:24:00.000 回答
2

您绝对可以为此使用 Csound,并且可以通过多种方式实现。不幸的是,我对 Csound 的研究仍处于初期阶段,更多地涉及音频合成和算法组合,而不是采样和处理,因此我无法为稳健的实现提供建议。

但是,我猜您项目的管弦乐队文件(包含音频合成和处理信息的 Csound 程序的一部分,包含在名为instruments的模块中)将涉及soundin从音频文件读取的操作码,然后它会缩放幅度各种流并在传递到输出之前将它们混合。

时间线可能会在乐谱文件(处理乐器和函数表初始化的 Csound 程序的一部分)中处理,这会将您的时间线数据转换为播放时间。

您还可以查找 Csound 的GEN01子例程,该例程将音频数据从文件读取到函数表中。

于 2009-12-03T16:29:15.953 回答
1

你应该看看SuperCollider。也许这对你有用。

于 2009-11-26T17:07:10.597 回答
0

类似于 PHP 的OpenAL 绑定

于 2009-11-26T11:29:42.647 回答
0

由于您提出问题的方式,您可能会收到很多关于实时音频解决方案的建议:

程序应该输出一个音频文件,它是输入音频的混合,使用时间线数据组合。

“输入音频”非常模糊。对我来说,这听起来像是一个实时输入流(像一个麦克风)。如果您根本不处理实时 I/O 流,那么是的,Csound 可能是一个候选者。网上有很多 Csound 教程。

于 2009-11-27T11:07:09.380 回答
0

您可能会查看BASS 音频库。我无法看到它是否可以比实时更快地混合,因为它在防火墙处被阻止,但我发现它过去使用起来很友好。

于 2009-12-03T17:05:29.873 回答