Это дополнительная информация к плагинам DCD и sndRemote
Три вида модуляции
Bi-phase coding
Длина импульсов и промежутки между ними по 0.9мс или 1.8
мс. Логические 0 и 1 определяются, как показано на
рисунке:
Pulse-distance modulation
Длина импульсов постоянна. Промежутки большей
длительности - лог. 1 , меньшей - лог. 0.
Pulse-length code
Длина промежутков постоянна. Импульсы большей
длительности - лог. 1 , меньшей - лог. 0.
Сразу нужно сделать оговорку по поводу "импульсов". На
самом деле каждый такой "серый" импульс - это 20-30 очень
коротких импульсов идущих с большой постоянной частотой
(от 30 до 56 кГц) или даже вообще инфракрасный фон с
частотой 400 кГц. При оцифровке звуковой картой (44100Гц) этот
"фон" сливается в импульсы по форме близкие к
прямоугольным. Этого достаточно для точного
декодирования.
Стандарты кодировок
RC-5
Модуляция Bi-phase. Сначала идут старшие биты, потом
младшие.
Если нажать кнопку на дистанционке и держать, будут слаться
посылки (DataWord) с одинаковым значением Toggle bit. Если
отпустить кнопку и нажать снова, пойдут те же посылки, но
уже с инверсным значением Toggle bit.
Этот стандарт использует PHILIPS и SAMSUNG
без каких-либо отклонений.
NEC
Модуляция Pulse-distance. Сначала идут младшие
биты, потом старшие.
При нажатии кнопки на дистанционке выдается одна полная
посылка, а затем через промежутки идут одиночные импульсы,
говорящие о том, что кнопка еще нажата. Перед посылкой
(первой полной и одиночными импульсами) идет один длинный
импульс синхронизации.
В посылке адрес и команда идут два раза -
сначала просто, затем с инверсией (что-то не совпало -
команда не принята). Кроме того, основная посылка идет
только один раз при нажатии на кнопку. Вероятность того,
что она пройдет правильно с первого раза, не очень
высока.
Data word:
Пример: адрес "00110111" и команда
"00011010" кодируются как
"00110111'11001000'00011010'11100101".
Этот стандарт используют HITACHI, NOKIA, AIWA, AKAI,
AverMedia.
Creative RM-900 (от SoundBlaster Live Platinum)
повторяет первую посылку 2 раза, кроме того первый байт
адреса равен C1h, а второй 44h, то есть между первым и
вторым байтом нет ничего общего. Для совместимости первые
2 байта адреса не сравниваются и используются
оба.
RECS 80 / RC-4
Модуляция Pulse-distance. Сначала идут старшие биты,
потом младшие. На 100% этому стандарту не соответствует
ничего. Например в дистанционках JVC использован этот
стандарт с сильными отклонениями (расхождения по
длительностям, Toggle bits никогда не меняются, адресных
битов 6, а командных 8 вместо 4 и 6
соответственно).
Используется JVC.
SONY / Panasonic
Модуляция Pulse-length. Сначала идут младшие биты,
потом старшие. В начале посылки есть длинный стартовый
импульс. До 20 бит данных.
В плагинах DCD и sndRemote
при декодировании сигнала получается 28-битный идентификатор
вида 0FAAAACC, где F - флаг определяющий модуляцию, A - адрес, C
- команда. Исключение составляет SONY, где 24 младших бита
определяют просто код команды.