AVAudioEngine API:AVAudioUnitTimePitch过多的CPU使用率

时间:2016-05-22 16:59:59

标签: ios cpu-usage avaudioengine pitch-shifting

我正在尝试使用音高变换滤镜实现简单的鼓垫机应用。我正在使用 AVAudioEngine API

应用程序中有 12 个打击垫。每个pad都有自己的类,有自己的 AVAudioPlayerNode 。当没有连接其他过滤器时,该应用程序工作得非常快。几乎没有任何延误。
但是当我尝试将 AVAudioUnitTimePitch 附加到链中时, CPU 的使用率上升到100%,并且应用程序在初始化后挂起。在 iPad3 上进行了测试。

此代码适用于每个Pad初始化。

_playerNode = [[AVAudioPlayerNode alloc] init];
_pitchFilter = [[AVAudioUnitTimePitch alloc] init];

[_audioEngine attachNode:_playerNode];
[_audioEngine attachNode:_pitchFilter];

[_audioEngine connect:_playerNode to:_pitchFilter format:_buffer.format];
[_audioEngine connect:_pitchFilter to:_audioEngine.mainMixerNode format: _buffer.format];

有没有办法以某种方式降低CPU使用率?

附:我还在 iPad Air 上测试了这款应用。它有效。但CPU使用率仍然相当高:初始化后 25-30%。播放音频时大约 50%

1 个答案:

答案 0 :(得分:0)

您在此处进行了大量处理...尝试降低采样率,通道数或位深度。 AFAIK没有办法改变AVAudioEngine的缓冲区大小。

相关问题