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

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

最佳答案

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

您还需要某种方式来获得合成输出。您可以通过向 AU 图形添加通用输出,向其添加渲染回调,然后在该渲染回调中,获取传入的 AudioBufferList 并将其写入文件(例如使用 ExtAudioFileWrite() )来实现此目的。

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

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

关于ios - 在 iOS 上导出带有声音字体的 MIDI,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32831021/

10-13 03:25