3

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

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

4

1 回答 1

2

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

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

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

您还可以考虑提交API 或增强请求,以便在 MIKMIDI 中更好地支持这一点。

于 2015-12-17T19:01:24.157 回答