Самодельный Ethernet-транспорт для аудиоинтерфейса.

  • Автор темы Автор темы Rst7
  • Дата начала Дата начала

Rst7

Well-Known Member
10 Янв 2010
2.167
2.161
113
50
Kharkiv-city
Приветствую. Я знаю, что тут тусят люди, которые занимаются в том числе и разработкой аудиоинтерфейсов, возможно им тема будет интересна.

Давненько уже у меня в студийном хозяйстве используется звуковая карта Tascam US-1800. Ниче так железяка, но а) мало выходов (всего 4); б) большие задержки (там 12мс round-trip); в) очень "любимый" мной интерфейс для домохозяек под названием USB. Если с пунктами а) и б) я даже как-то боролся путем написания веселого ASIO-драйвера, который умеет объединять несколько карт, то с пунктом в) был полный ад. Я до сих пор удивляюсь, как я с таким сетапом ни разу синюю смерть на живых концертах не ловил, хотя пару раз реально был близок к провалу (да-да, я знаю, что тут на форуме есть человек, который копает в сторону обработки концертного звука полностью программным сетапом, я в принципе тоже этим занимаюсь довольно давненько).

В общем, все это меня порядком подзадолбало, и, оставив только аналоговую часть и АЦП/ЦАП (просто взяв нужные сигналы данных/синхронизации со штатной платы на установленную рядом свою, а точнее, даже не свою, а дешевый отладочник за 20 евро), я полностью сделал свой транспорт в комп/из компа- теперь это Ethernet, если быть еще точнее, то TCP/IP. Со всеми желаемыми профитами - полная задержка теперь всего 4мс (48кГц и 48 семплов буфер), с адекватной гальванической развязкой от компа (ну да, и на сто метров отнести можно), отсутствием какого либо кода в режиме ядра, и как следствие - никаких больше синих смертей.

Заодно почти бесплатно (ну выпаял из старой карты оптический передатчик) получилось добавить 8 каналов, выдаваемых наружу через ADAT. Итого было 4 выходных канала, а стало - 12.

Со стороны компа это выглядит как обычный ASIO-драйвер, естественно. Само устройство - 100М (потоки сейчас в обе стороны по 28Mbps), к компу подключено через самый простой и дешевый неуправляемый свитч, который уже воткнут линком 1G в банальную карту, коих в любом магазине по рубль за пучок. Свитч и линк 1G в комп используются только потому, что в этот же свитч воткнут еще один девайс, работающий, правда, только на прием, но в него летит еще 8 выходных каналов (о нем попозже расскажу как-нибудь).

Вот так это выглядит. Плата с горящими светодиодами и есть отладочная плата.
CardView.jpg


Все это поближе. Контроллер на штатной плате просто завешен в Z-состояние надеванием перемычки на его разъем программирования.
PatchView.jpg


Ну и так сказать панорама. Слева банальный ADA8000, который используется как ADAT-DAC.
FullView.jpg


На самом деле давненько вынашивается идея разработать и мелкосерийно выпускать свои многоканальные звуковые карты, но есть банальный вопрос нехватки времени. Вообще конкретно этот DIY я рассматриваю просто как тест цифровой части и программного обеспечения будущей железяки. А так у меня плата 8 каналов АЦП с предварительными усилителями уже полгода полуразведенная в PCAD'е, никак руки не дойдут ее до конца окучить.

Возможно кого-то из уважаемых людей заинтересуют технические подробности, я готов ответить на все вопросы.

PS Если в таком виде эта тема неуместна в данном разделе, то прошу модераторов перенести ее в более подходящий.
 
Это круто , ip аудио системы сейчас стоят дохрена...
вы написали драйвер для Ethernet asio ?
 
Последнее редактирование:
Себестоимость чего именно? Ну отладочник там за 20 евро плюс эзернетовский разъем с трансформатором за доллар. Два десятка проводов. Ах да, есть оптический трансмиттер, ну не знаю, наверное, центов 20 стоит (из китайской аудиокарты выпаян). Это что касается моего железа, которое мне пришлось добавить. АЦП/ЦАПы + аналоговая часть остались штатные от карты. Штатная цифровая часть карты в принципе не используется (кроме тактового генератора). Так что там больше вопрос не в цене железа, а в цене софта, который я для этого дела написал.
 
