Why isn't it possible to store MIDI songs as resources in the executable game file like I've done with bitmaps and wave sounds?
A1:
This limitation has to do with the fact that the MCI simply doesn't support the playback of MIDI songs from any source other than a file. So, although you could certainly include a MIDI song as a resource in a game, you wouldn't be able to play it using the MCI. You could, however, play it using low-level multimedia functions, assuming that you had the desire to learn low-level Windows multimedia programming. Assuming that you don't, being limited to playing a MIDI song from a file is a relatively small concession when you consider how easy it makes it to play songs.
Q2:
Can the MCI be used to do other things with MIDI files?
A2:
Yes, the MCI is flexible in allowing you to carry out other tasks related to the playback of MIDI files. For example, you can get more detailed about how you want a song played , such as playing only the beginning or end of a song. However, there are certainly still limitations when it comes to using the MCI to play MIDI songs because it is a high-level API. For complete control over the playback of MIDI music, you'll have to use the low-level Windows multimedia API, which is considerably more complex than the MCI.