代码之家  ›  专栏  ›  技术社区  ›  Breton

服务器端音频混音器。有什么可用的?(CSound能做到吗?)

  •  1
  • Breton  · 技术社区  · 15 年前

    我感兴趣的是,是否存在可以执行以下任务的程序或库,并且适合作为网站上服务器端进程的一部分运行。(如果一个页面请求所需的时间超过了200毫秒的最大值,那也没关系——我可以将其作为异步进程运行。)

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

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

    我希望这个问题讲得通。

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

    你如何在CSound中完成这项工作?

    除了CSound还有什么能做这种事吗?

    6 回复  |  直到 10 年前
        1
  •  2
  •   Peter Mortensen icecrime    14 年前

    您肯定可以使用CSound来实现这一点,它可以通过多种方式实现。不幸的是,与采样和处理相比,我对CSound尚处于起步阶段的研究更多地涉及音频合成和算法合成,因此我无法为强大的实现提供建议。

    不过,我想你的项目 管弦乐队文件 (包含音频合成和处理信息的CSound程序的一部分,包含在称为 仪器 )会涉及到 soundin 一种操作码,它从音频文件中读取数据,然后缩放各种流的振幅,并在传递到输出之前将其混合。

    时间表可能会在 记分档 (CSound程序中处理仪器和功能表初始化的部分),它将把时间线数据转换成回放时间。

    你也可以查一下CSound的 GEN01 子例程,将音频数据从文件读取到函数表中。

        2
  •  2
  •   Ed Harper    15 年前

    如果您愿意考虑将批处理脚本作为此过程的一部分运行,您可能会发现 SoX 有用的。它的“mixer”和“remix”命令看起来可能很有用,尽管您可能需要在声音文件开始处呈现空白空间来处理偏移量。

        3
  •  1
  •   Peter Mortensen icecrime    14 年前

    你应该看看 SuperCollider . 也许这对你有好处。

        4
  •  0
  •   Amber    15 年前

    有点像PHP OpenAL bindings ?

        5
  •  0
  •   Dean J    15 年前

    你可以看看 BASS Audio Library . 我看不出它是否能比实时混合得更快,因为它在防火墙上被屏蔽了,但我发现它在过去使用起来很友好。

        6
  •  0
  •   Peter Mortensen icecrime    14 年前

    你可能会得到很多关于实时音频解决方案的建议,因为你表达问题的方式是:

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

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