我正在尝试将newTimePitch音频单元合并到我的iOS应用中。我构建了一个带有filePlayer单元的AUGraph - > subType_NewTimePitch Unit - > remoteIO单元。我发现newTimePitch单元的输出失真了。即使在默认速率(1.0)和音调(0)参数下,这种失真也是持久的。
我已经进行了一个简单的测试确认:在我的auGraph上,我将subType_NewTimePitch交换为subType_Varispeed,保持所有其他参数相同,并且失真消失。我还尝试在newTimePitch的上游放置一个混音器单元,以减少newTimePitch单元的输入增益。当然,这降低了单元的总输出,但没有改善失真。我发现,尽管iOS模拟器中的失真并不是特别明显,但它实际上存在于实际设备(iPad2)上。
我会对其他人的经验和/或解决方案非常感兴趣。
答案 0 :(得分:0)
我也发现了这一点,只是回到旧时间单位。
答案 1 :(得分:0)
格雷格,我也在我的应用程序中使用newTimePitch音频单元。我没有在模拟器上发现任何失真或噪音。设备怎么样:不幸的是,NewTimePitch节点(iOS Sounds with AudioUnit works on simulator, not on real device iPad)根本没有声音。如果我使用AUConverter节点而不是NewTimePitch,则声音播放效果良好。我也试过Varispeed,但也没有成功。你知道在iPad上错过声音的可能原因吗?
我对你的问题有几点建议:
1)您的NewTimePitch是图表中的第一个节点?和输入渲染回调是否相关联?如果是,那么您是否尝试添加例如Mixer节点作为第一个节点和之后的NewTimePitch?如果问题与流格式有关,那就有意义了。
2)您是否尝试在NewTimePitch节点和remoteIO节点之间添加AUConverter节点?如果问题与流格式有关,那就有意义了。
3)您是否尝试在设备上启动已编译的应用程序而非XCode?如果您有渲染回调日志(大量日志信息根本没有声音或声音不好),这是有意义的。
答案 2 :(得分:0)
如果您不希望它以默认音高和速率(无变化)影响声音,可以在NewTimePitch转换器音频单元上设置BypassEffect属性。
我只在iOS 6设备上测试了这个,但NewTimePitch和旁路似乎都在那里工作。
答案 3 :(得分:0)
我使用渲染回调遇到了这个问题 - >混合器单元 - > NewTimePitch单位 - >混合器单元 - > RemoteIO单元。我找到了两个解决方法:
1)使用Varispeed单元并在其上设置kNewTimePitchParam_Pitch属性(未记录,但有效)。
2)使用AUFilePlayer而不是渲染回调。
结果:播放器单元 - > NewTimePitch单位 - >混合器单元 - > RemoteIO单元
关于变通方法2的注意事项:我需要从音高单位获取kAudioUnitProperty_StreamFormat并将播放器单元的输出格式设置为它,以及混音器单元的输入格式。