2015-09-28 27 views

回答

2

MIKMIDI不包含自己实现大部分功能的能力。这就是说,这是可能的。实质上,您需要创建自己的Core Audio图形,包括MIDI合成器单元。然后,在乐器单元的渲染回调中,根据使用AudioTimeStamp计算的时间戳和传递到渲染回调的帧数,将事件从MIKMIDISequence中拉出。使用MusicDeviceMIDIEvent()将这些输出到乐器单元。

您还需要一些方法来获得合成输出。您可以通过向AU图添加通用输出,向其添加呈现回调,然后在该呈现回调中,将传入的AudioBufferList并将其写入文件(例如使用ExtAudioFileWrite())来完成此操作。

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

您可能还会考虑filing a request API或增强功能,以便在MIKMIDI中更好地支持此功能。