在iOS中播放重叠声音

时间:2012-04-02 04:12:58

标签: iphone objective-c

当用户点击按钮时,我正在使用AVAudioPlayer播放一点点声音。声音持续约3秒,我希望如果用户多次按下按钮,则声音应该多次响起。如果用户在2秒内点击两次,则第二个声音应该与第一个镜头重叠。

我的问题是,镜头每3秒钟发出一次声音(如果用户快速点击),而不是每次按下按钮。

内部ViewDidLoad

NSString *path = [[NSBundle mainBundle] pathForResource:@"shot" ofType:@"caf"];
urlShotCaf = [NSURL fileURLWithPath:path];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:urlShotCaf error:nil] ;
[player prepareToPlay];

当一个人点击拍摄按钮时

- (IBAction)tap:(id)sender {
    clicks++;
    [player play];
}

我可以用AVAudioPlayer做到这一点吗?我应该使用其他框架吗?

3 个答案:

答案 0 :(得分:1)

如参考文献here中所述:

  

同时播放多个声音,每个音频播放器播放一个声音,并进行精确同步

我想你想要同时播放的每个声音都需要AVAudioPlayer。否则你可以使用像CocosDenshion这样的简单库,它非常简单,易于嵌入和强大(它驻留在OpenAL上)。

只做

[SimpleAudioEngine sharedEngine] playEffect:@"yoursound.wav"];

你已经完成了。

答案 1 :(得分:1)

请试试这个。它对我有用。

- (IBAction) tap:(id)sender {
    if ([player isPlaying]) {
        [player stop];
        [player setCurrentTime:0.0];
    }
    [player play];
}

答案 2 :(得分:0)

如果高级框架失败,那么您可以选择AUSampler - 一个AudioUnit示例播放器(通常用于播放采样乐器,鼓声等)。这应该具有非常快的响应时间并且支持多个活动音符。将样本的播放配置为一次性。按下按钮时,模拟事件记录。您还可以将不同的样本(录音)映射到不同的音符和速度范围。