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

  • Автор темы Автор темы Rst7
  • Дата начала Дата начала
Вот такое небольшое кино про два компьютера, два устройства, две DAW и связь между ними исключительно по локальной сети (без стороннего софта, только наши ASIO-драйвера от устройств).



Сейчас можно организовать до четырех потоков передачи и до четырех потоков приема. Каждый поток - до 16 каналов аудио. Передавать можно как на конкретный IP-адрес, так и в широковещательном режиме.

Самое смешное, что принять можно даже вот так:

Код:
ffplay.exe -f s32le -channels 2 -sample_rate 48000 -i udp://0.0.0.0:12873

Ну или ffmpeg, или vlc. Или какой-нибудь видео-броадкастер, типа OBS Studio.

не совсем понял, в рипере же уже есть ReaStream, который может поток на айпишник транслировать ? Мне казалось вы транспорт для аудио интерфейса делаете.. Либо я в видео что-то не понял.
[DOUBLEPOST=1550307702][/DOUBLEPOST]в целом если проект можно поддержать - я только за.
сейчас довольно сильно озадачен как все устройства в студии подключить к компу, отдельная сеть езернет решила бы вопрос..
 
в рипере же уже есть ReaStream

Есть. Только латенси у него десятками миллисекунд измеряется.

Мне казалось вы транспорт для аудио интерфейса делаете.. Либо я в видео что-то не понял.

Это одна из побочных вещей, чтобы можно было не только карты объединять, но и DAW на уровне нашего драйвера. Скажем, есть много разных наших карт в одной сети. Все они автоматически синхронизируются, часть работает с одной DAW на одном компе, часть с другой DAW на другом компе. А вот хотелось бы еще иметь возможно сразу и данные между этими компами носить. Видео как раз про это.

в целом если проект можно поддержать - я только за.

Повторю фразу Александра - "его пока поддержать можно только морально". Ну не готово это все еще к "отдаванию в люди" - работать-то работает, но сейчас любому дай эту железяку, а он задаст только один вопрос - "И шо с этим делать?". Весь служебный софт еще только пишется. Не говоря уже о том, что есть еще MacOS, там есть отдельные вопросы.
 
Если что, могу разработчика на сях задействовать, думаю ему интересно будет поучаствовать.

Да в общем-то задачи, которые решались на более-менее низком уровне - уже решены (мною), может какие-то минимальные исправления понадобятся, но для этого не нужно десять человек. А на остальные - люди есть. Да и даже с остальными задачами есть нюанс: привлекать сейчас в команду нового человека - это тратить уйму времени на постановку задачи ему.
 
  • Like
Реакции: Urus и Aleksandr Oleynik
@Rst7, тогда следим за проектом и ждем результата.
Я правильно понимаю, что собрав несколько таких устройств, я смогу весь свой зоопарк из интерфейсов и обработки подключить по езернету к одной дав?
 
Я правильно понимаю, что собрав несколько таких устройств, я смогу весь свой зоопарк из интерфейсов и обработки подключить по езернету к одной дав?
Нет, не правильно...
"Зоопарк" останется зоопарком. А вот любое кол-во наших интерфейсов (с любым кол-вом входов-выходов) можно будет докупать по надобности и подключая в общую сеть добовлять их в общий Аудио драйвер автоматом. Кроме того, как выше Дима описал - сможете любое сочетание интерфейсов подключать к любым разным Компам в сети и на уровне DAW обмениваться их потоками и между Компами, имея ОБЩИЙ автоматически клок у всех.
 
Последнее редактирование:
Нет, не правильно...
"Зоопарк" ос танется зоопарком. А вот любое кол-во наших интерфейсов (с любым кол-вом входов-выходов) можно будет докупать по надобности и подключая в общую сеть добовлять их в общий Аудио драйвер автоматом. Кроме того, как выше Динама описал - сможете любое сочетание интерфейсов подключать к любым разным Компам в сети и на уровне DAW обмениваться их потоками и между Компами.
а сразу получить скажем 32 канала?
 
