AUAudioUnit 和 AudioUnitGetProperty、AudioUnitSetProperty

Jan*_*bny 6 core-audio avfoundation audiounit

随着 Audio Unit v3 的到来,我们子类的主要类是新的 AUAudioUnit 目标 C 类。

AUAudioUnit 具有 AUParameter 实现,并且可以通过 AUAudioUnit.parameterTree 属性轻松使用 AUParameter。

我无法使用音频单元属性,因为 AUAudioUnit 不公开其作为参数所需的 AudioUnit 属性

extern OSStatus
AudioUnitGetProperty(           AudioUnit               inUnit,
                                AudioUnitPropertyID     inID,
                                AudioUnitScope          inScope,
                                AudioUnitElement        inElement,
                                void *                  outData,
                                UInt32 *                ioDataSize) 
Run Code Online (Sandbox Code Playgroud)

目前,AUAudioUnit 上没有 AudioUnit 类属性或检查。我不确定如何在 AudioUnit v3 框架中使用 AudioUnit 属性。

有人知道如何在新 API v3 中使用 AudioUnit 属性吗?

谢谢。

小智 -2

Apple 的 AudioUnitV3Example 中有一个如何执行此操作的示例。这是其中的代码:

// Create a parameter object for the cutoff frequency.
    AUParameter *cutoffParam = [AUParameterTree createParameterWithIdentifier:@"cutoff" name:@"Cutoff"
            address:FilterParamCutoff
            min:12.0 max:20000.0 unit:kAudioUnitParameterUnit_Hertz unitName:nil
            flags: kAudioUnitParameterFlag_IsReadable |
                   kAudioUnitParameterFlag_IsWritable |
                   kAudioUnitParameterFlag_CanRamp
            valueStrings:nil dependentParameters:nil];

  // Initialize default parameter values.
    cutoffParam.value = 20000.0;
    resonanceParam.value = 0.0;
    _kernel.setParameter(FilterParamCutoff, cutoffParam.value);
    _kernel.setParameter(FilterParamResonance, resonanceParam.value);

  // Create the parameter tree.
    _parameterTree = [AUParameterTree createTreeWithChildren:@[cutoffParam, resonanceParam]];

Run Code Online (Sandbox Code Playgroud)

(我省略了resonanceParam的代码)

这里还有一个很棒的教程涵盖了它:https://audiokitpro.com/auv3-midi-tutorial-part2/