【发布时间】:2012-10-05 22:01:21
【问题描述】:
可以在 iOS 上使用 AudioUnits 创建加载和播放 soundfont(或 SF2)文件的采样器。这是一个非常棒的功能。问题是我没有看到任何用于检查声音字体的界面以查看:a)它包含多少个预设和 b)它包含的预设的名称。
可以通过首先使用AudioUnitSetProperty 和kAUSamplerProperty_LoadInstrument 将声音字体加载到采样器中,然后在采样器上调用AudioUnitGetProperty 和kAudioUnitProperty_ClassInfo 来获取当前预设名称。但是,这不是很有效,并且只会告诉您当前加载的预设的名称。它似乎也没有告诉您声音字体中包含多少预设。
如何在不使用 3rd 方代码的情况下完成这些事情(当然它是本机支持的)?
【问题讨论】:
-
为了回答我的问题,我找到的解决方法如下。我正在使用
kAudioUnitProperty_ClassInfo属性来获取当前预设的名称。然后遍历所有的预设,直到AudioUnitSetProperty返回错误,表明已经到达最后一个预设。然后我将所有预设名称放入一个 NSArray 并将这些数据保存到磁盘。然后我可以在下次需要使用相同的声音字体时简单地从文件中加载它。对我目前的用途来说足够好。