Если удастся снизить задержку до 1 - 2 мс , и обеспечить все частоты до 44 до 192
тогда это будет win )
 
@Zerocool, оно и так win, по-большому счету. Как бы особо больше 48к не нужно. А задержка там и так вполне топовая. 1мс из 4мс общих - это суммарная задержка АЦП/ЦАП в карте-доноре. Собственная задержка транспорта - 3мс round-trip, если буфер поставить не 48, а 32, то будет 2.7мс. Еще можно убавить хвостовой буфер (он 2мс) на всякий джиттер собственно обработки в компе, но тут палка о двух концах, как понимаете, особенно если есть любители рядом с запущенной DAW в танчики, например, шпилить ;)
[DOUBLEPOST=1521114669][/DOUBLEPOST]
вы написали драйвер для Ethernet asio ?

Правильная формулировка будет такая - "написал ASIO-драйвер, который через Ethernet по протоколу TCP/IP получает и передает данные в мой аудиоинтерфейс".
 
Самое сложное - поддержка линейки драйверов под основные операционные системы в актуальном и стабильном состоянии
Иначе это не продать

То есть стоит осознать в чем цель - и от этого плясать

PS а почему не UAC 2? винда десятка его поддерживать недавно начала
Макось и линукс его поддерживает из коробки
 
@Rst7,
Ну это вам не нужно )я то говорю о коммерческом применении
focusrite rednet , карточки 1 мс дают на любых частотах ..
 
@Rst7,
Ну это вам не нужно )я то говорю о коммерческом применении

Есть нюанс. Мне почему-то не хочется просто так (читай - бесплатно) делать то, что я не буду использовать ;)

focusrite rednet , карточки 1 мс дают на любых частотах ..

Не дают. Там такого же порядка суммарный раундтрип на 48К.
[DOUBLEPOST=1521116326][/DOUBLEPOST]
PS а почему не UAC 2? винда десятка его поддерживать недавно начала

Вот я не совсем понял, что именно Вы имеете в виду.
 
Вот я не совсем понял, что именно Вы имеете в виду.

USB Audio Class 2
на современном компе и на микроконтроллере того же класса что у вас (полагаю что то типа кортекс м4 или м7) люди делают примерно с теми-же задержками аппараты

Вопрос - вы от чего ЦАП-АЦП клочите? Как решаете пробему расхождения клоков на компе и на карте?
 

А, да ну нет. Задача стояла избавиться от этого интерфейса для домохозяек (я про USB) радикально. Слишком он нежный с точки зрения помех и прочего, когда по сцене куча проводов раскидана.

Вопрос - вы от чего ЦАП-АЦП клочите? Как решаете пробему расхождения клоков на компе и на карте?

От штатного тактового генератора, который был на карте. Там кварцы. А на компе для ASIO неважно, какой клок.
 
ошибся там около 3 мс .. в данте

Dante Latency
The Dante Latency drop-down menu allows you to set the device latency (time before playout).

A Dante device receiving audio from Dante Virtual Soundcard will use this value (unless the receiving device only supports higher latencies). The latency compensates primarily for computer scheduling jitter, as well as delay variations encountered in the network.

Supported values are:

  • 4ms
  • 6ms
  • 10ms

Это еще, кстати, бабка надвое сказала, что это за 4мс - round-trip или в одну сторону. В любом случае это похоже без учета задержек АЦП и ЦАП. К сожалению, вменяемых измерений я не нашел.
 
  • Like
Реакции: wolfire
Та я как-бы в курсе дела. Очень кусачий ценник на такое оборудование для занятий в свое удовольствие.

А почему Ethernet интерфейсы непопулярны? Только из-за цены?
Ну я видел на европейских фестах у прокатчиков, например, реднеты. Я так понимаю, что они довольны, все ж меньше коммутации.
 
@Oliver_Cray,
В радио ,Тв - IP audio давно уже стандарт де факто .
Дорого потому что все равно это узкий рынок , специализированный...
вот к примеру - Telos xnode - внутри 8 каналов Ацп ,все это выводится в ethernet
https://west-technology.ru/catalog/zvukovaya-obrabotka/oborudovanie-dlya-radioveschaniya/xnodeanalog

