As you can see, it's pretty high fidelity. What I am using to play it is Timidity, with the original Gravis UltraSound patches, tweaked a bit. You can find the patches here: http://www.doomworld.com/idgames/?id=17127
A bit of a background for this, and MIDI in general, for those who don't know yet: MIDI music is sheet music, MIDI files themselves don't contain any audible music. The music player has to interpret the MIDI file and then use external sound samples to play the music in an audible form. Historically every sound card that had hardware MIDI support came with its own batch of samples, so MIDI would sound different on every sound card.
Later on sound card manufacturers figured out that it would be nice for users to be able to change the samples. Early cards, like Gravis UltraSound, allowed people to upload samples, called patches, to it, and thus change how MIDI sounded. Afterwards Creative did a similar thing, but instead of allowing to upload individual samples, it created a sample pack format, called SoundFont.
These days there are programs called software synthesisers, which allow playing MIDI files without hardware support for it (it's all done on the CPU). They also support the same patches and/or SoundFonts, depending on the program. It's very handy, because two people can get the same sound out of MIDI files, even if their hardware is completely different or doesn't support MIDI in hardware.
There are several software synthesisers available, the most prominent ones being Timidity and FluidSynth. FluidSynth works only with SoundFont files, while Timidity works primarily with GUS patches, although it also has certain support for SoundFonts as well. With SoundFonts, you swap the entire sound bank with new samples, while with GUS patches you can mix and match them from various sources, which comes in handy (well, you can create a new SoundFont out of several ones, but that's much more complicated and requires special software, while changing GUS patches is a matter of editing a text file).
Timidity comes with several basic samples and a central configuration file, timidity.cfg. In it there are definitions about what samples the program is supposed to use. To make use of new GUS patches, you need to edit it and place this at the end:
Code: Select all
The positioning here is important, because the lower patches get priority. If you have the basic piano+guitar.cfg and drums.cfg, and you place timidity.cfg from the Gravis UltraSound patches at the bottom, Timidity will use the Gravis UltraSound patches, and if an instrument is not present, will fall back to base drums and piano+guitar. If you put it the other way round, drums and piano+guitar at the bottom, it would play piano+guitar and drums first, and then the Gravis UltraSound only as a fallback.
The cfg files included with patches are themselves editable text files. For instance, the one that comes with the Gravis UltraSound patches has a list of patches included. First there is the definition "bank 0" which means that the following patches are for the general instrument sound bank, then there is an instrument slot number and a patch name. Afterwards there's a "drumset 0" definition which means that the following patches are drums. If you comment out one of the patches, Timidity will no longer play it and will fall back lower in the configuration chain for that particular slot.
While the original Gravis UltraSound patches sound pretty good in its default state, it still has a few issues with World of XEEN music playback. The Clouds of XEEN town theme, for instance, depends on a certain instrument that the Gravis UltraSound gives an oscillating sound to, and it makes the music track sound not as good as it could be. So the solution to that is to comment out that particular patch and let the fallback take care of it. Alternatively, what I did was take another patch set (I took freepats: http://freepats.zenvoid.org/ ), put it below the Gravis UltraSound one, then commented everything out except for the patches I want overridden (this method makes it easy to use trial and error to figure out what instrument doesn't sound right, because you can comment out a half of the patches and then listen again, then repeat, until you find the offending patch). So in the end you get a certain mix of patches that ends up sounding just right.
Over the years I've tried multiple SoundFonts and a few patch sets. Generally what I do in order to test whether the samples I'm using sound right or not is to use four or more "benchmark" MIDI files that test various aspects of the sample pack. My usual tracks I use for testing are Spacecraft from Darkside of XEEN (since it's a quite convoluted track, and every sample pack seems to play it differently for some reason), Entryway from Doom II (it has a wide range of instruments and tests drums fairly well), Crystal Cave from RuneScape (it depends on a certain instrument halving long falloff time to create a crystal-sounding effect, and if it's wrong it sound horrible) and Shamburger from Age of Empires II (also a wide range of instruments tested).
In case of the Gravis UltraSound patches, in stock configuration it passes the Spacecraft test pretty well, passes Entryway fairly well, passes Crystal Cave with flying colours, and fails Shamburger. Thankfully after a bit of tweaking with the configuration files I made it pass Shamburger pretty well as well. Overall the patch set is awesome at subtle sounds, like the crystal test indicated, hence it creates a really high-fidelity sounding Clouds of XEEN title theme and Town theme 4 from Darkside of XEEN. It fares worse when it comes to drums, however, as the Doom soundtrack sounds slightly dull.
I am yet to see a sample pack that would pass all four tests, but the Gravis UltraSound patch set definitely comes closest to that (and is easily editable at that). Another patch set that I was using before was EAWPATS: http://www.doomworld.com/idgames/?id=13928 I think it failed the Crystal test, however. I might end up using a mix of EAWPATS and the Gravis UltraSound ones to get the best of both worlds, but I need to experiment a bit more with that.
By the way, the reason why I got around to trying out this patch set to begin with is that I typically need to do that on every OS reinstall, so it's a good time to try out something new. I'm using Linux, and my music player is Amarok, which does a really good job at it. The sound system is a bit complicated on Linux, but it's also very extensible: Amarok uses Phonon to play every music file, and Phonon is an abstraction layer that talks with backends. There are two backends that Phonon officially supports, that is GStreamer and VLC. Interestingly enough, GStreamer uses Timidity for MIDI playback, while VLC uses FluidSynth (although just recently GStreamer also got a FluidSynth plugin). So depending on the Phonon backend I can use either one or the other.
Since GStreamer is installed by default, I'm using that, and Timidity is doing a good job. However, GStreamer has a few limitations in the way it interacts with Timidity. Timidity has some support for playing SoundFonts, and there definitely are more SoundFonts out there than there are GUS patches. However, the Timidity plugin for GStreamer does not support SoundFonts, and generally doesn't support all the functions of Timidity. So while I would normally look into SoundFonts first and foremost, this made me look into GUS patches instead, and those that are available have really good quality, and are configurable to boot.
Also, my sound card has hardware MIDI support, so it's theoretically possible to load up a SoundFont into it directly. Theoretically, because Creative are horrible at creating drivers, and the drivers for Creative X-Fi for Linux don't have the support for loading SoundFonts on it. Hence why I needed to use Timidity in the first place.
So, does anyone else have any suggestions for sample packs that would work good with the World of XEEN soundtrack, or just some general experience to share in that regard?
Oh, and currently my freepats.cfg file, which is overriding some of the samples that don't work that well from the Gravis UltraSound pack, looks like this:
Code: Select all
# GEm: Entryway fix
35 Drum_000/035_Kick_1.pat amp=100
36 Drum_000/036_Kick_2.pat amp=100
# GEm: Shamburger fix
# GEm: Town fix
# GEm: Age of Empires Music2 fix