Коды состояния используются в сообщениях ABORT и CANCELLED и отражают причину ошибки или состояние отмененной сцены. Код состояния представляет собой беззнаковое двухбайтовое целое число. Чтобы оно могло быть передано по MIDI, два младших бита числа должны быть нулевыми. Соответственно, наименьший код состояния будет равен 4, наибольший 0xFFFC (65532). В описании сообщений статус-код выглядит как "s1 s2". Метод преобразования кода состояния в значения s1 и s2, и наоборот, показан на рис. 10.
Есть три числовых диапазона кодов состояния. Первый диапазон — общий для всех форматов команд, коды состояния в нем применимы для любых типов контроллеров. Характерная особенность этих кодов в том, что все они являются отрицательными числами, если рассматривать код как целое число со знаком (подробнее о представлении целых отрицательных чисел см. четвертую статью цикла). Все коды, возвращаемые в сообщениях CANCELLED, попадают в этот первый диапазон.
Второй диапазон зависит от формата команды, то есть специфичен для устройств определенного типа. Например, код состояния 0x1008 означает "низкое давление воды", если получен от устройства типа "спецэффект" (формат команды от 0x50 до 0x5F). Но когда тот же код получен от устройства управления звуком (формат команды от 0x10 до 0x1F), он означает "неполадки в усилителе".
Третий диапазон зависит как от формата команды, так и от производителя. То есть, производители используют коды состояния в третьем диапазоне по своему усмотрению. Информация об этих кодах обязательно должна быть опубликована. Естественно, наибольшая совместимость систем достигается в том случае, если коды из этого диапазона используются как можно реже. Спецификация 2PC рекомендует всегда, когда это возможно, использовать коды состояния из второго диапазона.
Код состояния 0 зарезервирован на случай неизвестной ошибки или ошибки, для обозначения которой другие коды не подходят. Таблица на рис. 11 подытоживает вышесказанное.
В таблицах на рис. 12 и 13 приведены все коды состояния, не зависящие от формата команды. Буквы в столбце "Сообщения" показывают, какие сообщения могут привести к получению ответа от устройства с данным кодом состояния (S=STANDBY, G=GO_2PC, C=CANCEL). Первая таблица содержит коды состояния, используемые в сообщении CANCELLED, вторая — в сообщении ABORT. Обратите внимание, что сообщение ABORT, посланное прибором в результате обработки сообщения CANCEL, может иметь только два кода состояния: "неизвестная/неопределенная ошибка" и "ошибка контрольной суммы". Код состояния "тайм-аут" никогда не появляется в реально передаваемых сообщениях, он включен для упрощения внутреннего устройства контроллера.
В таблице на рис. 14 перечислены коды состояния из второго диапазона, то есть коды, которые зависят от формата команды, но применимы ко всем производителям устройств.