Такой проблемы не возникает, если следовать спецификации General MIDI (GM). Она поддерживается многими аппаратными синтезаторами и лишь небольшой группой специальных программных синтезаторов. Если на панели инструмента имеется логотип “GM” (или его можно переключить в режим GM), то любое отосланное им MIDI-сообщение типа program change имеет четко унифицированное назначение. Например, программа звука под номером 7 однозначно означает клавесин, а программа звука под номером 36 — бас-гитару. Спецификация General MIDI, исключительную полезность которой нет нужды доказывать, тем не менее, рассчитана скорее на использование в потребительском секторе музыкальных приложений, например для исполнения записей популярных мелодий на домашней музыкальной клавиатуре, чем на профессиональное использование. Лавинообразный рост числа разнообразных моделей ПО и оборудования, а также библиотек виртуальных инструментов демонстрирует отсутствие унификации в этом вопросе — в большинстве инструментов используются отличающиеся схемы нумерации программ-вставок (патчей).
Программы звука упорядочены в группы (bank), чтобы в памяти инструмента можно было хранить больше 128 вариантов звучания и группировать патчи по тематическим категориям (например, группа инструментов (instrument bank) и группа ударных инструментов (percussion bank)).
Для изменения программы отсылается MIDI-сообщение типа program change, в котором указывается номер программы-вставки (патча), который должен находиться в пределах от 0 до 127. В начале 1980-х годов, когда MIDI-технология только разрабатывалась, невозможно было даже представить, что когда-нибудь память синтезатора будет способна вместить сотни программ звука или что музыкантам когда-нибудь понадобится так много программ звука. Поэтому число возможных вариантов MIDI-сообщений типа program change ограничено. Для того чтобы перейти из одной группы программ звука в другую, необходимо отсылать отдельное MIDI-сообщение типа bank select. MIDI-сообщение типа bank select было “имплантировано” (или “вплетено”) в категорию control change MIDI-сообщений. В MIDI-сообщении СС 0 указывается старший (MSB), а в следующем за ним MIDI-сообщении СС 32 — младший байт (LSB) двухбайтового адреса группы программ звука. Таким образом, становится возможным использование 16 384 групп по 128 программам звука — этого должно быть достаточно кому угодно для полного счастья. К сожалению, многообразные инструменты реагируют на сообщения СС 0 и СС 32 по-разному. Возможно, чтобы отыскать нужную программу звука, придется поэкспериментировать и покопаться в руководстве пользователя, прилагаемом к используемому синтезатору. Например, для того чтобы добраться до группы Н программ звука, в одном синтезаторе необходимо использовать MIDI-сообщение СС 0
со значением 7, в то время как в другом — MIDI-сообщение СС о со значением 0, после которого должно идти MIDI-сообщение СС 32с значением 7.
Для того чтобы загрузить вместо программы-вставки, взятой из текущей группы программ звука, программу звука из другой группы, необходимо отослать два MIDI-сообщения: первое — MIDI-сообщение типа bank select и за ним — MIDI-сообщение типа program change. (MIDI-сообщения необходимо отсылать именно в такой последовательности, потому что инструмент ждет сообщение с указанием группы программ звука до сообщения номера следующей программы звука. Поэтому, даже в том случае, если необходимо заменить текущий патч (программу-вставку) 1 из группы 1 патчем 1 из группы 2, для большинства инструментов необходимо отослать MIDI-сообщение с указанием номера выбранной группы программ звука и вслед за ним MIDI-сообщение с указанием номера выбранного патча.)