Split MIDI tracks for each instrument number.
C# Shell
Latest commit 203d3e0 Jan 23, 2015 @gocha Add version info to ShowUsage



Split MIDI tracks for each program number (instruments).

Concept of MidiSplit

MidiSplit is effective for relocating tracks of a sequence that has only a limited number of channels (e.g. retrogame BGM). Such a sequence often changes instrument by a program change several times in a track. MidiSplit helps you to know how many instruments are used, and adjust volume balance for each instruments.


  • MidiSplit splits track when it finds a program change. Channel messages excluding notes (e.g. control changes) located before the program change, will also be moved to the new track.
    • By -cs option, MidiSplit can copy control changes, that are located in other tracks, to switching point.
  • Non-channel messages (e.g. sysex) will be kept in the input track.
  • Rhythm channel is processed as same as a melody channel.
    • By -sp option, MidiSplit can divide a melody into tracks by note numbers. (example: -sp "ch10, prg127:0:1")