MIDI Dump Playerで見る MIDIファイルの美しい世界

実データを使って、MIDI dump listの見かたをご紹介します。ファイルはSMF1 formatのものです。 画面表示は、デルタタイムに下線を引く設定にしてあります。

ヘッダ

4D 54 68 64 "MThd" MIDIファイルですよ、の印 00 00 00 06 ヘッダが後 0x06byte 続く 00 01 format は SMF1 00 25 トラック数は 0x25 01 E0 タイムベース(四分音符の長さをいくつで表現するか)は 480

トラック 0(コンダクタートラック)

SMF1ファイルにおいては、トラック0は特別な意味を持ちます。   通常、トラック0にはMetaイベントでテンポや曲名の情報を書き、MIDIイベントは書きません。 チャンク 4D 54 72 6B "MTrk" トラックデータですよ、の印 00 00 00 5D データが後 0x5D byte 続く データ 00 デルタタイム(以降省略)。指定された時間「待て」。この場合 0だから即実行 FF 03 … 曲名 FF 51 … テンポの設定 四分音符の長さを 0x075300us (=480,000us)に。 FF 59 … 調 FF 58 … 4分の4拍子 FF 2F 00 End of Track、終わり

トラック 1以上

チャンクはトラック 0と同じ構造なので省略。途中から見てみましょう。 Note on 90 4C 6E チャンネル0, ノート番号 0x4c, ベロシティ 0x6E で鳴らす C.C. (Modulation) B0 01 01… チャンネル0, 変調の深さを 0x01に変える …B0 01 0A チャンネル0, 変調の深さを 0x0Aに変える C.C. (Expression) B0 0B 7F… チャンネル0, 大きさを 0x7F に変える …B0 0B 57 チャンネル0, 大きさを 0x57 に変える Note off 90 4C 00 チャンネル0, ノート番号 0x4c を止める ランニングステータスの例 (Note on とNote off) 最初のNote on (93 23 78) より後ろの Note on/offは 93が省略されています。

番外編 怪しいファイルコレクション

SMF1 なのに、トラック0 にMIDIイベントが入ってます。マズイでしょ、これは。 Pitch Bend の設定 ±0 が連続して行われています。デルタタイム 0で変更しているところもあります。無意味。 MIDI作者がシーケンサー上でPitch Bend の設定をした後、やっぱりやめたって削除し ファイルに保存する時、シーケンサーがゴミを掃き出しちゃった、と私は予想。

戻る