如何将AudioUnit的名称和制造商作为字符串获取

时间:2015-01-17 19:39:33

标签: macos core-audio audiounit audiotoolbox

我目前正在编写一些代码来构建一个将承载AudioUnit乐器的应用程序原型。我正在使用AudioToolbox,因为它看起来是最完整的API(AVFoundation看起来不错,但对于我的应用程序很重要的MusicSequences似乎有限)。该应用程序仅在OS X上运行。

我将AudioUnit设置在图表中,我可以听到它的输出。我现在要做的是提供系统上安装的AudioUnit仪器列表,以便我可以换掉仪器(目前我只使用AudioComponentFindNext返回的第一个)。 AVFoundation中的AVAudioUnit提供了name和manufacturerName属性,但我可以看到使用较低级别类型访问此信息的任何方式。任何能够回答这个问题的人都会知道文档非常基础(我发现标题中的内容最有用)。我尝试过调试AudioUnit的参数和属性,但这似乎与设备参数有关,而不是与单元本身的元数据有关。

1 个答案:

答案 0 :(得分:0)

通常情况下,我在发布后立即找到答案。您可以使用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
...