2009-06-07 41 views
1

我剛剛創建了一個鼓應用程序。用戶使用AudioToolbox中的systemsound輕擊各個按鈕,從而觸發短暫的聲音播放。 我現在想添加一個名爲「記錄」的UIButton,點擊後將記錄所有正在播放的Systemsounds,然後在使用時按下停止按鈕;該程序應該能夠播放聲音。已完成iPhone應用程序:添加新功能。錄製系統聲音,然後才能播放

我該如何去做這件事?!該程序的整個過程能夠記錄用戶通過點擊各個擊中區域觸發的短音?

請讓我知道

感謝

回答

0

我不熟悉的iPhone本身的音頻硬件,但由於它不公開任何內部綜合化程序我也不會如果無法捕獲出站音頻進行重新處理,會感到驚訝。

我懷疑你會發現它更容易,特別是如果你不熟悉直接編程音頻硬件,而是記錄鼓動作和時間間隔,並以與原始播放相同的方式重放音頻文件。這也有一個好處,就是你可以編輯,減速,加速和其他技巧,而不用直接修改音頻。

當鼓擊中時,您需要附加到NSMutableArray。下面的示例基於drumType(例如擊中的鼓按鈕的標籤)和drumNextDelay,它是到下一個鼓的命中的延遲(NSTimeInterval)。處理這個問題顯然有更多的方法,但它只是一個例子。

播放的粗略版本可以通過調用performSelector多次與下一個時間間隔,類似如下的實現:

- (void) startPerformance { 
self.drumIndex = -1; 
[self performSelector:@selector(playDrumBeat) withObject:nil afterDelay:0]; 
} 

- (void) playDrumBeat { 
self.drumIndex++; 
[self playDrum:[[drumBeats objectAtIndex:self.drumIndex] drumType]]; 
[self performSelector:@selector(playDrumBeat) withObject:nil afterDelay:[[drumBeats objectAtIndex:self.drumIndex] drumNextDelay]]; 
} 

這可以容易與操作系統的計時問題,但我追求這樣的第一次切割,看看它是否有效。

Barney

+0

這個我可以實現作爲第一次切割。是的,這不會考慮時間和實際節拍之間的延遲。它會一個接一個地播放,沒有任何節奏模式。但是這絕對看起來像是要走的路。非常感謝指南和代碼示例。 我真的很感激它。 – Pavan 2010-09-19 10:17:45

相關問題