MIDI music tracks

The role-playing games (I-X) that started it all and the various spin-offs (including Dark Messiah).
User avatar
GreatEmerald
CH Staff
CH Staff
Posts: 3330
Joined: 24 Jul 2009
Location: Netherlands

MIDI music tracks

Unread postby GreatEmerald » 09 Aug 2013, 09:54

While trying to sort out my MIDI music library once more, I came across a pretty good instrument sample pack that makes most of the World of XEEN tracks sound very nice. I uploaded the two highlights of it on YouTube:

http://www.youtube.com/watch?v=8VwbbHpIWbY
http://www.youtube.com/watch?v=LW4AX8im-lI

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

dir <path/to/where/the/GUS/patches/are>
source <configuration-file-name>.cfg
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

drumset 0
# GEm: Entryway fix
 35     Drum_000/035_Kick_1.pat amp=100
 36     Drum_000/036_Kick_2.pat amp=100
# GEm: Shamburger fix
 73     Drum_000/073_Guiro_1_Short.pat 
 74     Drum_000/074_Guiro_2_Long.pat

bank 0
# GEm: Town fix
 95     Tone_000/095_Sweep_Pad.pat
# GEm: Age of Empires Music2 fix
 127    Tone_000/122_Seashore.pat

User avatar
legendoferthia
Marksman
Marksman
Posts: 400
Joined: 09 Dec 2008
Location: Canada
Contact:

Unread postby legendoferthia » 09 Aug 2013, 10:37

Great work, GreatEmerald! I loved the youtube demos you presented. I like the old synths myself. I have been focusing on FM Synthesis, particularly Yamaha OPL3 which was presented in the old Sound Blaster 16 sound card. I still got that beast! Unfortunately, I need an ISA slot to use it, can't get a new pc that uses that. I live recorded a couple of Final Fantasy midis from the SB16 and I should share a couple.

Great work!!!!
MIGHT AND MAGIC INSPIRED GAME: Legend of Erthia - Armageddon!
https://www.facebook.com/thelegendoferthia

User avatar
GreatEmerald
CH Staff
CH Staff
Posts: 3330
Joined: 24 Jul 2009
Location: Netherlands

Unread postby GreatEmerald » 09 Aug 2013, 11:01

Yea, you can listen to the FM versions of the XEEN tracks using the music tool from Rebirth of XEEN. I'll post those up some time as well.

User avatar
Xdarkon
Pixie
Pixie
Posts: 131
Joined: 28 Apr 2013
Location: Andover, Hampshire

Unread postby Xdarkon » 09 Aug 2013, 22:09

So you can basicly play any midi file with any different patches, For example you have a piano song you like and you have a midi for it, Using a software can you simply make it sound like Violin or other intrument?

User avatar
GreatEmerald
CH Staff
CH Staff
Posts: 3330
Joined: 24 Jul 2009
Location: Netherlands

Unread postby GreatEmerald » 10 Aug 2013, 08:19

Yes, but then all other MIDI files that use a piano will appear to use a violin. Alternatively, you could open the MIDI file in a MIDI editor and change the instrument slot on the file itself.


Return to “Might and Magic”

Who is online

Users browsing this forum: Google [Bot], tolich and 37 guests