Program Change (MIDI)
MIDI-сообщение, которое велит синтезатору сменить звук: длиной два байта и источник одной из самых живучих ошибок «на единицу» в MIDI.
Статус-байт — Cn, где n — номер канала, за ним один байт данных: программа 0–127. Больше не помещается, а 128 звуков надолго не хватило. Поэтому принято сначала отправлять Bank Select — контроллеры 0 и 32 из MIDI CC — и затем Program Change: на бумаге это чуть больше двух миллионов адресуемых патчей.
Ошибка «на единицу» кроется в нумерации. Протокол считает 0–127, но почти все дисплеи и руководства показывают 1–128, так что «программа 25» в мануале может означать байт 24 или 25 — смотря кто писал. General MIDI договорился о том, что означают номера, но не о том, откуда их считать. На сцене сообщение переключает педали и патчи между песнями одной кнопкой.