135 штук ..)

Я с Axia работаю уже 10 лет ) - так что этим технологиям лет в обед
почему это все не вышло за пределы радио тв - фиг знает , потребностей таких нет ..
Ни у кого ..
 
потребностей таких нет ..
Ни у кого ..

Ну как бы всякие реднеты и прочие таки есть. Есть всякие микшеры/стейджбоксы в том числе и с AES50 (это, правда, Layer 1, но фиг бы с ним). Это у меня, считайте, тоже такой себе стейджбокс для бедных небогатых получился, а в качестве микшера - комп с DAW.
 
так я и не понял в чем суть топика
если что - ничего обидного сказать не хотел (народ щас нервный!) - просто правда не понятны цели
То есть понятно что для себя заплили вы это дело - и я считаю лично что это здОрово
Но вероятно вы ожидали чего-то большего от общественности =)
 
Последнее редактирование:
так я и не понял в чем суть топика
... просто правда не понятны цели

Это местами такой завуалированный способ поиска какой-то коллаборации, назовем это так. Так сказать, ключевые слова из поста:
Я знаю, что тут тусят люди, которые занимаются в том числе и разработкой аудиоинтерфейсов, возможно им тема будет интересна.
...
На самом деле давненько вынашивается идея разработать и мелкосерийно выпускать свои многоканальные звуковые карты, но есть банальный вопрос нехватки времени.

Не обязательно имеется в виду полноценный бизнес, формы могут быть совершенно различные, вплоть до совершенно бескорыстной. Хотя, конечно, без особых надежд, но вдруг.

Но вероятно вы ожидали чего-то большего от общественности =)

Если Вы про вопрос похвастушек автора/одобрения зрителей - то это, конечно, мне не чуждо, я обычный живой человек со всеми необходимыми слабостями, но в конкретно данном случае меня этот момент мало интересует.
 
ну теперь более понятно и мои слова про поддержку в софтверном плане могу только повторить ибо это будет главной характеристикой товара
 
ну теперь более понятно и мои слова про поддержку в софтверном плане могу только повторить ибо это будет главной характеристикой товара

На самом деле вот как раз это - самая минимальная проблема. Там нет ни одной строчки кода в режиме ядра. Только user space, причем, через обычный интерфейс bsd-сокетов, который везде одинаков. На винде вообще пофиг, какая версия ОС, на Mас - думаю, что вполне соберется и будет работать, но у меня нет Mac'а для проверки в конкретно данный момент. Но если вопрос встанет именно ребром, то порт драйвера на Mac займет не больше одного дня. В данный момент я про ASIO. Что там происходит на Mac'е с Core Audio (или как оно там) с технической точки зрения, я не в курсе, но думаю, что вопрос тоже вполне решабельный, разве что не так быстро.
 
@Rst7, можно для не особо владеющих терминологией некоторые уточнения?
По сути вы можете взять, например ADA8200 и заменить её блок ADAT-а на Ethernet и получить 8 входов и 8 выходов ASIO по стандартному Ethernet входу в Комп?
И раундтрип на 48 spl получиться 4 ms?
 
На самом деле вот как раз это - самая минимальная проблема. Там нет ни одной строчки кода в режиме ядра. Только user space, причем, через обычный интерфейс bsd-сокетов, который везде одинаков. На винде вообще пофиг, какая версия ОС, на Mас - думаю, что вполне соберется и будет работать, но у меня нет Mac'а для проверки в конкретно данный момент. Но если вопрос встанет именно ребром, то порт драйвера на Mac займет не больше одного дня. В данный момент я про ASIO. Что там происходит на Mac'е с Core Audio (или как оно там) с технической точки зрения, я не в курсе, но думаю, что вопрос тоже вполне решабельный, разве что не так быстро.

работа в юзерспэйс (по моему опыту) означает что вашу требовательную к задержкам задачу могут отодвинуть более приоритетные задачи и пойдет треск
правда я с драйверами в линуксе по большому счету возился - но этож такие общепринятые вещщи вроде
Вы под нагрузкой гоняли свой софт?
 
  • Like
