That's a great idea! I've never had a problem with gsplay, and I just checked and it even plays raw SysEx (.syx) files, and (if you make sure any programming initial SysEx files are named to play first) it even supports playing files within recursive directories, like so:Sbeehive wrote: ↑Sat Mar 09, 2019 11:40 amjaffa225man wrote: ↑Tue Mar 05, 2019 4:38 pm
Actually, I think your speed issues are with falcosoft's MIDI player. I had issues like you've described, while testing it, until I enabled the option to wait a bit between each song's playback (at least I think that was my solution). It's annoying Microsoft dropped support for selecting MIDI devices in current versions of windows. Maybe there's a better player for windows available. I don't know, though, as I'm on GNU/Linux and mostly using an older version of audacious (3.4.3, which I manually compiled, along with its AMIDI-Plug plugin) to play anything and everything. My experience with MIDI hardware (mostly roland, though) is that they generate very low latency, so I doubt your thru box is the issue.
Yeah Falcosoft tends to run GM/GS stuff flawlessly but MT-32 tends to be a pain.... I think I might try running things through an older player in DosBox and seeing how that goes!
Code: Select all
gsplay rec c:\wherever\all\midi\and\sysex\files\reside\*.*
It will skip files with extensions it doesn't understand, but that just makes it better for this purpose. That way, you can just put the SysEx for each game into the directory with all the game's music, as 00sysex.mid or 00sysex.syx, keeping each game in its own directory with its own SysEx (in a more top-level directory named for "MIDI", "music", or whatever you'd like). And pause/resume, I just discovered, is the space bar!
I was just thinking about it, and although "mt32" is an option for gsplay to support mt32-reset messages before playback, that may mean between each song (which, if so, would reset the SysEx programming). So, instead, it might be a good idea to have a MT-32 reset MIDI file renamed to zzreset.mid in each directory too. I created that file for my audacious player long ago, so you may as well just download it here if you need it. I'm also including the CM-32L/CM-64 overflow assign on/off (again, although it still is reliant on a velocity>0 note off solution) files, and a MT-32/CM-32L/CM-64 master volume lowering (to 48) file (so certain older games don't cause digital volume clipping on newer modules) because they're all of the same ilk. Just copy the ones necessary to each game's directory and rename them so they play in the right order.
I was just playing some GM files through my overflow-assigned CM-64 to MT-32. I initialized them by playing these in this order: cm-32l-cm-64_overflow-assign.mid, mt-32-cm-32l-cm-64_reset.mid, MTGM.mid (found in the mt2gm.exe here for those unaware: http://www.midimusicadventures.com/ques ... utilities/), and finally mt-32-cm-32l-cm-64_master-volume-48.mid. I found it pretty annoying, as usual, that some GM files increase the volume too much and digitally-overflow/clip the CM-64, but I didn't want to use the mt-32-cm-32l-cm-64_reset.mid file because that would obviously unmap all the MTGM.mid equivalences, resetting any special SysEx instruments programmed, along with the other files I'd played. I wanted something that would handle any changes GM files make, without the seemingly-necessary, full MT-32 reset, so I created a new file that can be played to make various less major resets: mt-32-cm-32l-cm-64_reset-various.mid.
First, it resets the volume on all MIDI channels (1-16) to 100/0x64 (but not the "MASTER VOLUME"). Then each channel's pan is set to the center (64/0x40). Then each channel has a "Reset All Controllers" (CC# 121/79h) sent to it, which resets modulation (min: 0/0x00), expression (max: 127/0x7F), "Hold 1" (Off: 0/0x00), and "Pitch Bender" (Center: +-0/0x20,0x00). Lastly, it uses the "All Notes Off" controller (CC# 123/0x7B) to quiet any stuck notes.
In my limited testing, it seems to work perfectly. It probably will come in handy between separated soundtrack songs if they end with stuck notes, etc. too because it doesn't deprogram startup SysEx instruments. If any game sets the mentioned parameters only once while starting, it obviously won't be suitable. Of course, the offending MIDI messages could be removed without too much difficulty.
Here they are: