1

我刚刚创建了一个鼓应用程序。用户点击各个按钮,触发使用 AudioToolbox 中的 systemsound 播放短声音。我现在想添加一个 UIButton,上面写着“记录”,点击后,将记录所有正在播放的系统声音,然后当用户按下停止按钮时;然后程序应该能够播放声音。

我该怎么做?!程序的整个过程能够记录用户通过点击各个打击区域触发的短声?!

请告诉我

谢谢

帕万

4

1 回答 1

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]];
}

这可能容易出现操作系统的时间问题,但我会追求这样的东西进行第一次切割,看看它是否有效。

巴尼

于 2009-07-03T06:14:21.223 回答