2010-11-24 69 views
2

大家好,我有一種錄製方法,可以將用戶實時播放的音符寫入數組中。唯一的問題是播放時有輕微的延遲,每個序列明顯放慢。我將播放速度提高了大約6毫秒,聽起來不錯,但我想知道其他設備的延遲是否會有所不同?iOS - 速度問題

我已經測試了一個iPod touch第二代,那麼這個預製棒會在第三和第四以及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!

+0

AA討論「嘿,我有記錄的方法,在寫到用戶播放的音符到一個數組即時的。」你將不得不更加清楚地解釋一下。 – 2010-11-24 16:50:07

+0

對不起,主要觀點是我想知道延遲在多個設備上是否會有所不同。我現在將繼續提供更多信息。 – 2010-11-24 16:51:50

回答

4

看來我更有可能認爲附加延遲是由音符的播放或第二個線程中的其他計算開銷引起的。在播放每個音符前,抓住第二個線程的掛鐘時間,並檢查最後一個音符的時間差。您將需要減少任何多餘的(可能爲0.006秒!)以下延遲。

iphone的不同世代的延遲會有所不同,但通過像這樣動態適應它,只要處理開銷小於0.03秒,您就會安全無虞。

您應該在第一個線程中也做同樣的事情。


獲取高分辨率時間戳 - 有蘋果論壇here,或該stackoverflow question.