完成的 iPhone 应用程序:添加一个新功能。录制系统声音,然后能够播放
Posted
技术标签:
【中文标题】完成的 iPhone 应用程序:添加一个新功能。录制系统声音,然后能够播放【英文标题】:finished iPhone app: add a new feature. record system sound and then be able to playback 【发布时间】:2009-06-07 16:36:44 【问题描述】:我刚刚创建了一个鼓应用程序。用户点击各个按钮,触发使用 AudioToolbox 中的 systemsound 播放短声音。 我现在想添加一个 UIButton,上面写着“记录”,点击后,将记录所有正在播放的系统声音,然后当用户按下停止按钮时;然后程序应该能够播放声音。
我该怎么做呢?!程序能够记录用户通过点击各个打击区域触发的短声音的整个过程?!
请告诉我
谢谢
帕万
【问题讨论】:
【参考方案1】:我不熟悉 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]];
这可能会导致操作系统出现时间问题,但我会先尝试这样的事情,看看它是否有效。
巴尼
【讨论】:
这我可以作为第一次剪辑来实现。是的,这不会考虑时间和实际节拍之间的延迟。它只会一个接一个地播放,没有任何节奏模式。但这绝对看起来像是要走的路。非常感谢您的指南和代码示例。我真的很感激。以上是关于完成的 iPhone 应用程序:添加一个新功能。录制系统声音,然后能够播放的主要内容,如果未能解决你的问题,请参考以下文章