As I understand what you're trying to achieve, I would suggest that you check out the SynthFont package, which I use here to play midi files under Windows as this machine does not have my Sound/Midi card installed (no suitable slot) so I cannot link to my various external devices.
SynthFont will play the midi files perfectly happily, and uses Virtual Synth systems to generate the sound. You can load various SF2 (Sound Font) files to provide the sounds, I'm using a fairly good set called 'Timbres of Heaven' which works well, and includes a standard GM set, plus various extras, including some XG sounds, and others. You'll need to add suitable Bank Select commands into your midi files to get at the non-GM sounds.
SynthFont has built-in options to 'play' the result as audio, or play directly to a .WAV file for instant recording. This might be a help for you?
There are other SF2 file packages that you could explore if you want to try other sound sets. 'Timbres...' is however MASSIVELY better than the MS default sounds. Note that the MS data file is 3.4Mb in size, while the Timbres file is 395Mb, although it contains nearly three times the number of sounds (338 vs 128).
Of course, you can get some much nicer sounds using external modules, I especially like my Yamaha MU90r, and I've got some great midi files specially set for that unit, but if you want to 'distribute' your work to be enjoyed by others then anyone who wants to hear your work 'correctly' needs the right modules. At least with the SynthFont (or similar) they can load the correct SF2 data files.
The packages I've mentioned can be downloaded free, there are other ways to do the same thing that might involve some costs.
The quality of your sound card might come into it as well, but just about any modern card would be able to produce better sounds that could be achieved with the MS default sounds. Although these are based on a Roland system, they are now VERY dated.