this pageに基づいて、MIDIの仕組みを学び始めました。サンプルのMIDIファイルをダウンロードして、すべての情報を抽出できるかどうかを確認しました。MIDIファイルのバイトレイアウト
これは、MIDIファイルである:
4D 54 68 64 00 00 00 06 00 01 00 03 00 04 4D 54
72 6B 00 00 00 A1 00 C0 69 00 90 3C 5A 01 41 5A ...
最初の14のバイトはヘッダ情報であり、Iは、これらに問題を有していません。
次のバイトは、トラックチャンクに関する情報を示します。最初の4つは4D 54 72 6B
です。アスキーではMtrk
で、これがトラックチャンクを決定します。次の4バイトは同じチャンク内の最後のバイトに続くバイト数を決定します。したがって、00 00 00 A1
(10進数で161
)は、同じトラックチャンク内にそれに続く161
バイトがあると言います。
は、今ではトラック競技
最初のバイトはデルタ時間は次のバイトはそれがより正確に(MIDIイベントです教えてくれる、0
であることを伝えます00
で、プログラム・チェンジの番です MIDIチャネル0
のプログラム69
を選択するコマンド - here)。
次のバイトは別のトラックイベントの開始時刻で、デルタ時刻は0
に設定されています。 ノートオン MIDIイベントチャンネル0
、ノート3C
、速度5A
です。
delta-timeが01
に設定されている次のイベントでは、イベントキーの値がであり、これはmidiイベント、sysイベント、またはメタイベントではありません。
ここには何が起こっていますか?私は間違って何をしていますか?