ゲームにおけるMIDI再生についてあれこれ

SMFからMIDIを再生する方法についてのメモ書きです。
MIDIの再生方法には以下のようにいくつか方法があります。

 ・MCIを使う
 ・MIDIストリームを使う
 ・自前でMIDIイベントのメッセージをデバイス側に送る

最初の方法は、高レベルなマルチメディアAPIを用いる方法でです。
簡単にMIDI再生ができますが、動作が重くゲームに必須なループ再生ができないので、
ゲームに使用するのにはあまり向いていません。

次の方法は、MIDI再生で必要となるMIDIイベントを指定の時間で送る処理をシステム側で自動的に行ってくれるものです。
MCIよりも小回りが利いた処理ができ、動作が軽くループ再生も実現できます。
ゲームに必要なBGM再生用に用いることができます。
しかし、APIの扱いが面倒で過去には不具合も存在していたらしいです。
再生中にエフェクトをかけられないなどやや柔軟性にも欠けます。

最後の方法は、MIDIデバイス側にMIDIメッセージを1つずつ送ってMIDI再生を実現する方法です。
メッセージを送るタイミングは、全て自前で管理する必要があります。
最も低レベルな方法で、柔軟性が高い方法です。