Способы устранить задержку WDM (Windows Drivers Model)

  • Автор темы Автор темы spoty76
  • Дата начала Дата начала
  • Теги Теги
    wdm

spoty76

New Member
21 Июн 2024
6
0
1
28
Всем доброго времени суток.

Столкнулся с нестандартной задачей: нужно устранить задержку в WDM устройствах. Имеется караоке-программа, которая исключительно использует WDM input устройства в Windows и сама выбирает их. У меня нет возможности изменить аудиопроцесс, так как программа всегда выбирает WDM input device. Проблема в том, что все WDM устройства, которые я подключаю к ноутбуку, приводят к слишком большой задержке. Например, Focusrite 2i2 аналоговый вход через WDM имеет задержку в 160 миллисекунд, а подключение микрофона к встроенной аудиокарте ноутбука — 100 мс. Требуется задержка около 30 мс, и только через WDM input, так как программа не принимает другое.

Для сравнения, реальная задержка Focusrite в FL Studio через драйвер Focusrite Asio составляет около 3 мс. Однако перенаправить I/O из FL Studio в Windows при использовании Focusrite Asio невозможно, так как можно использовать только I/O самой аудиокарты.

Я пробовал различные варианты с минимальным buffer size и настройками задержки:

FL Studio ASIO4ALL: ASIO4ALL input = Focusrite, ASIO4ALL output = Virtual Audio Cable input. Внутри Windows Virtual Audio Cable input перенаправляет в Virtual Audio Cable output. Этот вариант не сработал из-за высокой задержки на входе в сам ASIO4ALL из Focusrite analog input. То есть, задержка возникала на input стадии в FL Studio ASIO4ALL даже на минимальных настройках буфера, так как ASIO4ALL изначально берет input из WDM focusrite.

Voicemeeter: через микшер с драйвером Focusrite Asio я смог скопировать стрим внутри аудиокарты в виртуальный стрим в WDM устройство. Однако, если в кольце (analog input -> analog output) через микшер с использованием Focusrite Asio задержки не было, то скопированный виртуальный стрим в Windows имел такую же задержку, как если бы я просто использовал WDM Focusrite input.

ASIO Bridge VB HI-FI Cable: виртуальный кабель, который позволяет использовать Focusrite Asio. Input получаю от Focusrite, а virtual output в WDM — та же самая задержка.

В целом, я пытаюсь найти хитрое решение этой проблемы, но пока безуспешно. Обращаюсь за помощью. Может, у кого-то есть идеи?
 
Вы перепробовали все возможные варианты, из того, что пришло мне на ум. Даже виртуальный кабель и "асио фор ол".
Вообще, с точки зрения программирования вы пытаетесь заставить WDM работать, как ASIO. Я так понимаю в программе изначально нет выбора как выводить звук, и использование WDM прошито намертво. Думаю (если правильно понял), тут уже ничего не поделать.

Если б можно было WDM заставить работать со скоростью АСИО, то АСИО б никому и не нужно было бы.

Т.е. если звук выводится сначала на ВДМ, с соответствующей ВДМ-у задержкой, то нет смысла перенаправлять потом на АСИО, т.к. время в миллисекундах уже прошло.
 
  • Like
Реакции: spoty76
248911
 
  • Like
  • Sad
Реакции: spoty76 и presly
spoty76

Таких способов не существует , WDM - не предназначен для работы , с низкими задержками , в нем всегда большой буфер по умолчанию )
мосты asio - wdm , тоже бесполезны ..., ну собственно в этом вы сами убедились..
 
  • Like
Реакции: spoty76 и presly
Возможно ерунду напишу, дело давно было.. Карта Waveterminal 192, вроде.. Её вдм дрова работали как и асио. Кажется на кейкуоке, разницы не было никакой. Почему так, тогда не понял, помню что удивило сильно, но разбираться - не то время было))
 
Имеется караоке-программа, которая исключительно использует WDM input устройства в Windows и сама выбирает их

Зачем она Вам?)) Что она вообще делает?)) Чтобы петь, достаточно включить минус, и настроить правильную обработку вокала в реалтайме с минимально возможной задержкой. Поэтому единственная необходимая "караоке-программа" это DAW с нужными плагинами на дорожке. Где, само собой, необходимо использовать исключительно ASIO. Делайте и пойте на здоровье.