а сразу получить скажем 32 канала?
На здоровье - хоть 132. Купите соответствующее кол-во девайсов.
Технология рассчитана на то, что один контролер обрабатывает 8 каналов входа и 8 выхода. Т.е. оптимальным, с точки зрения ВСЕГО, является устройство 8/8. Но 2/4 наиболее восстребованно - по этому начали с него.
Затем будет 8/8.
Ну а из этих устройств наберёте нужное кол-во входов/выходов.
Мы ещё размышляем о таком себе шасси-трансформере - в котром можно будет собрать нужное кол-во входов и выходов. Чисто технически возможно (с большим трудом, но можно постараться) втиснуть в 1U корпус 32 канала -
по 8 любых (входов или выходов).
[DOUBLEPOST=1550315597][/DOUBLEPOST]
adat не планируете?
В теме об этом уже писали - почитайте.
Планируем что угодно - только ставим приоритеты. adat, spdif, aes - пока не в первом приоритете.
 
да хоть 2-3-4 юнита. Не в этом вопрос, а в том, что в одной коробке все объединить.
Зачем?
Прелесть нашего решения в том, что девайсы могут стоять в совершенно разных местах студии (студий) и при этом работать как одно целое.
И ни кто не мешает вам их собрать в одном РЭКЕ как одно целое, но сохранить возможность и разобрать.

Вот если нужно к примеру сделать сэтап для Барабанщика, который он мог бы с собой таскать по репам - то тут да..... желательно минимум 16 входов иметь в 1U коробке, которая вместе со всеми проводами и миками поместится в туровом кейсе. + Ноут = и вы имеете на любой площадке СВОЙ звук.
 
вот про 8.1 ......
Вот и весь гайд.
А обновления на 8-ку хоть 1 раз накатываете? или с диска - и все? то что она у вас в интернет наверно не смотрит/про вирусы и прочее я догадываюсь, но может что-то нужно обновить? или не?
 
Ни чего в 8.1 не обновлял, более того - DWS даже деинсталит часть из уже имевшегося..
В инет смотрит ...
 
  • Like
Реакции: VR.j
то что она у вас в интернет наверно не смотрит/про вирусы и прочее я догадываюсь

У меня 8.1 без всяких обновлений (ну вот какой образ был на момент установки, такой и накатил), в интернет ходит. Никаких антивирусов не стоит. Файрвол выключен. Уже года два минимум, как поставил. Не падает, вирусов нет. Что я делаю неправильно? ;)
 
Зачем?
Прелесть нашего решения в том, что девайсы могут стоять в совершенно разных местах студии (студий) и при этом работать как одно целое.
И ни кто не мешает вам их собрать в одном РЭКЕ как одно целое, но сохранить возможность и разобрать.

Вот если нужно к примеру сделать сэтап для Барабанщика, который он мог бы с собой таскать по репам - то тут да..... желательно минимум 16 входов иметь в 1U коробке, которая вместе со всеми проводами и миками поместится в туровом кейсе. + Ноут = и вы имеете на любой площадке СВОЙ звук.
Тогда важнее понять вашего потребителя, я, к примеру, рассматриваю это исключительно для постоянной схемы, студийной работы и никаких "переключений". Настроил как нужно и потом уже играешь обработками и получаешь нужный результат. Именно поэтому как апгрейт студии смотрю что-то вроде RME UFX+ в паре с Ferrofish A32..
 
Тогда важнее понять вашего потребителя
Так описанная мной схема (если девайсы качественее и дешевле конкурентов) должна удовлетворить ЛЮБОГО. разве нет?
Один раз поставите в Рэк нужное вам кол-во девайсов, настроите - и пользуйтесь.
Или вы считаете, что 32 канала в одном корпусе будут дешевле чем в 4-х? Это не так!
 
  • Like
Реакции: mannergame
Ещё немного новостей.
Создан более-менее работающий Core Audio драйвер для нашей технологии....
Также сделан (пока с минимальными органами управления) Контролер для Mac OS - можно поменять частоту дискретизации и хвостовой буфер (не путать с буфером Core Audio - который традиционно задаётся в DAW).
Core Audio iPAudioPro 001.gif

