Мегаобучалка Главная | О нас | Обратная связь


Состояние канала передачи



2016-01-02 437 Обсуждений (0)
Состояние канала передачи 0.00 из 5.00 0 оценок





Ситуацию с отсоединением MIDI-кабеля во время концерта можно считать классикой жанра. Если это произошло в момент, когда по кабелю передавались сообщения, то "зависшие" ноты и прочие глюки в тон-генераторе гарантированы. Первое, что нужно сделать — нажать на инструменте кнопку "паника" (или аналогичную, приводящую к отработке сообщений All Notes Off и Reset All Controllers). Второе — соединить устройства заново.

В MIDI предусмотрено специальное сообщение, которое позволяет инструменту самому определить целостность соединения, и в случае ее нарушения автоматически отключить звучащие ноты. Сообщение называется Active Sensing (категория Real Time, статус-байт 0xFE). Идея, в общем, простая, и основана на механизме тайм-аута. Передающее устройство посылает сообщения приемнику в обычном порядке. Как только пауза между сообщениями достигает 270 мс (ну, музыкант не играет ничего), передатчик начинает "нервничать" и посылает приемнику сигнал Active Sensing, как бы говоря: "Я в порядке, просто пока передавать нечего". Если в течение следующих 270 мс музыкант так и не притронулся к клавиатуре, передатчик снова посылает сигнал Active Sensing, и так до тех пор, пока не появятся сообщения для передачи.

Приемник, получив первое сообщение Active Sensing, включает таймер. Если в течение 330 мс пришло следующее сообщение Active Sensing, то все хорошо, связь в порядке. Если пришло другое сообщение — тем более. Но если с момента последнего сигнала Active Sensing прошло более 330 мс, а никаких новых сообщений нет, то приемник считает, что соединение нарушено, и автоматически отрабатывает команды выключения нот и сброса контроллеров.

Подытожу: сообщение Active Sensing посылается передатчиком, когда на MIDI-шине нет активности в течение 270 мс. До первого получения этого сообщения приемник работает в обычном режиме, после — в режиме слежения за потоком. Как только появляются другие сообщения, режим слежения отключается. На следующей диаграмме (рис. 16) показана логика работы приемника. Будем считать, что таймер приемника отсчитывает тики каждую миллисекунду. Значение регистра TO (Time Out) увеличивается при каждом тике на единицу, а бит (AS Flag) в одном из регистров состояния служит флагом — включен режим слежения или нет.

Несмотря на то, что Active Sensing — простейшее (и, видимо, не такое уж сложное в реализации) средство контроля, многие устройства на него не реагируют. Секвенсоры это сообщение не записывают.

Особенности приема


Спецификация определяет требования к устройствам в особых ситуациях приема.

Так, если пришел статус-байт, который определен в спецификации, но не реализован в устройстве, он должен быть проигнорирован без всяких последствий (нарушения внутренней логики). Например, если устройство не реагирует на Active Sensing, то это сообщение не должно прерывать логику работы Running Status. Такой принцип позволяет соединять устройства разных возможностей и разного ценового диапазона в одну сеть без проблем.

Неопределенные в протоколе статус-байты (например, 0xF4, 0xF5) должны игнорироваться вместе со всеми их байтами данных. То же самое относится к неопределенным в протоколе (или не реализованным в устройстве) сообщениям канала.

Для каждого статус-байта должно быть передано строго определенное число байтов данных (за исключением сообщений SysEx, специфичных для производителей). Приемник ожидает прихода всех байтов данных сообщения и только после этого может как-то на сообщение реагировать. Если статус-байт пришел раньше, чем положено, то есть предыдущее сообщение было неполным, оно отбрасывается, а новое принимается к обработке. Приемник должен игнорировать байты данных, которые не были предварительно снабжены статус-байтом (это не относится к приему в режиме Running Status).

Сообщения категории Real Time должны "аккуратно" извлекаться из потока и не влиять на прочую логику обработки. Если эти сообщения приходят в устройство, не содержащее секвенсор, то они игнорируются, так же, как и сообщения Song Position Pointer / Song Select (но, естественно, передаются на сквозной выход прибора в виде копии необработанного входного потока).



2016-01-02 437 Обсуждений (0)
Состояние канала передачи 0.00 из 5.00 0 оценок









Обсуждение в статье: Состояние канала передачи

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (437)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)