Hi, I am not sure that I understand completely what you mean when you say "supporting MIDI". From what you say, it sounds like you want to both support playing MIDI files, build in a sampler to play sounds, and connect it to the MIDI.
In my opinion, this is neither necessary, nor desirable, as MIDI can be used for other purposes, besides playing sound. During my years as a sound engineer, besides playing sounds, I have used it mainly to control sound effects, but also to synchronize audio files that had to be transferred between different setups.
What I think you should do, is keep the MIDI as just MIDI, separate from sound, and then let users do what they want with the signal. Midi controller pong? A program to teach piano? The next Rock Band, only with real midi instruments?
Then, when you have that down, you could maybe provide something like a
GM wavetable to play the sounds, even though this is
very high level. Or maybe you could pass it along to the OS to do whatever it wants with it - I don't really know how that works, but I know that Windows has its own (poor) wavetable.
Or perhaps build in a complete sampler, with support for SF2, Akai, sound effects and what not. Again,
very high level.
My point is that supporting MIDI and playing sound are two different issues, even though the two are often connected. I hope that makes sense