基於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個字節是首標信息,和我有這些沒有問題。
以下字節表示有關軌道塊的信息;四個第一個是4D 54 72 6B
,這是在ascii中的Mtrk
,這是什麼決定了一個軌道塊;以下4個字節決定了同一塊中最後一個字節之後的字節數,因此00 00 00 A1
(以十進制表示)表示在同一個軌道塊中有161
個字節。
現在它的徑賽
第一個字節是00
它告訴時間增量爲0
,下一個字節告訴我們它是一個MIDI事件(更確切地說,程序變轉命令選擇MIDI通道0
中的節目69
- 從here)。
下一個字節是另一個軌道事件的開始,其中delta-time設置爲0
;這是一個note-on通道0
上的MIDI事件,注意3C
和速度5A
。
問題是,在增量時間設置爲01
的下一個事件中,事件密鑰值是41
,它既不是midi事件,也不是系統事件,也不是元事件。
這裏發生了什麼?我究竟做錯了什麼?