iOS - 速度问题

时间:2010-11-24 16:47:44

标签: iphone xcode audio delay record

嘿所有,我有一种录制方法,可以将用户实时播放的音符写入数组。唯一的问题是稍有延迟,每个序列在播放时明显减慢。我将播放速度提高了约6毫秒,听起来不错,但我想知道其他设备的延迟是否会有所不同?

我已经在ipod touch 2nd gen上进行了测试,如何在3号,4号和iphone上进行预制?我是否需要测试所有这些并找到最佳延迟变化?

任何想法?

更多信息 : 我使用两个NSThreads而不是定时器,并填充一个空白点的数组,其中没有音符应该播放(我使用整数,-1是空白)。每隔0.03秒,它会在录制时添加空白。每次用户点击一个音符时,最新的空白将被数字0-7替换。播放时,使用第二个线程(2个线程,因为第二个线程的时间间隔较短),时间为0.024。 6毫秒的差异可以补偿录制和播放之间的延迟。

我认为记录或播放音符的时间比另一个长,因此会产生延迟。

我想知道的是,其他设备的延迟是否会有所不同,以及我应该如何补偿它。

完全解决方案

我可能没有完全解释,这就是为什么没有提供此解决方案,但对于有类似问题的任何人...

我演奏了类似于midi文件的每个节拍:

while playing:

do stuff to play beat

new date xyz seconds from now
new date now

while now is not > date xyz seconds from now wait.

我缺少的显而易见的事情就是在比赛之前创造两个日期...

D'OH!

1 个答案:

答案 0 :(得分:4)

我觉得更有可能的是,附加延迟是由音符的播放或第二个线程中的其他计算开销引起的。在播放每个音符之前,抓住第二个线程中的挂钟时间,并检查与最后一个音符的时差。您将需要减少以下延迟(可能是0.006秒!)。

iphone的不同代的延迟会有所不同,但是通过这样动态调整它,只要处理开销小于0.03秒,你就会安全。

你也应该在第一个帖子中做同样的事情。


获取高分辨率时间戳 - 有关苹果论坛here或此stackoverflow question.

的讨论