◎サウンドブロックへのMIDIメッセージ発行について

DreamCastのサウンドドライバには、MIDIのメッセージを直接処理する機能が
備わっています。
この機能はライブラリAPIからの呼び出しによって行うことが可能です。
この機能のことをダイレクトMIDIといいます。
ダイレクトMIDIを利用することで、サウンドドライバに内蔵のシーケンサを使用せず
独自にMIDIのシーケンス処理を行うといったことや、効果音などの再生を
MIDIメッセージによって行うこともできます(もっとも、そういった場合OneShotを
使ったほうがいいことが多いのですが)。

ダイレクトMIDIを利用する上での注意点としては、MIDIメッセージを発行する前に
必ず、
・Control Change #32(Bank Change)
・Program Change
をこの順番で発行する必要があります。
もし、ダイレクトMIDIを利用する前に、MIDIデータの再生などを行っていた場合には
そのMIDIのシーケンスデータにこの2つのMIDIメッセージは含まれています。

このサンプルプログラムの中で、上であげた2つのMIDIメッセージを
発行しているところは、
次の場所になります。

SoundInit関数中の、
  /* Send Initial Message */
  sdMidiOpenPort( &midi_handle );
  {
    /* Bank Change */
    sdMidiSetMes( midi_handle, &midi, SDD_MIDI_CTL_CHG, 32, 0 ); 
    sdMidiSendMes( midi_handle, &midi, 0 );
    /* Program Change */
    sdMidiSetMes( midi_handle, &midi, SDD_MIDI_PRG_CHG, 0 );
    sdMidiSendMes( midi_handle, &midi, 0 );
  }
  sdMidiClosePort( midi_handle );

MIDIに詳しくないプログラマの方は、この部分をそのまま利用してしまっても
構いません。
なお、Bank Changeに与えるバンク番号とProgram Changeに与えるプログラム番号は
サウンドデータ制作者に聞いてください。(上の例では両方とも0を与えています。)
