UIKit更改按钮状态会中断音频

时间:2011-03-11 11:24:11

标签: iphone uikit core-audio

我有一个使用140 UIButtons(PNG图像)的iPhone应用程序,每个都触发合成的正弦音(最多10个音)。正弦音是使用高度优化的C代码(使用AudioToolbox API)生成的。 10个正弦音咀嚼大约50%的CPU(44100hz)。

我有预设可以关闭10个音调,然后打开10个新的不同音调。这也会导致UIButtons将状态从Selected更改为Normal。

我的问题是,当10个(140个中)UIButtons改变状态(同时全部)时,它会导致音频出现故障(即使音频仅咀嚼50%cpu)。因此,由于更改

导致CPU出现大幅增长

我有办法解决这个问题吗?我可以通过GUI优先考虑AudioQueue吗?是因为我有140个PNG图像作为按钮吗?是否可以创建非按钮的多点触控区域?我只是在寻找减少GUI对音频处理影响的建议。

2 个答案:

答案 0 :(得分:1)

如果正在开发音频合成应用程序,那么recommendation from Apple将使用AudioUnit API而不是AudioToolbox层。 Apple表示使用AudioUnit API的原因之一是:

  

合成声音的响应播放,例如音乐游戏或合成乐器

默认情况下,它的线程具有非常高的优先级。 AudioToolbox线程的优先级较低。最好是迁移到使用AudioUnit API而不是强制AudioToolbox的线程优先级。

答案 1 :(得分:0)

您必须在单独的线程中执行音频播放。您可以使用setThreadPriority:为新创建的线程设置优先级。