我正在尝试使用音高变换滤镜实现简单的鼓垫机应用。我正在使用 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%。
答案 0 :(得分:0)
您在此处进行了大量处理...尝试降低采样率,通道数或位深度。 AFAIK没有办法改变AVAudioEngine的缓冲区大小。