如何在 Mac OS X 上使用 C++ 播放声音?

Posted

技术标签:

【中文标题】如何在 Mac OS X 上使用 C++ 播放声音?【英文标题】:How do I play sounds with C++ on Mac OS X? 【发布时间】:2012-05-24 15:12:11 【问题描述】:

我正在更新一个 20 年前编写的 C++ 程序,以运行涉及精确启动和停止声音的科学实验。程序还需要能够控制播放音量、暂停声音或在指定位置开始声音、循环声音指定次数以及控制通道映射。

研究人员希望在现代 Mac OS X 上运行该程序,但我之前从未在 Mac 上进行过任何开发。在 Mac 上用 C++ 实现上述目标的最简单方法是什么?

CoreAudio 似乎太复杂了。 NSSound 似乎拥有我想要的所有功能,但据我所知,它仅在 Objective-C 中可用?是否可以将 Objective-C 与 C++ 混合使用?或者我应该考虑使用QuickTime SDK?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

是的,您可以混合使用 Objective-C 和 C++。这是一种名为Objective-C++ 的混合语言。如果NSSound 拥有您需要的所有功能,那就去吧;如果没有,CoreAudio 就是要走的路。设置和集成更大的库(如 QuickTime、OpenAL 或 FMOD)将更具挑战性。

【讨论】:

【参考方案2】:

是的,您可以混合使用 Objective-C 和 C++。 Objective-C 只是添加了一些东西的 C,同样的东西可以放在 C++ 之上而不是得到 Objective-C++(特别是 Objective-C++ 没有 Objective-C 中的 C 特性,但不是 C++ )。

如果您需要非常低的延迟,直接使用 CoreAudio 可能会很有用。

另一个选项可能是 OpenAL,它仅作为另一个内置框架 OpenAL.framework 提供。

【讨论】:

以上是关于如何在 Mac OS X 上使用 C++ 播放声音?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cocoa 在 OS X 中播放声音和平移?

如何在 Mac OS X 中检测是不是连接了蓝牙音频设备?

如何在 OSX 上的 C++ 应用程序中播放合成器声音?

Mac OS X 声音输出

OS X 上的 AVAudioPlayer 不播放任何声音

在 mac os x sierra 上使用 opencv c++ 编译 hello world