在AudioUnit子类型kAudioUnitSubType上设置速率

我试图通过子类型kAudioUnitSubType_NewTimePitch获取/设置kAudioUnitSubType_NewTimePitch

音频单元通过AUNode添加到AUGraph ,该AUNode具有以下组件说明:

acd->componentType = kAudioUnitType_Effect;
acd->componentSubType = kAudioUnitSubType_NewTimePitch;
acd->componentManufacturer = kAudioUnitManufacturer_Apple;

根据AudioUnitParameters.h ,获取/设置速率应该像获取/设置音频单元上的速率参数一样简单。

// rate control.
// Global, rate, 1/32 -> 32.0, 1.0
kNewTimePitchParam_Rate                         = 0,

然而,当该值设置似乎没有问题(不返回错误)所获得的价值产生了OSStatus值为-10878 (kAudioUnitErr_InvalidParameter)

以下是我如何设置值:

- (void)setTempo:(float)value {
    OSStatus err = noErr;
    err = AudioUnitSetParameter(tempoUnit, kNewTimePitchParam_Rate, kAudioUnitScope_Global, 0, (Float32)value, 0);
    if (err != noErr) {
        NSLog(@"Could not set tempo unit rate: %d", err);
    } // no error
}

以及我如何(尝试)得到它:

- (float)tempo {
    OSStatus err = noErr;
    Float32 value = 1.0;
    err = AudioUnitGetParameter(tempoUnit, kNewTimePitchParam_Rate, kAudioUnitScope_Global, 0, &value);
    if (err != noErr) {  // -10878
        NSLog(@"Could not get tempo unit rate: %d", err);
    }
    return value;
}

节点的输入连接到混合器节点,输出连接到RemoteIO单元。

有任何想法吗 ?


事实证明,音频单元的类型是错误的。

我更改为类型的kAudioUnitType_FormatConverter并保持相同的子类型。

现在都可以按照预期的方式获取/设置节奏。

我还不清楚为什么我没有得到任何错误,既没有设置音频设备,也没有设置速率的值。

链接地址: http://www.djcxy.com/p/62315.html

上一篇: Setting rate on AudioUnit subtype kAudioUnitSubType

下一篇: Can't connect converter Audio Unit to Reverb Effect