There are many software packages that can do this. Preferably a midi editor would be best, like cubase, cakewalk, energyXT, fruity loops might even be able to open .mid files, modplug tracker too, though midi is not really supported and working properly there...
Once you have the midi loaded, you need to give the instruments a sound. This can be achieved by loading in a soundfont (.sf2/.sbk/etc) or use virtual instruments, like VSTi plugins.
Once it sounds great, you can export that to wav or mp3 if the software allows that.
Another option would be to record your soundcards output and play the midi. For this, you'll have your midi device set as recording source, which is not always possible on a soundcard.