[SLOT_0] ;только нулевой слот
mode = opusLAN

Программный модуль приёма и воспроизведения аудиопотока по локальной сети через RTP с декодированием кодека Opus.

Совместимость

Требуется подключение к локальной сети. Модуль работает только в нулевом слоте.

Принцип работы

Источник потока на стороне ПК — приложение AntiDante: оно берёт звук с любого аудиоустройства Windows и отправляет его RTP-потоком с нужными параметрами.

Аудиопайплайн состоит из трёх элементов: RTP-приёмник → Opus-декодер → I2S-выход.

Режим приёма определяется опцией multicastAddress: если адрес задан, модуль подключается к multicast-группе, иначе принимает unicast-поток на порт port. Адрес можно сменить на лету командой setMulticastAddress.

Для синхронного воспроизведения на нескольких приёмниках модуль непрерывно подстраивает тактовую частоту I2S под реальный самплрейт источника. Целевая задержка синхронизации задаётся опцией latencyMs и должна быть одинаковой на всех приёмниках.

В отличие от audioLAN поток сжат кодеком Opus: требования к сети значительно ниже ценой чуть большей задержки.

ПараметрЗначение
ПротоколRTP (unicast / multicast)
КодекOpus
Самплрейт48000 Гц (настраиваемый, 8000–96000)
Разрядность16 бит (фиксированная)
Каналы2 (стерео)
Задержка~100 мс

Топики

База топика события:

  • <deviceName>/audioStream_<slot> — например moduleBox/audioStream_0

База топика действия:

  • <deviceName>/audioStream_<slot> — например moduleBox/audioStream_0

Полный топик — база плюс направление и имя: moduleBox/audioStream_0/action/setVolume.

Опции

Доступные опции:

  • disableOnStart — флаг, стартовать в выключенном состоянии и ждать action/enable со значением 1. По умолчанию модуль активен сразу.
  • volume — число(int), громкость. Диапазон 0–100. По умолчанию 100.
  • multicastAddress — строка, multicast адрес IPv4 - если задан режим multicast иначе unicast. По умолчанию 239.0.7.0.
  • port — число(int), порт приёма потока. По умолчанию 7777.
  • sampleRate — число(int), частота дискретизации Гц. Диапазон 8000–96000. По умолчанию 48000.
  • bufSize — число(int), размер jitter-буфера мс. Диапазон 50–5000. По умолчанию 50.
  • latencyMs — число(int), целевая задержка синхронизации мс - одинаковая на всех приёмниках. Диапазон 40–500. По умолчанию 50.

События

ТопикPayloadОписание
audioStream_<slot>/event/enable0 / 1Активен 1 или спит 0
audioStream_<slot>/event/volumeцелое, %Текущая громкость
audioStream_<slot>/event/addressстрокаТекущий адрес потока

Пример: топик moduleBox/audioStream_0/event/address, payload 239.0.7.1.

Команды

ТопикPayloadОписание
audioStream_<slot>/action/setVolume0–100Установить громкость
audioStream_<slot>/action/setMulticastAddressстрокаСменить multicast адрес на лету - IPv4 или 0 для unicast
audioStream_<slot>/action/enable0 / 1Включить (1) или выключить (0) модуль

Индикация

  • Светодиод выключен — модуль в состоянии DISABLE.
  • Светодиод горит постоянно — модуль активен, поток принимается.
  • Светодиод мигает — модуль активен, но поток не обнаружен.

Примеры

[SLOT_0]
mode = opusLAN
options = multicastAddress:239.0.7.0, volume:100, latencyMs:50
 
[SLOT_1]
mode = button_led
;нажатие и отпускание переключают источник потока
crosslink = button_1/event/press:1->audioStream_0/action/setMulticastAddress:239.0.7.1, button_1/event/press:0->audioStream_0/action/setMulticastAddress:239.0.7.0

Подробнее — внутренние связи (crossLink).

Архив

Описание модуля для прошивок до перехода на конституцию — opusLAN (архив).