Platform SDK: DirectX

MIDI メッセージ

ここでは、スタンダード MIDI メッセージの概要と、一般的には MIDI ファイルからストリームに渡されるこれらのメッセージを、DirectMusic で処理する方法について説明する。ほとんどのアプリケーションは、MIDI メッセージを直接処理しない。再生の詳細はすべて、ローダーとパフォーマンスで管理される。

MIDI 入力は、パフォーマンスによってツールにルーティングされる前に、パフォーマンス メッセージ形式に変換される。出力ツールは、データをシンセサイザに渡す前に、スタンダード MIDI メッセージ形式に戻す。

 :  MIDI メッセージが、ファイルに記述されている順序で処理されるという保証はない。DirectMusic メッセージはタイム スタンプの順に配信される。タイム スタンプが同一の MIDI メッセージが 2 つある場合は、予想と異なる順序で配信される場合がある。MIDI コンテンツをオーサリングするときに、イベントを発生させる順序が決まっている場合は、これらのイベントに同じタイム スタンプを与えないように注意する。たとえば、プログラム チェンジに依存する音符がある場合は、これらの音符とプログラム チェンジを同時に配置しない。

MIDI メッセージは、1 バイトのステータス バイトと、その後に続く 1 バイトか 2 バイトのデータ バイトによって構成される。システム エクスクルーシブ MIDI メッセージは可変長である。ステータス バイトはメッセージのタイプを示し、一部の状況では、そのメッセージを受け取るチャンネルを示す。ファイル中に同じ種類のイベントが続けて現れる場合は、ステータス バイトを省略できる。これは、動作ステータスと呼ばれる。上位ビットが常に消去されているので、データ バイトを認識できる。ステータス バイトの上位ビットは、常に設定されている。

MIDI イベントがファイルからストリームに入れられるタイミングは、各メッセージの前にある数字で制御される。この値は、このイベントと最後のイベントの間隔を、ティック数で表している。ティックの実際の継続時間は、ファイル ヘッダーの時間の形式によって決定される。

MIDI メッセージは、次の 2 つの主要なカテゴリに分類できる。