在OS X中,我试图找到一个示例,说明如何发现最终用户系统上安装的所有音频单元,并获取该信息以供显示和使用。
我知道Audio Component参与了这项任务,但我完全不知道如何去做。我遇到的所有例子都是基于找到一个已知的'带有AudioComponentFindNext的Apple AU,我找不到发现其他任何内容的示例。
有人能指点我一个例子吗?
由于
答案 0 :(得分:0)
您可以使用AudioComponentDescription
设置0
结构作为类型,子类型和制造商的通配符。将其传递给AudioComponentFindNext
:
AudioComponentDescription acd = { 0 };
AudioComponent comp = nullptr;
while((comp = AudioComponentFindNext(comp, &acd)) {
// Found an AU
}
以下是标题中的一些相关文档:
@function AudioComponentFindNext
@abstract Finds an audio component.
@discussion This function is used to find an audio component that is the closest match
to the provided values.
@param inComponent
If NULL, then the search starts from the beginning until an audio
component is found that matches the description provided by inDesc.
If non-NULL, then the search starts (continues) from the previously
found audio component specified by inComponent, and will return the next
found audio component.
@param inDesc
The type, subtype and manufacturer fields are used to specify the audio
component to search for. A value of 0 (zero) for any of these fields is
a wildcard, so the first match found is returned.
@result An audio component that matches the search parameters, or NULL if none found.
答案 1 :(得分:0)
只需使用提供的 AVAudioUnitComponentManager 组件函数即可获取音频单元。
它将返回与您传递的 AudioComponentDescription
匹配的音频单元数组。
命令单击 AudioComponentDescription
和 kAudioUnitType_MusicDevice
以查看您可以使用的各种值。
// Exemple to get instruments audio units
var match = AudioComponentDescription()
match.componentType = kAudioUnitType_MusicDevice
let audioUnitComponents = AVAudioUnitComponentManager.shared().components(matching: match)