Program Change number confusion

My NI FM8 softsynth numbers its programs from 1 to 127 while the Program Change values in Cubase are from 0 to 127. I get the correct sounds chosen from the synth - if I send Program Change 2, the synth picks the second patch, not the third - but the Track Inspector shows the wrong patch name. But when I change the patch manually from the Inspector, the synth picks the right patch (one with the same name). This is confusing, if not a bug. How can I get the patch lists in sync?


You’ve discovered something that has confused musicians for over 40 years now. It all stems from how the MIDI protocol numbers things and how some synth manufactures do it.

Sorry if this becomes a bit technical, but here we go. The MIDI protocol numbers everything from 0 (zero). A MIDI message MIDI message consists of two kinds of bytes. A status byte and one or more data bytes. Each byte, in turn, consists of 8 bits (1’s or 0’s). One of these bits is used to determine if the byte is a status- or a data byte. That leaves 7 bits for the value, and 7 bits gives you 128 possible value combinations in the binary system.

You can try this yourself by opening a MIDI track in the List Editor. Now scroll the values in any of the Data columns up and down. You’ll see that they go from 0-127. This is how the MIDI protocol numbers values. (In case you haven’t made the connection. This is the reason that there are 128 possible slots for sounds in the drum editor!)

The confusion, when it comes to patch numbering, is caused by the way some manufacturers follow this standard, while others don’t. Some number their patches from 1-128 (I won’t even go into Roland’s weird numbering system, based on the number 8). Presumably, because it’s more in line with the way we humans deal with numbers in daily life. You do count from 1-10 not from 0-9. Don’t you?

If the patches are named from Patch 1 to Patch 127 (in your Inspector list), you’ll ether have to make the mental calculation of adding or subtracting one, depending on your point of view. If you in a MIDI editor and want to call up patch 1 on your Track Inspector list, you’ll need to insert a Patch Change message with the value of zero. To call up patch 8, you’ll need to insert a value of 7, etc. Or you could go into the “MIDI Device Manager”, under “Devices” and change the names of the patches (see page 460 and onwards for the details).

While you’re at it, and you’re dealing with an external hardware synth, take some time and rename the slots with more descriptive names. This may take a while, but it will be much faster and easier to find the correct patch in the future.

This is no bug. As I’ve said, this confusion has plagues synthplayers for over 40 years (even before MIDI excised), so don’t expect a “fix” anywhen soon.

Thank you for the in-depth and well-written answer that will certainly be a useful guide to midi values for many users! However, I knew all that. The confusion that I have, has to do with a more specific situation which may have a simple explanation and follow logically from what you write above although I don’t know how to solve the problem.

Actually, the Data 1 values of Program Changes in the list editor do not go from 0-127, they’re 1-128. But apparently the (Instrument) Track Inspector uses 0-128 and this creates the confusion.

I’m not using a hardware synth; FM8 is a VSTi. Now, if I send a Program Change message, say # 2, from a midi track to FM8, it does make FM8 open the 2nd patch. The Inspector, however, takes its name from the first sound (because it sees the Pgm Change data as 1). So it shows a wrong name for the patch. However, if I change the synth Patch by choosing one from the Track Inspector menu, the right one is in fact loaded in the synth. So if I send Pgm message 5 from a midi track, I get patch #5 in the synth but the name of patch #4 shows in the Track Inspector menu. But if I choose patch # 4 from the Inspector menu, I correctly get patch #4 in the synth and, obviously, the right name in the inspector menu. Don’t know how to solve this.

You’re correct, The Data 1 column goes from 1-128 but, apparently, only for Program Change messages. But for Control Changes it goes from CC0-CC127. Maybe Steinberg has decided to program it this way, since the majority of hardware synths use the 1-128 way to display their patch number. It’s still 0-127 in the background, though.

I don’t have access to FM8, but I’ve tested with a couple of other VSTi’s, and I can’t replicate the problem you describe. It makes no difference if I send a Program Change message from the MIDI/Instrument track or select a patch from the Inspector. The same (correct) patch is selected in the VSTi (and displayed in the Inspector).

Could it be a problem with FM8? Can you replicate the problem with other (non NI) VSTi’s?

Thanks for your help! It certainly could be a problem in NI FM8; it is indeed somewhat buggy. I’ll check if it happens in any other VSTi. If it’s bug in FM8 I’ll just report to NI tech support and they’ll fix it in no time. Just last week, a new update fixed one of the two bugs I reported to them in 2007…