The situation before General MIDI
General MIDI came about long ago, but some time after MIDI was established. The various makes and models of synths had no standard for interpreting Program Change (Opcode 4) commands. A MIDI sequence containing a "program change" might be intended to start out as a flute, then turn into an oboe, for example. The change to oboe would require a program change command, but that command would be of the form [1
- 1 means "this is a status byte", while 0 means "this is a data byte"
- sss is a number from 0-7 indicating opcode (so opcode 4 = 100)
- cccc is the channel number from 0- 15 (for channel 12, that would be 1100)
- ppp:pppp is the new program to use
So in synth A, the flute patch might be stored in program 102, and the oboe in program 81. The command to switch to oboe on channel 12 is therefore [14
], or [1
101:0001] in binary.
Meanwhile, on synth B, the flute patch is assigned to program number 12, and the oboe to program 40. It has tubular bells at program number 102 and buzzsaw at program 81. This means that the sequence stored and intended for synth A will go from tubular bells to buzzsaw if played on synth B. Fixing this means changing the sequence to suit synth B's program assignments, or swapping the programs around on synth B. (i.e. over-writing tubular bells with flute, and buzzsaw with oboe) Obviously a pain either way.
Yes, the same sound on every synth
So the manufacturers got together and agreed on the General MIDI standard, which tells which program number to use for flute, which for oboe, which for organ, and so on. Problem solved. However, some synths may not support all the sounds, and most will have sounds outside the standard. These issues have nothing to do with General MIDI, and General MIDI has nothing to do with these issue.
Back in the day, this meant that a sequence worked out on a Yamaha synth could be stored on floppy disk and transferred to a Roland synth, and it would play back as a reasonable facsimile of the original.
Other uses of General MIDI
In contemporary usage, GM can be used to share music without resort to sound files. MIDI files are much smaller and more versatile than sound files, so music posted on Wikipedia (for example) might be stored more easily and transmitted more quickly. (The browser would act as a synth to turn the GM into sound). Another use might be in education. Students could submit their work to an orchestration teacher, who may choose to view the GM as a score instead of as sound, thereby saving a lot of time and trouble, compared to listening to each student's work and deciphering exactly what's going on. Likewise, a composer might submit work to a band leader, who could preview it by listening first, then printing out parts for the players later. And I'm sure GM is useful in other situations that involve sharing. For example, we might try a sequence on various softsynths to see which one does the best job.
General MIDI can be like Slumming
In practice, GM programs often sound uninspiring because most synths are dedicated to making unique sounds that are beyond the list described by the standard. If they honor GM, it's often for the sake of completeness. Nobody really expects GM to be used in the final recording -- it's mostly for sharing sketches. Still, one does encounter useful sounds that happen to be assigned to a GM role. Therefore, when I'm looking for a sound, GM assigned patches usually go to the back of the queue. But I always check them out, just in case. I've also found them generally more awkward to tweak, but that generalization might be unfair.