Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Opublikuj swoje zlecenie za darmo i otrzymaj oferty od wykonawców freelancerów już minutę po opublikowaniu!

Разработка WDM Audio драйвера для Аудио Девайса

1306 PLN

  1. 141  
    15 dni1306 PLN

    Здравствуйте, готов выполнить заказ.
    Быстро и качественно.
    Опыт работы есть.

  2. 1 oferta jest ukryta
  • Profil został usunięty
    27 kwietnia 2019, 16:29 |

    Заменить категорию Прикладное программирование  на Системное программирование будет нелишним: ваш проект - один из немногих, который в эту категорию идеально вписывается 🙂

  • Aleksandr Oleynik
    27 kwietnia 2019, 19:27 |

    Спасибо! Попробую сделать


  • Aleksandr Oleynik
    27 kwietnia 2019, 19:28 |

    Изменил

  • Igor Lyalchenko
    27 kwietnia 2019, 19:49 |

    А конкретнее, под какую windows нужно писать драйвер? Давно не писал в ring0

    С тех пор и драйвера уже вынесли то из  нулевого кольца, на сколько я знаю. Но написать в ядро это крутая мысль... Очень крутая.

    Я не в Киеве и с профессиональным аудио оборудованием никогда не сталкивался. Соответственно  кроме всего прочего ещё и об ASIO имею самое смутное представление. Но люблю вникать в новое. Если не пугает очень длительное написание то буду рад. О задаче имею представление где начинать искать. Это и интересно ))

  • Igor Lyalchenko
    27 kwietnia 2019, 20:02 |

    А почему не думали, если это требует максимум производительности, написать простенькую серверную ОС, с минимальным функционалом и упором на конкретное железо? Может быть проще на самом деле. Функционал конечно будет не такой разнообразный как у готовой ОС, но я так понимаю цель обработка конкретно звука на лету и максимум производительности именно на это.  Надо хорошо подумать. Писать в ядро готовой ОС со своими требованиями по безопасности или написать новую без поддержки лишних устройст.. магический ring0 заставляет задуматься о смысле жизни..

  • Aleksandr Oleynik
    28 kwietnia 2019, 12:21 |

    Программы, которые нужно написать, должны работать начиная с Windows 7 и выше.
    На сколько я понимаю, то это и не совсем драйвера, так как они не будут работать с аппаратной частью девайса - только с цифровыми данными поступающими на сокет и в него передающиеся, хотя запускать их нужно именно как драйвера.
    Код, который получает и передает данные от девайса (девайсов) в саму серверную часть - там простой, и его даст автор самой технологии. Это для WDM-драйвера. Как писать сам WDM-драйвер звуковой подсистемы - это програмист должен знать. Но ввод-вывод именно данных - не его проблема.
    Что касается переноса серверной части ASIO в ядро - то там, в общем-то, должно быть достаточно просто все (она ведь уже написана в юзерс спэйсе) - там работа с сокетами, shared memory, примитивами синхронизации Windows и ничего больше. Никакой прямой работы с аппаратной частью там нет.

  • Aleksandr Oleynik
    28 kwietnia 2019, 12:29 |

    Созданный Аудио Девайс будет работать со стандартными операционками и так называемыми - DAW (Digital Audio Workstation) - Так что писать собственную ОС под это нельзя.
    Кстати, подд Mac OS - Core Audio драйвер уже написан и проходит отладку.

  • Igor Lyalchenko
    28 kwietnia 2019, 12:33 |

    А через сетевую будет проходить (проходят) битрейты которые нужно только передать куда надо и все? Дополнительно (кодировка/обработка/не знаю что бывает) у этой части не требуется?

    Почему выбор на TCP/IP а не UDP или хотя бы "голый" TCP? Где подвох ?

    Какая пропускная способность требуется при передаче данных (в штуках одновременно подключившихся клиентов)? 

    Реализация сетевой части отдельно от аудио рассматртвается?

  • Aleksandr Oleynik
    28 kwietnia 2019, 12:43 |

    Я уже писал выше -
    код, который получает и передает данные в саму серверную часть - уже есть!
    Так что и передавать ни чего не нужно и тем более не нужна кодировка/обработка/и т.д.

    Почему TCP/IP а не UDP - потому как UDP протокол передачи данных без подтверждения, а нам ОБЯЗАТЕЛЬНО нужно чтоб данные дошли. Чтоб это реализовать с UDP нужно писать свою систему подтверждений, что сведёт на нет все преимущества UDP.
    Наша технология гарантирует доставку Аудио данных до 32-х кратного перепосылания не дошедших. При этом это очень низколатенсный интерфейс, который по производительности УЖЕ догнал Аудио Девайсы работающие на PCI-Expres-е.

  • Igor Lyalchenko
    28 kwietnia 2019, 12:48 |

    WDM то WDM.. задача ж не заставить пищать карту за 0,5$ мешок без претензий по качеству. Можно хорошо облажаться если никогда не сталкивался с очень схожей задачей. Что касается опускать работу с сетевой картой на уровень ядра (я правильно понял? WDM с кольца пользователя то туда никак не запихнем) то вопрос а действительно ли надо? Сокеты это уже работа через драйвер. Это не ядро. Ring1, ring2 но не ядро. С другой стороны тоже вопрос - сокеты позволяют пропускать трафик без проблем с большой скоростью и гигантским колличеством единовременных соединений. Сейчас как раз пишу такой многопоточный TCP сервер задача которого не принимать и удерживать кучу входящих подключений а именно обслуживать (устанавливать порарные соединения через сервер)

  • Igor Lyalchenko
    28 kwietnia 2019, 12:54 |

    Пишу как службу. Не драйвер. 

  • Profil został usunięty
    28 kwietnia 2019, 18:56 |

    Интересная задача. А какая задержка у Вас сейчас получается, например, от аналогового входа, или прихода в DAW сообщения от MIDI до аналогового выхода? С учётом хотя-бы одного перезапроса по TCP, хотя-бы без промежуточных свитчей и роутеров. И какую задержку вы хотели бы получить, переписывая драйвер для ядра?

    Зависит ли эта задержка от сетевого адаптера, его драйвера, реализации TCP в ОС?

  • Aleksandr Oleynik
    28 kwietnia 2019, 19:05 |

    Ну MIDI тут не при чём, MIDI живёт отдельным потоком...
    А вот раундтрип AD/DA сейчас минимальный могу показать - image

  • Profil został usunięty
    28 kwietnia 2019, 22:22 |

    MIDI-звук когда-то синтезировался аудио-картами. Сейчас -  только ЦП через DAW или специальный программный синтезатор. И задержка от нажатия клавиши до появления звука очень важна. Без ASIO или JACK играть невозможно.


    Да, задержка 78 сэмплов впечатляет. Сравнима с собственной задержкой фильтров в кодеке. Это без TCP-перезапросов?

  • Aleksandr Oleynik
    28 kwietnia 2019, 23:11 |

    По поводу midi - он тоже есть на борту и тоже передаётся по тому-же TCP/IP.
    MIDI передаётся от внешних клавиш через наш девайс в DAW (не через ASIO конечно) и там в VSTi инструменте формируется уже аудио и далше через ASIO в сокет и Ethernet на наш девайс и на DA.
    Задержка тут считается как время прихода midi сообщения в DAW (не могу точно его назвать, так как его очень сложно померять, но MIDI тот ещё тормоз, как протокол), ну а потом это ASIO буфер + Tail буфер и около 6 сэмплов на DA.

    С TCP перезапросами, перепосылами - тут всё организованно вот как -
    поскольку ЗАПИСЬ это СВЯТОЕ и потерять какую то часть записи на ответственном концерте или в студии - это преступление, сделан механизм при котором, даже если пакет (кстати он по 8 сэмплов) не дойдёт, девайс его будет ещё 32 раза пробовать доставить - и тут понятно, что доставка опоздает на это кол-во пакетов. А вот воспроизведение, ну или директ мониторинг через DAW - будет с артефактами в этом месте.
    Но поскольку ЗАПИСЬ важнее во много раз - сделано вот так.
    Ну и потом - по факту мы же видим (есть мониторинг дропаутов) и слышим эти дропауты в звуке и можем поднимать буфер до ситуации, когда всё в полном порядке - механизм перепосыла для всякого рода ЧП.

  • Aleksandr Oleynik
    28 kwietnia 2019, 23:18 |

    78 сэмплов это не предел.
    Если комп мощный, то можно и вот так -
    image

  • Aleksandr Oleynik
    28 kwietnia 2019, 19:09 |

    Желание переписать ASIO сервер в ядро не продиктованно необходимостью ещё меньшей задержки, она и так сравнима с PCI-Expres Audio картами RME - лидиром на рынке Pro Audio. Это желание продиктованно необходимостью повышения стабильности работы, особенно в условиях мультиклиентных решений.
    Ну и, если честно, мы ещё не тестировали как следует ИМЕННО мультиклиентный ASIO, он только только сшивается в то, что можно тестировать кому-то кроме разработчика. Но даже если всё будет ОК - хотим, чтобы ASIO сервер работал в ядре операционки.
    Ну и - всё равно очень нужен WDM драйвер.

  • Aleksandr Oleynik
    28 kwietnia 2019, 19:14 |

    Что касается свичей, роутеров, эзернет адаптеров и прочего -

    чем "глупее" и дешевле свич - тем лучше, роутер ставить между девайсами и компами (решение у нас ведь сетевое и как девайсов наших, так и компов, работающих с ними - может быть много) не желательно - в них много всякого, с чем прийдётся разбираться, что влияет на риалтайм, эзернет карты - самые обычные, но мы их твикаем немного (что, кстати, тормозит работу с Core Audio - Так как Apple умнее всех на свете и не даёт доступ ни к каким настрокам аппаратным эзенет карт).

  • Profil został usunięty
    28 kwietnia 2019, 22:32 |

    Меня, на самом деле, Ваше решение интересует, не как исполнителя, а как пользователя. USB даже с хабами сильно далеко не провести, а Ethernet даёт ещё и бесплатную гальваническую развязку на обоих концах.

  • Igor Lyalchenko
    28 kwietnia 2019, 22:37 |

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

  • Aleksandr Oleynik
    28 kwietnia 2019, 23:20 |

    Игорь, а может всё же глянете исходники того, что написанно в Юзер Спейсе?
    Имею в виду ASIO сервер.
    Может не так страшен чёрт как его малюют?
    Где-то в течении недели ASIO сервер будет причёсан...

  • Igor Lyalchenko
    29 kwietnia 2019, 0:03 |

    Страшно в данном случае подвести. Действительно страшно. Так же как и ваш программист, я смогу рано или поздно это сделать. Но так же это с ходу будет не быстро. Только ваш уже это прощупал и прочувствовал а я начну разбирать сначала. Хотя глянуть не откажусь. Интересно.

    А про wdm вы таки думаю очень правы и если вопрос что под конкретной ОС что то не так, то тоже думаю вопрос решается переписыванием wdm  драйвера и в ядро лезть не придется хотя бы на первых парах... 

    Но и тут НО - это ж не pc-спикер пищать джаз заставить... с какого раза я напишу лучше чем есть тоже большой вопрос, а опыта в этом и нет. 

    Исходники гляну с удовольствием. Хоть опыт визуальный приобрету и узнаю что такое ASIO чуть больше чем просто "слышал что есть"

  • Aleksandr Oleynik
    29 kwietnia 2019, 0:26 |

    ОК, мой партнер закончит работу и я вас сведу вместе - а вдруг там не так и страшно все для вас будет.

  • Aleksandr Oleynik
    28 kwietnia 2019, 22:56 |

    Девайс уже проходит стадию Тестирования... Мы сделали можно сказать - действующий макет... Кстати, тут нашли и дизайнера в команду.image

  • Igor Lyalchenko
    29 kwietnia 2019, 0:05 |

    Девайс красавец. Хоть на моей рабочей машине и колонок то нет.. ну не слушаю я звуки. Девайс шикарно выглядит.

  • Aleksandr Oleynik
    28 kwietnia 2019, 22:59 |

    Около полутора десятков девайсов разосланы звукорежам и музыкантам в разные страны..., уже имеем фидбэки, которые нас радуют, но и заставляют двигаться дальше.

  • Aleksandr Oleynik
    28 kwietnia 2019, 23:22 |

    Кстати, Александр, я вижу вы из Питера?
    В Питере сейчас два наших девайса проходят тестирование. 🙂

  • Profil został usunięty
    29 kwietnia 2019, 0:17 |

    Я бы глянул. А у кого?

    На второй картинке задержка в мс такая-же.

    Для живой записи задержки действительно не принципиальны. А вот воспроизведение без ошибок и с задержкой <5 мс как-раз таки очень важно именно при игре через MIDI. Во вторую очередь - при послойной записи, когда музыкант мониторит сигнал уже с эффектами.

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

    PCIe работает с перезапросами, но они делаются аппаратно на каждом физическом соединении в дереве мостов и конечных устройств. USB-audio работает без перезапросов, зато все кодеки, подключённые к одному мастеру, работают строго синхронно, и каналы легко наращивать. А как обстоят дела с синхронностью по Ethernet?


  • Aleksandr Oleynik
    29 kwietnia 2019, 0:34 |

    Я узнаю как обстоят дела с тестированием на сегодня в Питере и отпишу.

    Один из девайсов на студии Мелодия.

    По второй картинке - а вы обратите внимание на частоту дискретизации.

    Задержки принципиальны еще для живой игры через программную обработку , и не только миди, а и аудио....

    По поводу UDP и кол-ва каналов -

    Так у нас ведь подключаешь 20 таких девайсов и все каналы в одном ASIO драйвере и видишь.... так что пакеты будут по 8 сэмплов и не сэмплом больше.

    Синхронизация у нас устроена по принципу - кто первый встал, того и тапки.

    Мастер Клок в сети всегда один из девайсов, и если его выключили - тут же станет мастером другой.


  • Profil został usunięty
    29 kwietnia 2019, 0:26 |

    В общем, за драйвер скорее всего не возьмусь - давно не брал в руки шашек, да и про виндовс почти забыл, разбираться с ASIO буду не меньше месяца. Но если Вам понадобится разработка аппаратной части, или DSP, обращайтесь. 

  • Aleksandr Oleynik
    29 kwietnia 2019, 0:35 |

    Спасибо

