我讀這篇文章:https://www.midikits.net/midi_analyser/running_status.htm如何區分運行狀態的DeltaTime(VLQ),南部規格
我讀一個MIDI文件,這裏的最後一個片段以字節爲單位:
00 B2 07 64 00 0A 40 00
5B 00 00 5D 00 00 FF 21
01 00 83 5F 90 3C 00 01
FF 2F 00
閱讀第91頁,Delta Time
顯然不發送,而不是發送帶有「運行狀態」相關的兩個字節
這裏我的解釋(我知道是不好的,由於我沒有考慮運行狀態)
00 B2 07 64
// track event size: '4', delta time: '0', event: 'status byte 'B2',
// data length: '2', data: '0764', description: 'Controller Change',
// channel: '2 - Midi Event Type'
00 0A // track event size: '2', delta time: '0', event: ' - '
40 00 // track event size: '2', delta time: '64', event: ' - '
5B 00 // track event size: '2', delta time: '91', event: ' - '
00 5D // track event size: '2', delta time: '0', event: ' - '
00 00 // track event size: '2', delta time: '0', event: ' - '
FF 21 01 // track event size: '3', delta time: '16289', event: ' - '
00 83 5F 90
// delta time: '0', event: 'status byte '83', data length: '2', data: '5F90',
// description: 'Note Off', channel: '3 - Midi Event Type'
3C 00 // track event size: '2', delta time: '60', event: ' - '
01 FF 2F 00
//track event size: '4', delta time: '1', event: 'type: '2F',
// data length: '0', data: '', description: 'End of Track - Meta Event Type'
正如你可以00 0A
線看00
是像Delta Time一樣對待,但0A
與某些事件類型無關。 (我認爲這是一個運行狀態),同樣的情況發生在3C 00
行。
問:
什麼是區分當是運行狀態當是delta time
線索?
編輯1:
在我的例子能解釋像Control Changes Messages
:
0A 40 // 0A Pan
檢查的網頁鏈接相關爲例。
假設相同Delta Time
00
00 // Delta Time
90 3C 7F // Note ON, Channel 0, Key 3C , Velocity 7F
00 // Delta Time
90 40 7F // Note ON, Channel 0, Key 40 , Velocity 7F
00 // Delta Time
90 43 7F // Note ON, Channel 0, Key 43 , Velocity 7F
例如變換像
00 // Delta Time
90 3C 7F // Note ON, Channel 0, Key 3C , Velocity 7F
00 // Delta Time
40 7F // Note ON, Channel 0, Key 40 , Velocity 7F
00 // Delta Time
43 7F // Note ON, Channel 0, Key 43 , Velocity 7F
之前但是,正如我不CONTROL CHANGE MESSAGES (DATA BYTES)
40 7F // 40 Damper Pedal on/off (Sustain)
43 7F // 43 Soft Pedal On/Off
謝謝你,我找到了運行狀態的解釋... https://www.midi。org/specifications/item/table-3-control-change-messages-data-bytes-2 –
運行狀態可用於任何事件類型;你必須記住最後的實際狀態字節。 –
但是,當從文件中讀取字節時,如何知道必須應用哪種解釋?控制更改消息或運行狀態有任何限制? (不含ambiguos數據字節) –