iphone - 打鼓应用程序 - 延迟声音......如何修复?

标签 iphone ios audio

我有一个基于 AVAudioPlayer 而不是常见的系统声音创建的鼓应用程序,以便进行一些控制。

问题是,每当同时播放两个或多个声音时,它会滞后并停止所有声音,因此您的鼓点会变得断断续续并随机停止。

例如:boom boom chhhhh boom boom ch--- boom bo---- chhhhh

如果你能从那个象声词中分辨出来。

这是声音代码,我有一组预加载的 AVAudioPlayer 以便它加载更快。

- (void)triggerSound:(NSInteger)soundNumber {
    NSInteger deltaNum = soundNumber*numberOfBuffers;
    AVAudioPlayer *lowBuffer = [bufferBox objectAtIndex:deltaNum];
    Boolean soundFired = FALSE;
    // Find an unused buffer if possible, otherwise play sound from first buffer.
    for (int i=0; i<numberOfBuffers; i++) {
        NSLog(@"Buffer loop: %d", i);
        NSLog(@"Buffer to load: %d", deltaNum);
        AVAudioPlayer *tempBuffer = [bufferBox objectAtIndex:deltaNum+i];
        if (!tempBuffer.playing) {
            tempBuffer.currentTime = 0;
            [tempBuffer play];
            soundFired = TRUE;
            break;
        } else if (lowBuffer.currentTime>tempBuffer.currentTime) {
            lowBuffer = tempBuffer;
        }
    }
    if (!soundFired) {
        lowBuffer.currentTime = 0;
        [lowBuffer play];
        soundFired = TRUE;
    }
}

在按下 IBAction 按钮时调用该方法。例如:[drumObject triggerSound:3].

感谢所有帮助!

最佳答案

对于某些游戏,我对 OpenAL API 有更好的体验。它非常不同并且级别更低(您必须处理源和缓冲区)但它对我来说比 AVAudioPlayer 好得多。

关于iphone - 打鼓应用程序 - 延迟声音......如何修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3697442/

相关文章:

iphone - iOS facebook 整合方法

ios - 如何访问 UITableView 以重新加载数据?

ios - 卡住 : Analog Clock in Swift iOS

javascript - 将 <audio> currentTime 转换为准确的时间显示

iphone - 上传文件

javascript - 将 'Core Data' 与 Phonegap 一起使用?

java - 导出时 Java Sound 不支持 IOException markreset

javascript - GSM 扩展无法在 Web 浏览器上播放

iphone - 在不同的 iOS SDK 下编译一个 iphone 应用程序

ios - 当 Parse 需要更新 UI 并在 viewDidLoad 中调用时,如何处理 Parse 调用主线程?