【问题标题】:Sound output through M-Audio ProFire 610通过 M-Audio ProFire 610 输出声音
【发布时间】:2011-06-26 20:12:30
【问题描述】:

我在工作中得到了一项任务,要创建一个能够将声音引导到声卡的不同输出通道的系统。我们用的是M-Audio ProFire 610,它有8路输出,通过火线连接。我们还使用 Mac Mini 作为我们的主机服务器,我将在 Xcode 中工作。

这是我正在构建的图表:

diagram http://img121.imageshack.us/img121/7865/diagramy.png

起初我认为 Java 足以满足这个项目,但后来我发现 Java 无法将声音推送到声卡的默认输出通道之外,所以我决定切换到 C++。问题是我是一名网络开发人员,我对这门语言没有任何经验 - 这就是我寻求更有经验的开发人员帮助的原因。

我为 ios4 找到了一个 Core Audio Primer,但不确定我可以在我的项目中使用多少。我也觉得有点混乱。

我应该采取哪些步骤来完成这项任务?我应该使用哪些框架?任何代码示例?我正在寻找任何帮助、提示、技巧——以及任何能帮助我完成这个项目的东西。

【问题讨论】:

  • +1 表示您已尝试自己回答一个谨慎的问题。

标签: c++ macos audio core-audio


【解决方案1】:

如果您只是在寻找音频传递,您可能想查看已经构建的东西,例如 Jack,它创建了一个外观和工作方式与真实设备相似的软件音频设备(您可以设置它作为您应用程序的默认输出),然后允许您将每个通道路由到您想要的任何位置(包括到其他应用程序)。

如果你想/需要自己制作,一定要使用 C++,有很多教程(我从 cplusplus.com 学习)。 CoreAudio 是 Justin 提到的低级 C/C++ 接口,但它确实很难学习和使用。 PortAudio 提供了一个更简单的 API,为此我在 Mac 实现上做了一些工作。看看那里的教程,为默认输入和输出做一些类似的事情,然后使用PaMacCore_SetupChannelMap 进行通道映射,描述为here。您需要调用它两次,一次用于输入流,一次用于输出流。如果您需要更多建议,请加入 PortAudio 的邮件列表!祝你好运!

【讨论】:

  • PortAudio 看起来很有前途。它确实比 Core Audio 简单,文档似乎更详尽。我将阅读他们的教程,并希望可以将此 API 用于我的项目。我问的问题只是我正在创建的整个系统的一小部分,所以我想我会使用 PortAudio 而不是 Jack,这对我来说似乎有点困惑。此外,自己实现 API 总是更有趣,对吧?非常感谢您的提示,它非常有帮助。
【解决方案2】:

主要 API 位于 CoreAudio/AudioHardware.h

Apple 提供的大多数示例/支持代码都是 C++ 语言。但是,API 完全是 C(不知道这是否对您有帮助)。

您将希望访问硬件抽象层(又名 HAL),此文档中的更多详细信息:

http://developer.apple.com/documentation/MusicAudio/Conceptual/CoreAudioOverview/CoreAudioOverview.pdf

对于(相当大量的)额外样本/用法,请参阅$DEVELOPER_DIR/Extras/CoreAudio/

【讨论】:

  • 现在我已经使用 C++ 工作了几天,我终于能够理解 Core Audio 的示例文件中发生了什么。它似乎是一个非常强大的库。谢谢你的回复,很有帮助。
  • @rkrv。不客气 - 很高兴它有帮助。祝你的项目好运!
猜你喜欢
  • 2011-10-30
  • 2013-12-06
  • 2011-10-28
  • 2016-03-04
  • 1970-01-01
  • 2016-07-26
  • 2022-01-21
  • 1970-01-01
  • 2011-09-21
相关资源
最近更新 更多