Aktualne zlecenia dla freelancerów w kategorii Aplikacje desktopowe

Dodać przerwy 10-30 sekund między wysyłkami e-maili

Witam! Szukam doświadczonego programisty 1C / BAS (BAF) do szybkiego rozwiązania problemu technicznego z wysyłką maili.Istota problemu: Używamy programu księgowego BAF (Business Automation Framework), edycja 2.0. Raz w miesiącu pojawia się potrzeba masowego wysyłania klientom…

Programowanie stron internetowychAplikacje desktopowe ∙ 4 dni 19 godzin temu ∙ 10 ofert

Rewersowe inżynieria konsolowych narzędzi do ankietowania kontrolerów SSD (Flash ID)

1. Cel pracy Wydzielenie interfejsu programowania aplikacji (API) do interakcji z kontrolerami SSD/NVMe z dostarczonego zestawu narzędzi konsolowych (Phison, Silicon Motion, Realtek, Maxiotek, Marvell, JMicron itd.). Wynikiem ma być działający kod w języku C/C++ lub dokładna…

C i C++Aplikacje desktopowe ∙ 5 dni 6 godzin temu ∙ 5 ofert

Modyfikacja w pracy emulatora

163 PLN

Witaj. Ściągnąłem z Internetu emulator automatu do gier gaminator cf final. Bardzo mi się podoba, ale są tam niedociągnięcia. Jest panel administracyjny, ale otwiera się swobodnie, a nie zamyka w ogóle. Zamyka się tylko razem z aplikacją. A dane po zmianach w panelu…

Aplikacje desktopowe ∙ 12 dni 20 godzin temu ∙ 10 ofert

Zleceniodawca
Aleksandr Oleynik
Ukraina Kijów  1  0
Zlecenie zostało opublikowane
7 lat temu
7 lat
153 wyświetlenia
Tagi
  • WDM Driver
  • ASIO Driver