2

我正在为 iOS 开发一个虚拟乐器应用程序,并尝试实现一个录音功能,以便该应用程序可以录制和播放用户使用乐器制作的音乐。我目前正在使用基于 OpenAL 的 CocosDenshion 声音引擎(我自己的一些技巧涉及淡入淡出等)。从我在网上的研究看来,我有两种选择:

  1. 记录用户的输入(即以什么音量播放了哪些音符),以便应用程序可以重新创建声音(但这不能共享/通过电子邮件发送)。
  2. 使用 AudioUnits & 特别是 RemoteIO 破解我自己的低级声音引擎,以便我手动混合所有声音并手动填充最终输出缓冲区,因此可以将所述缓冲区保存到文件中。这将能够通过电子邮件等共享。

我已经实现了一个 RemoteIO 回调来渲染输出缓冲区,希望它能给我以前在缓冲区中播放的数据,但可惜缓冲区总是全 00。

所以我的问题是:有没有比我上面的选项 2 更简单的方法来嗅探/收听我的应用程序发送给扬声器的内容?

在此先感谢您的帮助!

4

2 回答 2

0

您可能想看看AudioCopy 框架。它做了很多你似乎正在寻找的东西,并且会让你免于重新发明一些轮子。

于 2011-05-19T05:27:55.683 回答
0

我认为您应该使用 remoteIO,几个月前我有一个类似的项目,并希望尽可能避免 remoteIO 和音频单元,但最后,在我编写了大量代码并从第三方库(包括cocosdenshion)我最终还是使用了音频单元。不仅如此,设置和使用它并不难。但是,如果您正在寻找一个库来为您完成大部分工作,那么您应该寻找一个写在核心音频之上的库,而不是打开 al。

于 2011-05-19T07:53:57.037 回答