问题
I'm trying to write a MIDI parser, but I'm reaching a MIDI event that isn't documented in the official documentation (namely http://www.midi.org/techspecs/midimessages.php).
In one of the MIDI files that I have, I notice that immediately after a note-on event of 81 70 90 3c 00
, I get the following bytes: 00 43 1e
. However, I have not seen any documentation about 0x43
acting as a MIDI event identifier. How should I interpret 0x43
, and where can I find more information about that?
Edit: The MIDI is interpretable, because I've loaded it up into Logic Pro without issues. Additionally, my interpretation up to the 0x43
has been accurate.
回答1:
81 70 90 3c 00 00 43 1e
81 70
: delta time (240 ticks)90 3c 00
: Note-On message (actually note off)00
: delta time43 1e
: Note-On message, using running status.
The MIDI Specification says:
RUNNING STATUS
For Voice and Mode messages only. When a Status byte is received and processed, the receiver will remain in that status until a different Status byte is received. Therefore, if the same Status byte would be repeated, it can optionally be omitted so that only the Data bytes need to be sent. Thus, with Running Status, a complete message can consist of only Data bytes.
Running Status is especially helpful when sending long strings of Note On/Off messages, where "Note On with Velocity of 0" is used for Note Off.
Status bytes always have the most significant bit set (80–FF), while Data bytes always have it clear (00–7F). Therefore, it is always possible to distinguish between them.
来源:https://stackoverflow.com/questions/32651942/what-is-the-0x43-midi-event