Можно ли перечислить описания параметров аудиоустройства? - PullRequest
4 голосов
/ 04 июля 2011

Есть ли способ для хоста аудиоустройства пройти через параметры плагина и получить такую ​​информацию как:

  • имя параметра в виде строки, например, «Время задержки»
  • параметрдиапазон (минимум, максимум)
  • единицы измерения параметра (например, секунды)
  • управление параметрами (например, ползунок)

AFAICT эта информация доступна в плагине, но яне могу понять, как запросить его со стороны хоста.

1 Ответ

8 голосов
/ 08 июля 2011

Сначала вам потребуется #import CAAUParameter и AUParamInfo (, которые можно найти в /Developer/Extras/CoreAudio/PublicUtility).

EDIT : Эти файлы теперь находятся в пакете «Audio Tools For Xcode».Вы можете получить его, перейдя в Xcode> Открыть инструмент разработчика> Другие инструменты разработчика ...

Предполагая, что у вас есть AudioUnit с именем theUnit Следующий код настроит вас для перебора параметров 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))->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 (например,., вызывая AUGraphOpen () на Графе, который содержит единицу).

...