【问题标题】:How do you get the name and manufacturer of an AudioUnit as a string如何将 AudioUnit 的名称和制造商作为字符串获取
【发布时间】:2015-01-17 19:39:33
【问题描述】:

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

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

【问题讨论】:

  • 很遗憾,10 多年后 Core Audio 文档仍然很糟糕。

标签: macos core-audio audiounit audiotoolbox


【解决方案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
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2021-12-04
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多