4

我正在尝试创建一个简化的音频应用程序,该应用程序从 iPhone 获取麦克风输入的音量,并使用它来设置从另一个音频单元源播放的声音的音量。

我更愿意使用图表来完成所有这些工作。除了音量级别之外,我不需要来自麦克风的任何信息,并且如前所述,我希望这是一个具有良好性能和最少代码的简化解决方案。

我正在研究一种解决方案,该解决方案将使用带有 remoteIO 作为子类型的“输出”音频类型,文档说它可用于输入或输出或两者兼而有之。

我似乎找不到任何方法来仅使用图表来完成此任务。我以前用 AVAudioRecorder 实现过它,但我对这种方法不满意。我查看了 aurioTouch 和 aurioTouch2 示例,但都没有实现图形方法。Apple 的音频文档指出这是要走的路。

4

1 回答 1

4

Novocaine可能是您最简单的解决方案,因为它会立即为您提供来自麦克风的数据。您可能想要获取它提供给您的缓冲区并计算其RMS。这会给你一个粗略的“麦克风音量现在有多大”的答案。

要从 AUGraph 的角度回答您的问题,诀窍是很难将 RemoteIO 用作 AUGraph 的输入。从技术上讲,RemoteIO 是一个输出单元,这使 AUGraph 有点混乱。通常,您会使用环形缓冲区来缓冲来自 RemoteIO 麦克风输入的音频,然后稍后将其馈送到 AUGraph(即,当 AUGraph 的头部向您的应用程序发出渲染回调时)。当然,如果你到了这一点,你根本不需要 AUGraph,只需检查环形缓冲区阶段的音频电平。

也就是说,假设您的 AUGraph 中有样本。您如何判断它们在给定点的声音有多大?您可以使用具有计量功能的 AUMultiChannelMixer 音频单元。只需在输入范围上启用kAudioUnitProperty_MeteringMode属性,然后只需检查kMultiChannelMixerParam_PreAveragePower参数即可查看在该点通过混音器的音频音量(值将从 -120 浮动到 0,表示 -120dB 到 0dB)。

于 2012-10-19T17:46:26.907 回答