Thinking about track splitting ...
Could do with with 2 different options:
-xCSPLIT ... split output by midi channels
-xTSPLIT ... split by tracks ... need a flag to combine all drum tracks?
Check to make sure user isn't setting both options.
The tracks would be named Foo-C10.mid, Foo-C9, Foo-C16, etc or Foo-Drum-1.mid, Foo-Solo.mid, Foo-Chord-Sus.mid.
I had a quick look at the code and don't see anything making it too hard. Just one thing: Meta track data. I think it'd be a coding choice: just skip all meta data (probably not a good idea); write the meta data to each track (needless duplication?).
Love some comments ... no promises on results