Program Change — сообщение о смене MIDI-инструмента (тембра, патча, программы). Параметры сообщения — способ выбора банка, номер банка, номер инструмента в банке.
Поскольку MIDI-инструменты распределены по банкам, в спецификации MIDI сообщению Program Change соответствует совокупность сообщений: Program Change, Bank Select MSB и Bank Select LSB.
Для выбора MIDI-инструмента предназначено сообщение Program Change формата Ck pp, где k — номер MIDI-канала, pp — номер MIDI-инструмента.
Для переключения банков служат контроллеры:
№ 0 — Bank Select MSB — контроллер выбора банка (старший байт);
№ 32 — Bank Select LSB — контроллер выбора банка (младший байт).
Одним MIDI-устройствам для переключения банков требуется только один из этих контроллеров, другим — оба. Обработка MIDI-устройством команды смены банка и MIDI-инструмента может занять значительное время (десятки миллисекунд и более).
В спецификации General MIDI регистрируемые (Registered Parameter Number — RPN) и нерегистрируемые (Non-Registered Parameter Number — NRPN) параметры введены дополнительно для расширенного управления синтезом.
Номера RPN и NRPN передаются при помощи контроллеров:
№ 98 — NRPN LSB — контроллер младшего байта параметра NRPN;
№ 99 — NRPN MSB — контроллер старшего байта параметра NRPN;
№ 100 — RPN LSB — контроллер младшего байта параметра RPN;
№ 101 — RPN MSB — контроллер старшего байта параметра RPN.
MIDI-устройство запоминает однажды переданные ему сообщения RPN или NRPN, после которых передаются значения соответствующего параметра при помощи контроллеров:
№ 6 — Data Entry MSB — контроллер вводимых данных (старший байт);
№ 38 — Data Entry LSB — контроллер вводимых данных (младший байт).
Такой механизм передачи сообщений можно охарактеризовать как "контроллер в контроллере". Стандартом определена интерпретация только трех RPN (их значения задаются старшими байтами параметров Data Entry):