@Optimus:
I am not an expert but i will try to tell you what i know about this...
Personally i think the best way (and the way most people are using afaik), is to generate the soundsamples yourself. Ofcourse you could use Midi (and GM.dls == DX WaveTable dll == sounds hears the same on any PC instead using Wavetables on the soundcards, which would end in different results when playing/hearing).
The GM.dls is a complete GeneralMidi Wavetable (and its a standard, every musician will/should know this!). You can go and use this GM.dls, by extracting needed instruments (waves) and use it for your own use. To get a overview what stuff is included in this GM.dls and how to play with it and extract datas, just take a look to this nice tool and play a bit with it:
http://pouet.net/prod.php?which=30541If you want create/generated your very own instruments (even portable to other OS if you want), you should learn some basics about sound and its generation. For example you should get the point, that you need different waveforms to generate all possible sounds you ever want....
Here you can see the needed Waveforms and its names:

You should know that their is a so called "pink noise" or often called "white noise" too... What is this? When watching TV and dont get any TV programm in... just only the black/white noise on screen, you can hear it... its the noise! At the first moment you dont or may not hear anything out of it, like a singing woman or any other tons... But at least, in white noise all waveforms are available and so its possible, that you could (theoretical) filter this noise and get a singing woman or any instrument... (this is the effect, when watching/listening very long to the tv noise and when you think you hear something inside this noise ^^)
If you want start generating the first Sin-Tone (its the easiest you should start with), you should take a look to the RIFF WaveHeader
http://de.wikipedia.org/wiki/RIFF_WAVE how this looks like and what informations are stored in a WAV header... Next you could take a look to sndPlaySound API
http://msdn.microsoft.com/en-us/library/ms713269.aspx... You could use this simple API to play the first generated stuff or for playing a complete generated tune (wave format)...
Sadly i am very busy atm and dont have so much time nor knowledge to help you atm... but i will try to find an very old experience myself, to generate any dirty sound

I will post here, even if the source is very old and really dirty source

Start things with a frequence of 44100 hz... Create an Array where you will store your generated datas... for example SIN wave... (+32767 to -32767).... 0 means you will hear nothing, like the deadline ^^ Next try to play this Array (memory block) with sndPlaySound API...
hope this helps a bit for the first... good luck n best regards