gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:02:43 26 4
gpt4 key购买 nike

AUParamInfo() 似乎不存在于 iOS7 框架(CoreAudio、AudioUnit、AudioToolbox)中。我想知道获取一个单元的所有参数的方法是什么。也就是说,不知道它是什么类型或子类型的单元,因为如果不是,答案就是在音频单元参数引用中查找。

最佳答案

Greg 的回答是正确的,因为 kAudioUnitProperty_ParameterList 是查询最终获取单元所有参数的正确属性 ID。但是,获取所有参数的方法有点复杂:

  1. 使用 AudioUnitGetPropertyInfo 查看该属性是否可用,如果可用,取回其数据大小(整个信息的数据大小可能是一个集合,而不是任何类型的单个元素的数据大小请注意,属性(property)是)。
  2. 使用 AudioUnitGetProperty 正确获取属性。此外,此时,如果您返回的属性是一组元素而不是单个元素,则您必须为每个元素调用一次 AudioUnitGetProperty。具体来说,您将调用它 dataSize/sizeof(TypeToHoldSingleInstanceOfYourProperty) 次。

    //  Get number of parameters in this unit (size in bytes really):
    UInt32 parameterListSize = 0;
    AudioUnitGetPropertyInfo(_audioUnit, kAudioUnitProperty_ParameterList, kAudioUnitScope_Global, 0, &parameterListSize, NULL);

    // Get ids for the parameters:
    AudioUnitParameterID *parameterIDs = malloc(parameterListSize);
    AudioUnitGetProperty(_audioUnit, kAudioUnitProperty_ParameterList, kAudioUnitScope_Global, 0, parameterIDs, &parameterListSize);

    AudioUnitParameterInfo parameterInfo_t;
    UInt32 parameterInfoSize = sizeof(AudioUnitParameterInfo);
    UInt32 parametersCount = parameterListSize / sizeof(AudioUnitParameterID);
    for(UInt32 pIndex = 0; pIndex < parametersCount; pIndex++){
    AudioUnitGetProperty(_audioUnit, kAudioUnitProperty_ParameterInfo, kAudioUnitScope_Global, parameterIDs[pIndex], &parameterInfo_t, &parameterInfoSize);
    // do whatever you want with each parameter...
    }

关于ios - 有没有办法以编程方式获取 iOS 中音频单元的所有参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19190887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com