Как получить имя и производителя AudioUnit в виде строки

В настоящее время я пишу код для создания прототипа приложения, в котором будут размещаться инструменты AudioUnit. Я использую AudioToolbox для этого, так как он кажется наиболее полным доступным API (AVFoundation выглядит хорошо, но кажется ограниченным с точки зрения музыкальных последовательностей, которые важны для моего приложения). Приложение будет работать только на OS X.

Мой AudioUnit настроен на графике, и я слышу его вывод. Что я хочу сделать сейчас, так это предоставить список инструментов AudioUnit, установленных в системе, чтобы я мог поменять инструмент (в настоящее время я просто использую первый, возвращенный AudioComponentFindNext). AVAudioUnit в AVFoundation предоставляет свойства имени и производителя, но я вижу любой способ доступа к этой информации с типами более низкого уровня. Поскольку любой, кто может ответить на этот вопрос, знает, что документация довольно проста (я нашел материал в заголовках наиболее полезным). Я пытался проверить параметры и свойства AudioUnit, но, похоже, это относится к параметрам устройства, а не к метаданным о самом устройстве.


person Andrew    schedule 17.01.2015    source источник
comment
Печально, что спустя 10 с лишним лет документация Core Audio по-прежнему плоха.   -  person sbooth    schedule 18.01.2015


Ответы (1)


Как это часто бывает, я нашел ответ сразу после публикации этого. Вы можете использовать AudioComponentCopyName, чтобы получить имя компонента и имя производителя в строке, разделенной двоеточием.

 CFStringRef compName;
 AudioComponentCopyName(currentComponent, &compName);
 NSLog(@"%@", compName);
 CFRelease(compName);

Это обеспечит такой вывод (конечно, в зависимости от того, что вы установили):

...
2015-01-17 19:57:19.331 AUTest[3774:1494743] Apple: DLSMusicDevice
2015-01-17 19:57:19.331 AUTest[3774:1494743] Apple: AUMIDISynth
2015-01-17 19:57:19.331 AUTest[3774:1494743] Apple: AUSampler
2015-01-17 19:57:19.333 AUTest[3774:1494743] Arturia: Analog Lab
...
person Andrew    schedule 17.01.2015