Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 多个AVAUDIOPLAYER-无声音_Ios_Objective C_Avaudioplayer - Fatal编程技术网

Ios 多个AVAUDIOPLAYER-无声音

Ios 多个AVAUDIOPLAYER-无声音,ios,objective-c,avaudioplayer,Ios,Objective C,Avaudioplayer,我是一个相当新的Xcode和ObjC,在通过多个AvaudioPlayer播放多个音频文件时遇到问题 理论上,我的应用程序相当简单,它需要一个汽车转速和负载值,并根据这些值播放声音 所以,我有13个声音样本的转速值范围。我的代码计算出它们应该以什么音量和速率播放,以便在应用程序中复制正确的引擎声音-注意,它们都在同时播放,是音量和速率控制着它们的声音 所以,我像这样计算出了容量和速率(这是一个片段): 当它播放一个文件时,这可以正常工作,但只要我更改RPM值,使它应该播放另一个文件,所有声音都会

我是一个相当新的Xcode和ObjC,在通过多个AvaudioPlayer播放多个音频文件时遇到问题

理论上,我的应用程序相当简单,它需要一个汽车转速和负载值,并根据这些值播放声音

所以,我有13个声音样本的转速值范围。我的代码计算出它们应该以什么音量和速率播放,以便在应用程序中复制正确的引擎声音-注意,它们都在同时播放,是音量和速率控制着它们的声音

所以,我像这样计算出了容量和速率(这是一个片段):

当它播放一个文件时,这可以正常工作,但只要我更改RPM值,使它应该播放另一个文件,所有声音都会停止,无论RPM值是多少

我发现阻止这种情况的唯一方法是在播放器上调用setCurrentTime,但这会导致“抖动”播放

我想这可能是在玩弧线游戏,所以我为所有玩家创建了属性


我是不是错过了一些基本的东西?还是我没有采取正确的方法?

您在av2Volume中获得了什么价值?尽管
av9Pitch-1.0f
似乎是一个奇怪的音量,但检查该音量时不能真正判断出这里出了什么问题。对于这种情况,我本以为OpenAL会是一个不错的选择,但我不知道AVAudioPlayer为什么不能工作。如果我在av2Volume中设置断点,我可以看到它得到了一个有效值(例如0.899884)。谢谢OpenAL的提示,我会仔细研究一下。好吧,我想我已经解决了-将音量设置为0.0f必须以某种方式停止音频-将音量设置为0.01f似乎很好!奇怪的
if ((rpm > 4989) && (rpm < 5339)) {

    av1Pitch  = 0.0f;
    av2Pitch  = 0.0f;
    av3Pitch  = 0.0f;
    av4Pitch  = 0.0f;
    av5Pitch  = 0.0f;
    av6Pitch  = 0.0f;
    av7Pitch  = 0.0f;
    av8Pitch  = 0.0f;
    av9Pitch = rpm / 4989.0f;
    av10Pitch = rpm / 5338.0f;
    av11Pitch  = 0.0f;
    av12Pitch  = 0.0f;
    av13Pitch  = 0.0f;

    av1Volume  = 0.0f;
    av2Volume  = 0.0f;
    av3Volume  = 0.0f;
    av4Volume  = 0.0f;
    av5Volume  = 0.0f;
    av6Volume  = 0.0f;
    av7Volume  = 0.0f;
    av8Volume  = 0.0f;
    av9Volume = av9Pitch - 1.0f;
    av10Volume = 1.0f - av9Volume;
    av11Volume  = 0.0f;
    av12Volume  = 0.0f;
    av13Volume  = 0.0f;
}
if (audioPlayer2000.isPlaying) {
    //already playing, ready for volume / pitch adjustments

    audioPlayer2000.volume = av2Volume;
    audioPlayer2000.rate = av2Pitch;   
}
else{
    //nothing playing - play the file
    NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/1052.wav", [[NSBundle mainBundle] resourcePath]]];
    NSError *error;
    //NSData *songFile2 = [[NSData alloc] initWithContentsOfURL:url options:NSDataReadingMappedIfSafe error:&error];
    audioPlayer2000 = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    //audioPlayer2000 = [[AVAudioPlayer alloc] initWithData:songFile2 error:&error];
    audioPlayer2000.numberOfLoops = -1;
    audioPlayer2000.enableRate = YES;
    audioPlayer2000.rate = av2Pitch;
    audioPlayer2000.volume = av2Volume;

    if (audioPlayer2000 == nil) {
        NSLog([error description]);
    }
    else{
        [audioPlayer2000 play];
    }   
}