AUAudioUnit & AudioUnitGetProperty、AudioUnitSetProperty
Posted
技术标签:
【中文标题】AUAudioUnit & AudioUnitGetProperty、AudioUnitSetProperty【英文标题】:AUAudioUnit & AudioUnitGetProperty, AudioUnitSetProperty 【发布时间】:2019-03-16 18:56:15 【问题描述】:随着Audio Unit v3的到来,我们子类的主类是新的AUAudioUnit Objective C类。
AUAudioUnit 具有 AUParameter 实现,并且可以通过 AUAudioUnit.parameterTree 属性轻松使用 AUParameter。
我无法使用音频单元属性,因为 AUAudioUnit 不公开其作为参数所需的音频单元属性
extern OSStatus
AudioUnitGetProperty( AudioUnit inUnit,
AudioUnitPropertyID inID,
AudioUnitScope inScope,
AudioUnitElement inElement,
void * outData,
UInt32 * ioDataSize)
目前在 AUAudioUnit 上没有 AudioUnit 类属性或检查。我不确定如何在 AudioUnit v3 框架中使用 AudioUnit 属性。
有人知道如何在新 API v3 中使用 AudioUnit 属性吗?
谢谢。
【问题讨论】:
【参考方案1】:在 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]];
(我省略了共振参数的代码)
这里还有一个很好的教程:https://audiokitpro.com/auv3-midi-tutorial-part2/
【讨论】:
这个问题是关于属性,而不是参数。以上是关于AUAudioUnit & AudioUnitGetProperty、AudioUnitSetProperty的主要内容,如果未能解决你的问题,请参考以下文章
AUAudioUnit无法播放背景错误代码561145187中的音频
在自定义 AUAudioUnit 中查找爆裂声和爆裂声的原因
iOS 上的低延迟音频输出问题(又名如何击败 AUAudioUnit sampleRate、maximumFramesToRender 和 ioBufferDuration 提交)