我刚刚创建了一个鼓应用程序。用户点击各个按钮,使用AudioToolbox的系统声音触发短音播放。
我现在想添加一个UIButton,上面写着“record”,单击后将记录正在播放的所有Systemsounds,然后在用户按下停止按钮时记录;程序应能够播放声音。
我该怎么做呢?程序的整个过程是否能够记录用户通过点击各个打击区而触发的短声音?
请告诉我
谢谢
帕万
最佳答案
我不熟悉iPhone本身的音频硬件,但是由于它没有公开任何内部合成例程,因此如果无法捕获出站音频进行重新处理,我不会感到惊讶。
我怀疑您会发现容易得多,特别是如果您不直接编程音频硬件,而是录制鼓的 Action 和时间间隔并以与原始播放相同的方式重播音频文件,会更容易。这还具有以下优点:您可以编辑,减慢,加快速度和其他技巧,而无需直接更改音频。
当敲击鼓时,您需要附加到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 - 完成的iPhone应用程序:添加新功能。录制系统声音然后可以播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/962252/