Iphone 鼓声应用程序-拉格的声音。。。如何修复?

Iphone 鼓声应用程序-拉格的声音。。。如何修复?,iphone,ios,audio,Iphone,Ios,Audio,我有一个drum应用程序,它是基于AVAudioPlayer而不是普通的系统声音创建的,目的是为了有一点控制力 问题是,每当同时播放两个或多个声音时,它都会延迟并停止所有声音,因此你的鼓拍会变得震荡并随机停止 例如:boom-boom-chhhh-boom-ch----boom-bo----chhhh 如果你能从那个拟声词中分辨出来的话 这是声音代码,我有一个预加载的AVAudioPlayer数组,因此加载速度更快 - (void)triggerSound:(NSInteger)soundNum

我有一个drum应用程序,它是基于
AVAudioPlayer
而不是普通的系统声音创建的,目的是为了有一点控制力

问题是,每当同时播放两个或多个声音时,它都会延迟并停止所有声音,因此你的鼓拍会变得震荡并随机停止

例如:boom-boom-chhhh-boom-ch----boom-bo----chhhh

如果你能从那个拟声词中分辨出来的话

这是声音代码,我有一个预加载的
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;
    }
}
-(空)触发器声音:(NSInteger)声音编号{
NSInteger deltaNum=声音编号*缓冲区编号;
AVAudioPlayer*lowBuffer=[bufferBox objectAtIndex:deltaNum];
布尔值soundFired=FALSE;
//如果可能,找到一个未使用的缓冲区,否则从第一个缓冲区播放声音。
对于(int i=0;itempBuffer.currentTime){
lowBuffer=tempBuffer;
}
}
如果(!soundFired){
lowBuffer.currentTime=0;
[低缓冲播放];
soundFired=TRUE;
}
}
该方法在iAction按钮按下时调用。例:[Drumbject triggerSound:3]


感谢大家的帮助

我对一些游戏使用
OpenAL
API有了更好的体验。这是非常不同的,而且级别更低(你必须处理源和缓冲区),但它对我来说比AVAudioPlayer好得多。你可以尝试使用iOS游戏引擎来满足你的音频需求

例如:


实际上,您不必使用此引擎的图形部分。只需导入并使用框架的音频部分(它在OpenAL的基础上提供了一个简单的API)。

谢谢,我将对此进行研究!Cheersnote OpenAL不支持AAC或MP3开箱即用压缩。你必须手动解压并将它们流到你的OpenAL缓冲区中;我用cocosdenshion作为我的引擎,它工作得很好:)