2015-09-28 31 views

回答

2

MIKMIDI不包含自己實現大部分功能的能力。這就是說,這是可能的。實質上,您需要創建自己的Core Audio圖形,包括MIDI合成器單元。然後,在樂器單元的渲染回調中,根據使用AudioTimeStamp計算的時間戳和傳遞到渲染回調的幀數,將事件從MIKMIDISequence中拉出。使用MusicDeviceMIDIEvent()將這些輸出到樂器單元。

您還需要一些方法來獲得合成輸出。您可以通過向AU圖添加通用輸出,向其添加呈現回調,然後在該呈現回調中,將傳入的AudioBufferList並將其寫入文件(例如使用ExtAudioFileWrite())來完成此操作。

我的確有一個小項目,它使用了MIKMIDI,但它包含了我不能公開發布的代碼。我會看看我是否可以在某些時候將其清理並作爲示例代碼公開發布。 編輯:我在這裏提到的項目已經清理完畢,現在作爲MIKMIDI的示例項目提供。見here

您可能還會考慮filing a request API或增強功能,以便在MIKMIDI中更好地支持此功能。