有没有一种简单直接的方法可以将音频用作程序的输出?

Posted

技术标签:

【中文标题】有没有一种简单直接的方法可以将音频用作程序的输出?【英文标题】:Is there a simple and direct way of using audio as an output for a program? 【发布时间】:2015-02-23 18:00:26 【问题描述】:

我想尝试一些带有音频处理的 C 和 C++ 编程,例如合成器、合唱、延迟等,但我只知道使用控制台作为输出。我希望有一个窗口,而不是控制台应用程序,它能够向扬声器发送音频信号,在后台运行代码并以与 printf 类似的方式使用它:每次我都会调用“输出函数”,它会向扬声器(或声卡)发送一个样本值,指示当前振荡器位置。此输出操作可以在每次请求时或在内置循环结束时执行。以高采样率完成所有这些工作会很棒。

我认为我可以使用 Web Audio API 上的 AudioWorker 以及 html5 画布上的灵活 GUI 来完成所有这些工作,但我是这个 API 的新手,我不确定它产生的音质是否足够好。

提前致谢。

编辑:我使用的是 Windows 8.1,但欢迎任何其他平台的答案。

Edit2:也欢迎任何除 C、C++ 或 javascript 建议之外的编程语言。

【问题讨论】:

C++ 和 html5 完全不同。 你是对的,但编程语言不是那么相关,我真正寻找的是功能。 html5 不是编程语言。此外,不同的编程语言可能具有不同的功能。总而言之,将 C++ 和 html5 结合起来是个坏主意。我投票结束你的问题。 我不想把 C++ 和 html5 结合起来,当我说我想使用 C 或 C++ 时,我用错误的方式表达了自己,这些是我使用最多的语言,但我试图解释我想要一种简单的方法来处理程序中的输入,然后将输出用作音频信号。这可能是一个幼稚的问题,但这个空间不仅适用于专家。在解释了我想要做什么之后,我提到我似乎可以使用 Web Audio API 来做到这一点。这就是 C++ 和 html5 出现在这篇文章中的原因。我只想从头开始逐个采样地生成音频信号。 【参考方案1】:

我使用 Web Audio API 进行了很多声音合成,我认为这听起来很棒。 Javascript 真的是你所需要的。好吧,如果你想使用音频文件,你需要一个网络服务器来提供这些音频文件,但是音频合成都是在 javascript 中进行的。

您使用什么操作系统并不重要,但不同的浏览器对网络音频 API 的支持程度不同。 Chrome 的支持往往最好,而 Internet Explorer 的支持肯定最差。

【讨论】:

以上是关于有没有一种简单直接的方法可以将音频用作程序的输出?的主要内容,如果未能解决你的问题,请参考以下文章

将音频输出重定向到线路输入

Android:监听辅助端口

音频处理 音频输出

直接渲染到 WASAPI 时,两个流之一没有音频输出

解码aac,并生成wav文件

我可以直接与 Windows 上的音频端点交互吗?