我有一个适用于 Android 的吉他图表应用程序,我正在移植到 iOS。Android有一个嵌入式midi合成器(sonivox),所以我可以生成midi文件并让Android处理播放。
有没有办法在 iOS 上做到这一点?或者是否有适用于 iOS 的非常轻量级的可嵌入合成器?
我有一个适用于 Android 的吉他图表应用程序,我正在移植到 iOS。Android有一个嵌入式midi合成器(sonivox),所以我可以生成midi文件并让Android处理播放。
有没有办法在 iOS 上做到这一点?或者是否有适用于 iOS 的非常轻量级的可嵌入合成器?
从 iOS 5 开始,现在有了 AUSampler 音频单元,您可以为其加载声音库(苹果预设和声音字体),然后通过 MIDI 消息控制采样器/合成器。
请参阅此示例应用程序: https ://developer.apple.com/library/ios/#samplecode/LoadPresetDemo/Listings/ReadMe_txt.html
效果很好!
更新:我的答案已经过时了。 @lukebuehler 的回答非常合适。
如果您不介意非开源解决方案,请尝试FMOD。作为游戏的商业音频引擎,fmod 配备了一个简单的 MIDI 合成器。我试过免费评估版。它可以在我的 iPhone 3G 上正确播放 GM MIDI 文件。
如果您想要的不仅仅是一个 SMF 文件播放器,您还想要一个功能齐全的 GS/GM 软合成器,它可以实时响应单个 MIDI 事件。你可以试试CrimsonTech 的 midisynth。它的许可费是公平的。Crimsontech 在应用商店中提供了多个演示应用。此外,它还免费提供评估SDK。在您真正要发布您的应用程序之前,您无需为许可证支付一分钱。
我不认为 iOS 4.2 中的 MIDI 支持允许从手机本身播放 MIDI 数据。它仅用于向其他 MIDI 设备发送和接收 MIDI 命令。
从最近的 iOS 4.2 文档来看,您似乎可以使用 MIDI 支持将 MIDI 命令发送到其他设备进行播放。您还可以从其他设备接收命令并对这些命令进行更改,或将其保存在文件中。但是我找不到任何支持直接从手机播放 MIDI 文件。如果我错了,请有人纠正我(我希望我错了!!)。
iOS 4.2 支持 MIDI。如果它与 OS X 提供的相同,那么它也将包含一个基本合成器。看看这个。