KEXEL's picture
1.1
b0bfea8 verified

This is the MIDI file parsing folder.

The code here is responsible for parsing the MIDI files and interpreting the messsages. All the events are defined in the midi_message.js file.

MIDI Classes hierarchy

MIDI Sequence

  • The most basic class, containing all the metadata that inheritors have.
  • It does not contain track data or embedded sound bank.
  • Contains the function for calculating time from ticks.
  • Contains the copying code.

MIDI Data

  • Inherits from MIDI Sequence.
  • Has an isEmbedded property to mark the existence of embedded bank. This is the class that is available in sequencer.midiData.

Basic MIDI

  • Inherits from MIDI Sequence.
  • The actual MIDI representation, containing the track data and embedded sound banks.
  • Contains the code for parsing the MIDI and filling in the metadata automatically.
  • Contains the SMF/RMI writing functions.
  • Contains the code for determining used channels on tracks.

MIDI Builder

  • Inherits from Basic MIDI.
  • Used for building MIDIs from scratch.

MIDI

  • Inherits from Basic MIDI.
  • The SMF/RMI/XMF file parser.
  • Called by the sequencer if an ArrayBuffer is provided.