已完成iPhone应用程序:添加新功能。录制系统声音,然后才能播放

问题描述:

我刚刚创建了一个鼓应用程序。用户使用AudioToolbox中的systemsound轻击各个按钮,从而触发短暂的声音播放。 我现在想添加一个名为“记录”的UIButton,点击后将记录所有正在播放的Systemsounds,然后在使用时按下停止按钮;该程序应该能够播放声音。已完成iPhone应用程序:添加新功能。录制系统声音,然后才能播放

我该如何去做这件事?!该程序的整个过程能够记录用户通过点击各个击中区域触发的短音?

请让我知道

感谢

我不熟悉的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