2017-04-03 3 views
0

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イベント、またはメタイベントではありません。

ここには何が起こっていますか?私は間違って何をしていますか?

答えて

0

標準のMIDIファイルでは、Running Statusバイトを使用できます。チャネルで送信された最後のステータスバイトは、他のステータス/ etcが有効になるまで有効です。

ケーブルでMIDIデータを31.25 kb /秒で送信すると、システムが冗長データを省略できるようにすると、有効な帯域幅が有効に増加しますケーブル。

関連する問題