В общем Дима конечно может рассказать подробнее и технически грамотным языком, но - я теперь понимаю свои тесты 8-и летней давности, когда сравнивал производительность ASIO vs Core Audio.....
К сожалению, сама конструкция Core Audio не позволит приблизится к тем задержкам экстремальным (с нашим девайсом), которые я показывал выше...
У Core Audio совсем иной механизм чем у ASIO и в нём, кроме основного буфера есть ещё буфер влияющий на входной сигнал.
В общем, если на ASIO результирующая задержка складывается из буфера ASIO и хвостового буфера самого девайса (который влияет на воспроизведение без потерь),
то на Маке в Core Audio добавляется ещё, скрытый от глаз пользователя (мы его откроем, как параметр для экстремалов :) ), inputBuffer нижний предел которого определяется беспроблемной записью (входом).
Мы конечно будем заниматься поисками решений по оптимизации (минимизации) этих величин, но пока - Core Audio раза в два "тормознутее", чем ASIO.

PS: Перепроверил свои выводы на примере ASIO и Core Audio драйверов у RME MADI - те же яйца, при равных настройках задержка на Core Audio больше - и я теперь знаю за счёт чего.
 
Последнее редактирование:
то на Маке в Core Audio добавляется ещё, скрытый от глаз пользователя (мы его откроем, как параметр для экстремалов )
Только для вашего драйвера, или можно для любого устройства?

PS: Перепроверил свои выводы на примере ASIO и Core Audio драйверов у RME MADI - те же яйца, при равных настройках задержка на Core Audio больше - и я теперь знаю за счёт чего.

Ну да, на всех PCIe и не только картах задержка на маке немножко поболее будет за счет дополнительного буфера. На экстремальной по задержкам Dante карте на Windows при буфере 32 семпла задержка при 48000 составляла 0.7ms на вход и столько же на выход, итого 1,4 ms roundtrip. На маке при таком значении буфера она составляла 2.8 ms. Но зато на MacOs DPC не влияют на аудио.
 
Только для вашего драйвера, или можно для любого устройства?
К другим в драйвер мы не залезем, да и нет смысла наверное - скорее всего они его ставят минимально возможным с не большим запасом и твикать его особого смысла нет.

На экстремальной по задержкам Dante карте на Windows при буфере 32 семпла задержка при 48000 составляла 0.7ms на вход и столько же на выход
Не может быть на Dante симметричной задержки - это они брехню показывают в DAW. Да и у всех производителей и всех технологий, кроме основного буфера, который может менять пользователь, есть хвостовой буфер увеличивающий задержку выхода.... Просто у PCI Ex карт он минимальный, около 18-32 сэмплов, а в таких технологиях как Dante его приходится часто ставить по больше и к нему ЕСТЬ доступ у Пользователя.
А вот в не зависимости от этих типов буферов в Коре аудио есть ещё один и без него Коре Аудио тупо не будет работать - и к нему у пользователя ни одного аудио девайса производители доступа не дали.
 
Не может быть на Dante симметричной задержки - это они брехню показывают в DAW. Да и у всех производителей и всех технологий, кроме основного буфера, который может менять пользователь, есть хвостовой буфер увеличивающий задержку выхода...
Я бы не писал этого, если бы не делал замеров. При измерении добавилась задержка самой сети Dante, которая в моем случае составляла 250мкс. Итого получилась общая задержка 1.4 ms для карты, 0.7ms буфер 32 семпла для DAW плюс 0.25ms для сети Dante, в итоге общее время прохождения сигнала составило 2.35ms. Это проводился замер без учета ADC\DAC.
 
@Radiator, померять отдельно входную, а отдельно выходную задержку вы ни как не могли.... по этому - если в DAW карта отдаёт симметричную задержку - это, повторюсь, не правда даже для PCI- Ex карт.
И как вы меряли без AD/DA? Поставили Loop в контролере Dante?
Померьте все же с реальным проводом замыкающим вход на выход, задержку на AD/DA можно узнать по даташиту на микросхемы DA и AD. Тогда это будет правда.
Но и в этом случаи вы не выясните какая задержка по входу, а какая по выходу.
 
