在 iOS 上检查声音字体

Posted

技术标签:

【中文标题】在 iOS 上检查声音字体【英文标题】:Inspecting a soundfont on iOS 【发布时间】:2012-10-05 22:01:21 【问题描述】:

可以在 ios 上使用 AudioUnits 创建加载和播放 soundfont(或 SF2)文件的采样器。这是一个非常棒的功能。问题是我没有看到任何用于检查声音字体的界面以查看:a)它包含多少个预设和 b)它包含的预设的名称。

可以通过首先使用AudioUnitSetPropertykAUSamplerProperty_LoadInstrument 将声音字体加载到采样器中,然后在采样器上调用AudioUnitGetPropertykAudioUnitProperty_ClassInfo 来获取当前预设名称。但是,这不是很有效,并且只会告诉您当前加载的预设的名称。它似乎也没有告诉您声音字体中包含多少预设。

如何在不使用 3rd 方代码的情况下完成这些事情(当然它是本机支持的)?

【问题讨论】:

为了回答我的问题,我找到的解决方法如下。我正在使用kAudioUnitProperty_ClassInfo 属性来获取当前预设的名称。然后遍历所有的预设,直到AudioUnitSetProperty返回错误,表明已经到达最后一个预设。然后我将所有预设名称放入一个 NSArray 并将这些数据保存到磁盘。然后我可以在下次需要使用相同的声音字体时简单地从文件中加载它。对我目前的用途来说足够好。 【参考方案1】:

另一个选项是用于 OSX 的声音字体编辑器,称为 polyphone

【讨论】:

【参考方案2】:

这是一个非常古老的问题,但我确实有另一个解决方案:我的SoundFonts 应用。它可以在 AppStore 上以少量费用获得,或者您可以使用源代码来构建您想要的东西。

repo 包含一个SF2 parser in C++,我根据我在网上找到的一些代码重新编写了它。该 repo 还包含一个catalog.py Python 脚本,该脚本从 SF2 文件生成列表。它使用sf2utils Python 包。

【讨论】:

以上是关于在 iOS 上检查声音字体的主要内容,如果未能解决你的问题,请参考以下文章

如何检查字体是不是在 iOS 版本中可用?

在 iOS 上导出带有声音字体的 midi

声音文件未在本地通知 iOS7 上播放

HTML 音频在 iOS 或 iOS 模拟器上静音

检查应用程序是不是发出声音

我想检查android中声音的响度