Реакции: Aleksandr Oleynik
@Rst7, можно для не особо владеющих терминологией некоторые уточнения?
По сути вы можете взять, например ADA8200 и заменить её блок ADAT-а на Ethernet и получить 8 входов и 8 выходов ASIO по стандартному Ethernet входу в Комп?
И раундтрип на 48 spl получиться 4 ms?

Да. Это не прям за пять минут делается, потому что надо все-таки разобраться в штатной схеме, чего отрезать/отключить, но в первом приближении все именно так. Раундтрип получится 3мс+задержка в АЦП/ЦАП. Если скажете, какие именно там стоят - скажу точную цифру.

О, даже нет, могу не так. Могу сделать коробочку с двумя ADAT'ами (вход и выход) и с другой стороны Ethernet.

[DOUBLEPOST=1521137992][/DOUBLEPOST]
работа в юзерспэйс (по моему опыту) означает что вашу требовательную к задержкам задачу могут отодвинуть более приоритетные задачи и пойдет треск
правда я с драйверами в линуксе по большому счету возился - но этож такие общепринятые вещщи вроде

А то, что сама DAW в юзерспейсе работает, Вас не смущает?

Вы под нагрузкой гоняли свой софт?

Конечно гонял. У меня щас такой сетап студийно/репетиционно/концертный. С 9м Cubase'ом в качестве DAW.
 
3мс+задержка в АЦП/ЦАП.
А можно добиться 2 мс + AD/DA на 64 spl?
Хотя - 3 ms это РЕАЛЬНО Отличное достижение - это по сути конкуренция с PCI-Ex-пресными картами RME! А если и драйвера будут не глючные - это ПРОРЫВ!
О, даже нет, могу не так. Могу сделать коробочку с двумя ADAT'ами (вход и выход) и с другой стороны Ethernet.
Будет САМЫЙ правильный КОММЕРЧЕСКИ вариант!
И сделать таких коробочек несколько модификаций - на один, два и четыре adat.
Какая может быть максимальная пропускная способность при 48 kHz? Сколько максимально каналов? 64 потянет с теми-же характеристиками задержки?
 
Последнее редактирование:
  • Like
Реакции: Scarlatino и Oliver_Cray
А можно добиться 2 мс + AD/DA на 64 spl?
Просто туда-сюда пробросить 64 семпла (для круглого счета я оперирую частотой дискретизации 48кГц) можно за 2.7мс. Но есть нюанс. Необходим хвостовой буфер, который будет выполнять две функции - устранять джиттер самой обработки в DAW (она довольно сильно по времени разнится) плюс запас на перепосылку пакета в случае его утери. Реально запас на перепосылку нужен в моем варианте на 24 семпла, т.е. на 0.5мс. Так что 2 не получится никак.

Будет САМЫЙ правильный КОММЕРЧЕСКИ вариант!
И сделать таких коробочек несколько модификаций - на один, два и четыре adat.
Какая может быть максимальная пропускная способность 48 kHz? Сколько максимально каналов? 64 потянет с теми-же характеристиками задержки?

На самом деле их не надо делать в виде кучи вариантов. Одного хватит. Они объединяются через обычный копеечный свитч. Если его (свитч) воткнуть в комп линком на 1G, то хватит всем навсегда (ну как когда-то 640кБайт ОЗУ хватит всем ;) )
 
  • Like
Реакции: Aleksandr Oleynik
А то, что сама DAW в юзерспейсе работает, Вас не смущает?
не смущает
полагаю что азио драйвер "будит" DAW по получении пакета - и время реакции от получения пакета (в вашем случае по ethernet) до пробуждения вашего процесса (и как следствие пробужденяи DAW) - будет вычтено из того времени что отведено на обработку пакета
 
-а что у вас за ethernet плата там если не секрет не рапбери или биглебоне?

Там копеечная отладочная плата на LPC1768. Никаких линухов, чистой воды bare metal.

-а без коробочки например вариант ethernet<>spdif in/out плюс 4х4 i2s или 2х4

Я не совсем понял, что такое 4x4 i2s?
 

Сейчас просматривают