I've done some bugfixing on my MIDI player, and I think it's ready for a first quick-and-dirty release.
This is a version built for DOS and a DreamBlaster S2P on port 378h:
https://www.dropbox.com/s/jszmkkc3ey53q6w/MIDIS2P.zip?dl=0
It works by preprocessing and optimizing the MIDI data into a custom format, which is saved to a temporary file 'out.pre'.
After preprocessing is done, it will start playing. It should be fast enough for any machine, even an 8088 at 4.77 MHz.
Press 'esc' to stop playing.
After the program exits, you can rename the 'out.pre' file so you can re-use it later.
If you start with a .mid file, eg:
MIDIS2P canyon.mid
Then it will use its preprocessor first to generate out.pre, and then play it.
If you start with a .pre file, eg:
MIDIS2P canyon.pre
Then it will assume that it is a preprocessed file, and start playing immediately. This way you don't have to wait for preprocessing everytime you want to play a song.
I think I will add an MT-32 option later, similar to what is in the custom SoftMPU code already, so you can listen to any .MID file in the DreamBlaster S2's MT-32 mode.