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

Posted

技术标签:

【中文标题】在 iOS 上导出带有声音字体的 midi【英文标题】:export midi with sound fonts on iOS 【发布时间】:2015-09-28 20:13:47 【问题描述】:

是否可以将分配有声音字体的 midi 序列导出为 .wav 文件?如果是这样,任何人都可以让我朝着正确的方向前进吗?

我目前正在使用MIKMIDI,到目前为止我还没有遇到任何这样做的示例。

【问题讨论】:

【参考方案1】:

MIKMIDI 不包括在不自己实现大部分功能的情况下执行此操作的功能。也就是说,这是可能的。本质上,您需要创建自己的 Core Audio 图表,包括一个 MIDI 合成器单元。然后,在仪器单元的渲染回调中,根据使用AudioTimeStamp 计算的时间戳和传递到渲染回调的帧数,从 MIKMIDISequence 中提取事件。您可以使用MusicDeviceMIDIEvent() 将这些播放到乐器单元。

您还需要一些方法来获得合成输出。您可以通过向 AU 图形添加通用输出、向其添加渲染回调,然后在该渲染回调中,获取传入的 AudioBufferList 并将其写入文件(例如,使用 ExtAudioFileWrite())来做到这一点。

我确实有一个使用 MIKMIDI 的小项目,但它包含我无法公开发布的代码。我会看看我是否可以清理它,并在某个时候将其作为示例代码公开发布。 编辑:我在这里提到的项目已经清理,现在作为 MIKMIDI 的示例项目包含在内。见here。

您还可以考虑使用filing a request 提供 API 或增强功能,以便在 MIKMIDI 中更好地支持这一点。

【讨论】:

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

Android 上的声音字体

在 IOS 上使用 AudioKit 将声音文件作为 MIDI 音符发送

如何使用 Timidity++ 指定特定的声音字体 sf2 文件来创建声音文件?

在 iOS 上检查声音字体

PyGame 更改预设声音字体

如何使用流体合成器从 C# 中的声音字体生成声音