2

我正在尝试将 newTimePitch 音频单元合并到我的 iOS 应用程序中。我用 filePlayer Unit -> subType_NewTimePitch Unit -> remoteIO Unit 构建了一个 AUGraph。我发现 newTimePitch 单元的输出失真了。即使在默认速率 (1.0) 和音高 (0) 参数下,这种失真也会持续存在。

我进行了一个简单的确认测试:在我的 auGraph 上,我将 subType_NewTimePitch 换成了 subType_Varispeed,保持所有其他参数相同,失真消失了。我还尝试在 newTimePitch 上游放置一个混音器单元,以减少 newTimePitch 单元的输入增益。当然,这降低了设备的整体输出,但并没有改善失真。我发现,虽然在 iOS 模拟器中失真不是特别明显,但它肯定存在于实际设备(iPad2)上。

我会对其他人的经验和/或解决方案非常感兴趣。

4

4 回答 4

0

如果您不希望它影响默认音高和速率的声音(无变化),可以在 NewTimePitch 转换器音频单元上设置一个 BypassEffect 属性。

我只在 iOS 6 设备上对此进行了测试,但 NewTimePitch 和旁路似乎都在那里工作。

于 2013-04-28T20:20:18.970 回答
0

Greg,我还在我的应用程序中使用了 newTimePitch 音频单元。我在模拟器上没有发现任何失真或噪音。设备呢:不幸的是,我在 NewTimePitch 节点上根本没有声音(带有 AudioUnit 的iOS 声音在模拟器上工作,而不是在真实设备 iPad 上工作)。如果我使用 AUConverter 节点而不是 NewTimePitch 声音播放良好。我也试过变速,但也没有成功。你知道在 iPad 上丢失声音的可能原因吗?

我对您的问题有几个建议:
1)您的 NewTimePitch 是图中的第一个节点?和输入渲染回调有关联吗?如果是,那么您是否尝试添加例如 Mixer 节点作为第一个节点和 NewTimePitch 之后?如果问题与流格式有关,这可能是有道理的。

2)您是否尝试在 NewTimePitch 节点和 remoteIO 节点之间添加 AUConverter 节点?如果问题与流格式有关,这可能是有道理的。

3)您是否尝试在不是 XCode 的设备上启动已编译的应用程序?如果您在渲染回调中有日志(大量日志信息导致根本没有声音或声音不好),这可能是有意义的。

于 2013-04-28T15:52:08.820 回答
0

我也发现了这个,只是回到了旧时的音高单元。

于 2013-04-28T15:01:19.810 回答
0

我使用渲染回调 -> 混合器单元 -> NewTimePitch 单元 -> 混合器单元 -> RemoteIO 单元遇到了这个问题。我发现了两种解决方法:

1)使用变速单元并在其上设置 kNewTimePitchParam_Pitch 属性(未记录,但有效)。

2) 使用 AUFilePlayer 而不是渲染回调。

结果:播放器单元 -> NewTimePitch 单元 -> 混音器单元 -> RemoteIO 单元

解决方法 2 的注意事项:我需要从音高单元获取 kAudioUnitProperty_StreamFormat 并将播放器单元的输出格式设置为它,并将混音器单元的输入格式设置为它。

于 2017-02-18T09:09:32.813 回答