Program Change (MIDI)
Het MIDI-bericht waarmee een synthesizer van geluid wisselt — twee bytes lang en de bron van een van MIDI's meest hardnekkige off-by-one-fouten.
De statusbyte is Cn, waarbij n het kanaal is, gevolgd door één databyte: programma 0–127. Meer past er niet in, en 128 geluiden bleken al snel niet genoeg. Daarom is het gebruikelijk eerst Bank Select te sturen, controllers 0 en 32 in MIDI CC, en daarna de program change — op papier iets meer dan twee miljoen adresseerbare patches.
De off-by-one zit in de nummering. Het protocol telt 0–127, maar vrijwel elk display en elke handleiding toont 1–128, dus ‘programma 25’ in een handleiding kan byte 24 of 25 betekenen, afhankelijk van wie het schreef. General MIDI legde vast wat de nummers betekenen, maar niet waar ze beginnen. Op het podium schakelt het bericht met één voetschakelaar pedalen en patches tussen nummers om.