@Aleksandr Oleynik, ладно, опишу более доступно. В StudioOne нарисовал единичный семпл, он отправлялся далее по всей цепочке Данте и принимался обратно в S1 на другой канал. Разница между отправленным и записанным импульсом составила 2.35ms при 48000кгц и 32буфере Studio One.
Так лучше?
P.S Сигнал подавался на пульт Digico S21 DMI Dante по Данте протоколу и обратно.
 
Последнее редактирование:
Что здесь не так?
Да много чего не так.
Смотрите - вы намеряли по цифре раундтрип = 2,35 мс. На 48 kHz - это 112,8 сэмпла - даже тут уже не так, не бывает задержка в не целое число сэмплов.
Вы выставил 32 сэмпла буфер - и написали, что сама сеть Dante даёт 0,25 мс - это (на 48kHz) 12 сэмплов. Значит при чисто цифровом буфере вы должны были бы получить задержку = 32+32+12=76 сэмплов, и это (на 48kHz) = 1,58(3) мс. Вы же намеряли 2.35 мс ~112 spl. От куда же взялись ещё 112-76=36 сэмплов?

Studio one честно написал входную и выходную задержку карточки Pcie.
К Studio one претензии нет и быть не может - она написала ТО, что сообщил ей драйвер, а вот драйвер сообщил БРЕХНЮ!
[DOUBLEPOST=1551094298][/DOUBLEPOST]Кстати, наш девайс, без всяких специализированных Ethernet карт, через обычную комповую эзернет карту, даёт по цифре на 32 сэмплах буфере и 48 kHz-ах, легко общую задержку = 80 spl, это в 1,4 раза лучше чем Dante :)
 
Последнее редактирование:
От куда же взялись ещё 112-76=36 сэмплов?
Я понятия не имею откуда, может это какой нибудь буфер карточки DMI Dante или карточки Focusrite Dante.

Кстати, наш девайс, без всяких специализированных Ethernet карт, через обычную комповую эзернет карту, даёт по цифре на 32 сэмплах буфере и 48 kHz-ах, легко общую задержку = 80 spl, это в 1,4 раза лучше чем Dante

Ну это здорово, главное чтобы на таком буфере и задержке он работал стабильно, как это делает Focusrite. Да и не забывайте, Focusrite это 128/128 каналов аудио на 96кгц, и все микширование каналов в ней выполнено на своем собственном FPGA, а не на CPU.
 
Последнее редактирование:
Я понятия не имею откуда, может это какой нибудь буфер карточки DMI Dante или карточки Focusrite Dante.
А я уже имею! Это тот самый хвостовой буфер контролера Dante, без которого он работать не будет и изменение размера которого они Пользователю не дали.

главное чтобы на таком буфере и задержке он работал стабильно, как это делает Focusrite.
У меня всё более чем стабильно работает и на 16 spl буфере ASIO и 16 spl хвостовом - что даёт общую задержку по цифре = 48 spl = 1 ms! НО!!!!! Только на Винде, с ASIO.
 
  • Like
Реакции: Radiator
@Aleksandr Oleynik, ваш драйвер вывезет 128/128 каналов аудио 96кгц при таком буфере даже без плагинов? Мощность CPU не берем в расчет, ибо она на Focusrite нужна только для обработки плагинами, а не на маршрутизацию и роутинг каналов. Если так, то это вообще бомба.
 
ваш драйвер вывезет 128/128 каналов аудио 96кгц при таком буфере даже без плагинов?
Безусловно НЕТ, и не должен. Чем выше частота дискретизации, тем больше будет буфер, на Dante тоже.

Мощность CPU не берем в расчет, ибо она на Focusrite нужна только для обработки плагинами, а не на маршрутизацию и роутинг каналов.
При повышении частоты и кол-ва используемых каналов вам и на Данте прийдётся поставить буфер больше.
Но повторюсь, я ведь пишу об экстремально низких задержках на грани....
 

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