是否可以枚举音频单元参数描述?

Posted

技术标签:

【中文标题】是否可以枚举音频单元参数描述?【英文标题】:is it possible to enumerate Audio Unit parameter descriptions? 【发布时间】:2011-07-03 20:46:17 【问题描述】:

有没有办法让音频单元主机逐步检查插件的参数并获得如下信息:

字符串形式的参数名称,例如“延迟时间” 参数范围(最小值、最大值) 参数单位(例如秒) 参数控制(例如滑块)

AFAICT 此信息在插件中可用,但我不知道如何从主机端查询它。

【问题讨论】:

【参考方案1】:

您首先需要#import CAAUParameter 和 AUParamInfo(可在 /Developer/Extras/CoreAudio/PublicUtility 中找到)。

编辑:这些文件现在可以在“Audio Tools For Xcode”包中找到。你可以去 Xcode > Open Developer Tool > More Developer Tools...

假设您有一个名为 theUnit 的 AudioUnit,以下代码将设置您遍历 theUnit 的参数:

bool includeExpert   = false;
bool includeReadOnly = false;

AUParamInfo info (theUnit, includeExpert, includeReadOnly); 

for(int i = 0; i < info.NumParams(); i++)

    if(NULL != info.GetParamInfo(i))
    
        // Do things with info here
    

例如,info.GetParamInfo(i))-&gt;ParamInfo() 会给你一个 AudioUnitParameterInfo 结构体,其定义如下:

typedef struct AudioUnitParameterInfo

    char                        name[52];
    CFStringRef                 unitName;
    UInt32                      clumpID;
    CFStringRef                 cfNameString;
    AudioUnitParameterUnit      unit;                       
    AudioUnitParameterValue     minValue;           
    AudioUnitParameterValue     maxValue;           
    AudioUnitParameterValue     defaultValue;       
    UInt32                      flags;              
 AudioUnitParameterInfo;

请注意,您需要先打开 AudioUnit(例如,通过在包含该单元的 Graph 上调用 AUGraphOpen())。

【讨论】:

以上是关于是否可以枚举音频单元参数描述?的主要内容,如果未能解决你的问题,请参考以下文章

直接调用音频单元而不是回调 iOS

当我需要自定义音频效果时,我是不是需要处理音频单元,或者我可以依赖音频队列服务?

实现音频延迟效果单元

如何保存和恢复作为音频单元主机的音频单元状态

如何使用robolectric对Android音频录制应用进行单元测试

有没有办法以编程方式获取 iOS 中音频单元的所有参数?