Of course, we could also just turn this into a definitive guide that does describe all the known methods
So here’s my take. Requires Python 3 and Mido library, both open source software available free of charge, and you can consider this little scriptlet to be public domain:
#!/usr/bin/python3
import mido
import sys
import os.path
if __name__ == '__main__':
mid1 = mido.MidiFile(sys.argv[1])
if mid1.type == 1:
projpath = 'PYRA_%s' % sys.argv[2]
os.mkdir(projpath)
for i in range(1, len(mid1.tracks)):
trkname = os.path.join(projpath, 'track%02d.mid' % i)
origname = mid1.tracks[i].name
mid0 = mido.MidiFile(type=0)
mid0.tracks.append(mid1.tracks[i])
print('Saving track %02d (%s) as %s' % (i,origname, trkname))
mid0.save(filename=trkname)
With the official sample material of the thread, here’s what I get:
[pmatilai@mursu mid2pyra]$ ./mid2pyra.py 'Dave Brubeck - Take Five 1.mid' 'Take_Five'
Saving track 01 (Acoustic Bass) as PYRA_Take_Five/track01.mid
Saving track 02 (Acoustic Grand Piano) as PYRA_Take_Five/track02.mid
Saving track 03 (Alto Sax) as PYRA_Take_Five/track03.mid
Saving track 04 (Acoustic Grand Piano) as PYRA_Take_Five/track04.mid
Saving track 05 (Acoustic Grand Piano) as PYRA_Take_Five/track05.mid
Saving track 06 (Acoustic Grand Piano) as PYRA_Take_Five/track06.mid
Saving track 07 (Acoustic Grand Piano) as PYRA_Take_Five/track07.mid
Saving track 08 (Acoustic Grand Piano) as PYRA_Take_Five/track08.mid
Saving track 09 (Drums) as PYRA_Take_Five/track09.mid
Saving track 10 (Acoustic Grand Piano) as PYRA_Take_Five/track10.mid
Saving track 11 () as PYRA_Take_Five/track11.mid
Saving track 12 () as PYRA_Take_Five/track12.mid
Saving track 13 () as PYRA_Take_Five/track13.mid
Saving track 14 () as PYRA_Take_Five/track14.mid
Saving track 15 () as PYRA_Take_Five/track15.mid
Saving track 16 () as PYRA_Take_Five/track16.mid
[pmatilai@mursu mid2pyra]$
The whole thing takes less than a second, and should work on any platform where Python is supported. This too will lose time signature and tempo, some of that might be fixable depending on how Pyramid stores things, but not here and not now