Core Audio(iOS 5.1)Reverb2属性不存在,错误代码-10877

Gob*_*bot 6 core-audio ios

我正在玩Apple的示例项目"LoadPresetDemo".我已将混响音频单元添加AudioUnit kAudioUnitSubType_Reverb2到图表中,这是唯一可用的iOS混响.在CoreAudio头文件"AudioUnitParameters.h"中,它声明Reverb2应该响应这些参数:

enum {
    // Global, CrossFade, 0->100, 100
    kReverb2Param_DryWetMix = 0,
    // Global, Decibels, -20->20, 0
    kReverb2Param_Gain = 1,
    // Global, Secs, 0.0001->1.0, 0.008
    kReverb2Param_MinDelayTime = 2,
    // Global, Secs, 0.0001->1.0, 0.050
    kReverb2Param_MaxDelayTime = 3,
    // Global, Secs, 0.001->20.0, 1.0
    kReverb2Param_DecayTimeAt0Hz = 4,
    // Global, Secs, 0.001->20.0, 0.5
    kReverb2Param_DecayTimeAtNyquist = 5,
    // Global, Integer, 1->1000
    kReverb2Param_RandomizeReflections = 6,
};
Run Code Online (Sandbox Code Playgroud)

在AUGraph初始化并启动后,所有内容都会编译,我听到了声音.

接下来,我改变了kReverb2Param_DryWetMix参数(改为完全湿混合):

AudioUnitSetParameter(_reverbUnit, kAudioUnitScope_Global, 0, kReverb2Param_DryWetMix, 100.0f, 0);
Run Code Online (Sandbox Code Playgroud)

一切都很好,我听到完全湿混合混响的声音.

现在听到的是我遇到问题的地方.当试图改变除kReverb2Param_DryWetMix我得到错误代码之外的任何参数-10877.似乎头文件中列出的这些其他参数实际上并不存在.

例如,打电话

AudioUnitSetParameter(_reverbUnit, kAudioUnitScope_Global, 0, kReverb2Param_DecayTimeAtNyquist, 20.0f, 0)
Run Code Online (Sandbox Code Playgroud)

抛出-10877错误.

这是一个错误吗?我是否省略了任何音频框架?我没有导入特定的音频标题吗?

目前包含的音频框架是AVFoundation和AudioToolbox.目前的音频输入是

#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>
#import <CoreAudio/CoreAudioTypes.h>
Run Code Online (Sandbox Code Playgroud)

我没有解决方案,谷歌搜索谷歌.我知道当Google路由失败时我遇到了问题.任何帮助将不胜感激.

注意:我用模拟器和iPhone 4S设备测试过,同样的问题.

更新:我试过了

AudioUnitGetParameter(_reverbUnit, kReverb2Param_DecayTimeAtNyquist, kAudioUnitScope_Global, 0, &value)
Run Code Online (Sandbox Code Playgroud)

它返回一个值0.500000,表示该属性确实存在.那么我在设置值时做错了什么?

Gob*_*bot 4

哎哟!我意识到我AudioUnitSetParameterAudioUnitSetProperty,包括它们的参数感到困惑。人,微妙却邪恶。