Ничего у Вас с WDM не получится, задержка будет совершенно неприемлемой))
 
Для сравнения, реальная задержка Focusrite в FL Studio через драйвер Focusrite Asio составляет около 3 мс. Однако перенаправить I/O из FL Studio в Windows при использовании Focusrite Asio невозможно, так как можно использовать только I/O самой аудиокарты.

Вот здесь чуть подробнее, что и куда Вам нужно перенаправить?)) Что Вы хотите по итогу?
 
Мидяшки играет наверное... типа минуса)) Видел много лет назад такое))
Собственно, ничего не мешает эту караоку использовать как плеер, если уж так хочется, а обработку голоса сделать в DAW нормальным образом.
 
Возможно ерунду напишу, дело давно было.. Карта Waveterminal 192, вроде.. Её вдм дрова работали как и асио. Кажется на кейкуоке, разницы не было никакой. Почему так, тогда не понял, помню что удивило сильно, но разбираться - не то время было))
Не ерунда, так как действительно у разных WDM дров разная задержка. У друга RME babyface и с ней задержка лучше чем у focusrite, но все равно ощутимая.
 
Зачем она Вам?)) Что она вообще делает?)) Чтобы петь, достаточно включить минус, и настроить правильную обработку вокала в реалтайме с минимально возможной задержкой. Поэтому единственная необходимая "караоке-программа" это DAW с нужными плагинами на дорожке. Где, само собой, необходимо использовать исключительно ASIO. Делайте и пойте на здоровье.

Ничего у Вас с WDM не получится, задержка будет совершенно неприемлемой))
В прогу встроен искуственный интеллект который очень хорошо оценивает пение в реальном времени, тоесть буквально каждую ноту оценивает и показывает на экране попал или нет, оценивает вибрато голоса и качество переходов нот. Но прога расчитана на лимитированное использование, типо просто подключить USB микрофон и петь через него в колонки ноутбука (хотя и это плохо работает из-за WDM). А сборка то у нас zero latency: выход из программы идет в микшер и оттуда на колонки, микрофоны тоже в микшер с эффектами и всеми прелестями. Но отдельно через xlr splitter я пытаюсь послать аудио в программу, и вот тут наступает проблема с WDM.
 
Вот здесь чуть подробнее, что и куда Вам нужно перенаправить?)) Что Вы хотите по итогу?
Если я использую focusrite asio драйвер через любой DAW, допустим FL studio, то задержка нулевая. Но через этот драйвер можно использовать input output только самого аудио интерфейса. Это отличается от ASIO4all который позволяет выбрать разные input output, например система и аудио интерфейс. Конечный желанный результат это чтобы в панели windows появился девайс звукозаписи с очень маленькой задержкой, которую сможет выбрать программа.
 
Возможно это клубный вариант , там не все так просто , там и картинка на экран выводится , и база песен , и т д ...
И да и нет. Там миди и база песен и самое главное оценка пения в реальном времени с использованием искуственного интеллекта, из-за чего и весь кипиш то и происходит, с передачей звука в реальном времени у нас проблем нет, но искуственный интеллект очень плохо оценивает с задержкой более 50мс. Эта прога это порт под винду и ps4, в реале технология используется на дорогих караоке машинах. Порт написали чтобы привлекать простых людей приходить в настоящие караоке клубы, поэтому программа специально лимитирована (из-за чего весь кипиш с WDM). Но мы хотим это вывести на круче уровень для себя.

Я понимаю что звучит как какая то таинственная программа))) но называть я не хочу потому что это большой разработчик и он впринципе запрещает коммерциальное использование, а все что я делаю звучит как коммерциальное использование (хотя это просто хобби чекнутого аудио любителя).
 
Не ерунда, так как действительно у разных WDM дров разная задержка. У друга RME babyface и с ней задержка лучше чем у focusrite, но все равно ощутимая.
Нет, была как у асио, или сравнима по крайней мере. Дрова (и карта) позиционировались для работы с гигасемплером, поэтому с задержками норм. Не только вейвтерминал с ними шёл, поищите по знакомым старые карты, может заработает.
 

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