В спецификации GM 2 указано:
3.2 Сообщение об изменении программы
[…]
Устанавливает тембр для указанный канал.
Когда канал является каналом мелодии, тембр выбирается из банка, указанного в выборе банка (с помощью выбора банка 79H / xxH, с банком 79H / 00H, соответствующим настройке звука GM1). […]
3.3.1 Выбор банка (cc # 0/32)
Выбор банка выбирает нужный банк для указанного канала. Первый перечисленный байт - это MSB, передаваемый по cc # 0. Второй перечисленный байт - младший бит, переданный на CC # 32. Банки перечислены в таблице GM2 Sound Set (Приложение A). Выбор банка 79H / 00H соответствует звуковому набору GM1. […]
Сообщение выбора банка не должно влиять на любые изменения звука, пока не будет получено последующее сообщение об изменении программы.
Таким образом, чтобы получить доступ к другим инструментам, вам нужно выбрать другой банк перед отправкой сообщения об изменении программы. Например, чтобы выбрать «Пузырь»:
track.append(Message('control_change', control = 0, value = 0x79, channel = 0, time = 1233))
track.append(Message('control_change', control = 32, value = 0x05, channel = 0, time = 1233))
track.append(Message('program_change', program = 0x7a, channel = 0, time = 1234))