It may not have been necessary but I’ve decided to post an update to this thread. The original post was rather informative but, as schru mentioned, it works up to Windows 7 but not on Windows 8/10.
I’ve also decided to write a bit more on improving MIDI playback on Windows in general. I imagine that most Codex regulars know this already, but I know there are many who don’t know yet about the various ways one can enhance MIDI music (using anything else than the default Microsoft GS Wavetable Synth is usually an improvement), or even why this is desirable.
spekkio might be interested in adding part of this to his list of game fixes and improvements.
When it comes to MIDI music, I use
Falcosoft MIDI Player. It is a damn good piece of software with a score of options, and it can also act as a MIDI host—meaning it can play MIDI from any program on your system. It can also act as a MUNT emulator, although that’s a story for another time. It is portable, so download it and extract it somewhere.
I should mention here that there are other MIDI host options, but if you know them you probably don’t need to read the rest of this post.
The next piece of software is
CoolSoft MIDI Mapper, which allows you to select the MIDI source on your system. There are other options available up to Windows 7, but on Windows 8/10, and likely beyond, Microsoft has removed the native Windows MIDI Mapper and to the best of my knowledge this is the only option we have to change the MIDI source.
In order to connect the two programs, we’ll need
loopMIDI. It acts as a virtual cable between MIDI Player and MIDI Mapper.
There are two ways to proceed now. I’ll cover the two because I find them both useful and there isn’t an option that covers all needs. Some games will sound better with one and not the other, but both are much better than the Windows default.
What you need now is a SoundFont bank. Think of the MIDI file as the music partition and the SoundFont bank as the orchestra. There are various files floating on the Net and they vary greatly in quality and size (some of them boast a size of 1 G and more!). You have to try and decide which sound best to your ears. There are many different opinions, making it difficult to settle on a bank of choice. For what it’s worth, I can vouch for 8MBGM.SF2—you’ll need to look it up, but it is relatively popular so it shouldn’t be too hard to find; it came bundled with Creative cards, like the SB Live!, and it provides good quality for just a bit less than 8 M. Even if it isn’t to your liking, it is a good starting point.
Firstly, open loopMIDI. Create a MIDI port by clicking the “+” at the bottom of the screen. You can also give it a name if you want to. In my example, I decided to call it “MIDI Player”.
All you need to do now is to open MIDI Player. Open the Settings screen (click the cog icon on the left of the program). In the “Midi Out” section, tick “Use Bass (Soundfonts/VSTi)” and it will open another panel. In the “BassMidi Settings” panel, simply select your default SoundFont. Finally, in the “Midi In” section, tick “Active” and select your loopMIDI port as the Input Port. The rest can be left alone.
The last step is to open MIDI Mapper and select your MIDI port, thus linking all MIDI calls to MIDI Player.
Windows games and programs will now play all MIDI files through MIDI Player, which is configured to use your SoundFont bank. DOS games running in DOSBox will also use it as long as the game is set to use General MIDI (most ’90s games should have the option, although not all do). Remember that in order for this to work loopMIDI and MIDI Player must both be open, else the system will default to Microsoft GS Wavetable Synth.
The other option is very similar but makes use of VSTi. For our purposes, just think of VSTi plugins as an alternative to SoundFont: they provide the orchestra.
MIDI Player comes with its own set of VSTi (one of which is the aforementioned MUNT emulator) but we specifically want to use
Sound Canvas VA. The Roland SC-55 was the standard sound module in the ’90s and many musicians used it when composing. The general idea is that if music was created with specific hardware, it’s the way it’s meant to be played.
While the previous setup works fine in general, some compositions simply sound better with a Sound Canvas. Sound Canvas VA aims to emulate a SC-88, which includes a SC-55 mode. It isn’t exactly the same as a SC-55 but it still sounds great and surpasses many SoundFont banks that claim to reproduce the SC-55 sound—interestingly, Microsoft GS Wavetable Synth is based on the SC-55 but sounds rather flat.
Sound Canvas VA isn’t free but you can download a trial version from Roland. It will only play music for 10 minutes at a time, and is limited to 14 days, though it should give you an idea of what to expect.
If you have set up MIDI Player correctly, this part should go fast: install Sound Canvas VA and then start MIDI Player. From the main menu, select the “Bass VSTi Plugins” option, or simply press SHIFT+I. In this new window, you can see that the OPL3 VSTi is loaded by default.
Press the stop button to unload the current plugin, then press the file button to load Sound Canvas VA (you’re looking for “SOUND Canvas VA.dll” in the directory where you installed it). If all goes well, you will see the Sound Canvas menu.
The last thing to do is go to option > system and change the map mode from SC-8820 to SC-55.
It may not be a completely faithful reproduction of the SC-55 sound but that’s as good as it gets without owning the actual hardware. If you want to use mainly the Sound Canvas VA plugin, you can tick the “Autoload at startup” box.
The procedure is the same for any other SoundFont bank or VSTi plugin you may decide to try. This should drastically improve the MIDI playback quality of your games, and hopefully the enjoyment you’ll derive from them.
Edit: as a bonus,
here’s a list of patches from tikalat on VOGONS. The good chap has spent the past years patching MIDI problems in games, and some are specific Sound Canvas problems.