The MIDI File Format Specification and MIDI Implementation in QMidiPlayer

2016-04-09
#devel #qmidiplayer #midi

Abstract

This article is intended to be a reliable MIDI file format and implementation reference. It takes QMidiPlayer as an example to illustrate how a basic software-based MIDI implementation works. For the Chinese version, please visit <Chinese version link here>.

Contents [hide]
  • 1 Data Representations
    • 1.1 Binary values
    • 1.2 Variable length values
  • 2 Chunks
    • 2.1 Header chunk
    • 2.2 Track chunks
  • 3 Events
    • 3.1 MIDI events
      • 3.1.1 Running status
    • 3.2 Meta events
    • 3.3 SysEx events
  • 4 Common MIDI Implementations
    • 4.1 Pre-GM
    • 4.2 GM
    • 4.3 GS
    • 4.4 XG
    • 4.5 GM2
  • 5 Implementation details in QMidiPlayer
  • 6 Appendix
    • 6.1 List of known SysEx's
    • 6.2 Instrument list
    • 6.3 MIDI Effects
  • 7 References