Задержка от МИДИ клавиатуры

  • Автор темы Автор темы VAT
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
Александр, можно в мс, а не в семплах, или хотя бы частоту назовите? среднее +-
А если еще то же самое для гитары и баса - вообще было бы замечательно - чтобы знать к чему собственно стремиться. Это безо всякого стеба.
 
Позанудствую еще чуток.
стенд такой: пишем 2 канала сразу : гитару в 1й канал внешней ЗК, воспроизведенное заводим во 2й канал. Задержка получается 13мс при выборе буфера 128 и 21мс для 256. Совпадает с прогнозом Riper/ASIO практически в ноль. И тут не важно есть ли компенсация или нет. 128Gt-real.jpg 256Gt-real.jpg

Следующий стенд: пишем 3 канала сразу - микрофон лежащий на клавишах (1трек), миди и его фриз(2 и 3трек) и то что вышло на выход(4трек). Что видим: между 2/3треками(мидинота) и 4м(динамик) все те же 13 и 21 мс для 128 и 256 семплов буфера. А если взять расстояние от удара по клавише (1трек), то от него до синтезированного звука на выходе больше - надо прибавить еще 3-4мс. Удар по клавише довольно резкий - ронял отвертку c резиновой ручкой на клавишу на клавишу. Звуки рояля (P) и барабана (D). Что получается? Сквозная задержка МИДИ получилась больше прогноза ASIO/Рипера, не 10мс и 15мс, как должно быть по принятой на форуме всем понятной теории, а 17мс и 24мс при 128 и 256 семплах соответственно. Разница приличная. Где у меня ошибка - прошу ткнуть носам, а не пускаться в разглагольствования.
128-HSD-real-F.jpg 128-HSP-real-f.jpg 256HSD-real-F.jpg 256HSP-real-F.jpg

Следующий стенд - записываем миди ноту, потом проигрываем ее и записываем в аудиоканал. Практически компенсация сводит разницу к нулю. Даже иногда записанное на 1мс раньше воспроизведенного.
128D-loop.jpg 256P-loop.jpg
Если отключить компенсацию, то задержка от мидиноты до звука составит опять те же самые 13 и 21 сек. Этот эксперимент кто-то предлагал сделать, хотя интересны первые два.
Еще раз вопрос знатокам - как мне увидеть что сквозная задержка МИДИ равна только выходной задержке, т.е. существенно меньше сквозной задержки аудио - пока экспериментально получается наоборот. Эксперимент мне представляется весьма чистым. Какой стенд собрать - скажите, я соберу и выложу результат.

какие то лишние файлы во вложении - не пойму как убрать..
 

Вложения

  • 128-HSD-real-F.jpg
    128-HSD-real-F.jpg
    432,5 KB · Просмотры: 105
  • 128D-loop.jpg
    128D-loop.jpg
    365,5 KB · Просмотры: 107
Последнее редактирование:
Как человек, самостоятельно разрабатывавший MIDI-клавиатуру вместе с программой считывания клавиш, формированием MIDI и программированием USB-MIDI интерфейса попробую ряд моментов прояснить.
1)Считывание состояния клавиатуры происходит путем циклического опроса всех клавиш. Обычно с частотой не меньше 5кГц ( в моем варианте -50кГц). Т.е. полный цикл опроса всех датчиков (а их в при 88 клавишах - не менее 176 штук) происходит не дольше, чем за 0.2мс (20мкс в моем варианте)
2)Как работает считывание. При нажатии на клавишу сначала замыкается верхний датчик, затем нижний. По времени между замыканиями датчиков и вычисляется скорость клавиши, а значит и velocity. Оба датчика близки друг к другу и расположены обычно в нижней точке траектории клавиши. Так сделано, чтобы было похоже на акустическое ф-но, где молоточек обычно бьет по струне, когда клавиша практически дошла до упора. Чему как раз соответствует замыкание нижнего датчика. Т.е. все как в акустическом инструменте: дошли до нижнего датчика (стукнули по струне), и максимум через один цикл опроса, т.е. через 0.2мс контроллер клавиатуры уже знает, что клавишу нажали и может вычислять velocity и отправлять midi-команду. Вычисление velocity - действие очень простое и происходит за пренебрежимо малое время.
3)Формирование MIDI. Как уже сказали, стандарт скорости передачи 31250 бит/с. Команда note on содержит 3 байта, т.е. 24бит. Т.е. она передается максимум за 0.8мс
Итого задержка от клавиатуры+протокол передачи не превышает 1мс. Далее вся ответственность за задержки ложится уже на принимающий MIDI сообщения софт и программу, генерирующую звук, т.е. DAW+VST.
4)MIDI-USB протокол на самом деле не обязан работать с той же тактовой частотой. Т.е. при правильном проектировании скрость передачи может быть значительно выше 31250 бит/с, и задержка при передаче может стать совсем маленькой. Другое дело, что не все производители клавиатур этим пользуются. Некоторые просто дублируют в USB тоже самое, что передают по MIDI с той же тактировкой. Но в любом случае MIDI-USB не должен давать задержку большую, чем классический MIDI.
5)В случае MIDI-USB есть один нюанс. MIDI-USB реализован на основе bulk-протокола. Это асинхронный помехозащищенный протокол, который формально не обязан передавать данные в реальном времени. По такому же протоколу, скажем, идет общение с флешками и другими Mass Storage девайсами. Т.е. хост сам решает, в какой момент считать очередную поцию данных из буфера USB-девайса. На практике делает это он столь часто, что реальное время между обращениями - порядка 10 микросекунд. Само количество MIDI данных с точки зрения USB - просто ничтожно. Хотя теоретически можно так изловчиться перегрузить компьютер, или как-то понизить приоритет протокола, чтобы задержка стала ощутимой, но на практике я такого не встречал.
 
Последнее редактирование:
1,2 Некоторая буферизация уже тут должна происходить, хоть она не задерживает практически, так как клавиш может быть нажато несколько и нужно ставить их в очередь и еще отслеживать нет ли сообщений на МИДИ-ИН и буферизовать их если запустили на передачу свое сообщение. А сколько времени нажимается клавиша? - ведь чтобы чтото там намерить опрашивая с периодом 0,2мс она должна нажиматься милисекунды?
3. А стартстопов нет в МИДИ, как же оно синхронизируется? наверное все же не 8,а 10бит на байт? Но ладно - это все равно около 1мс.
5. вы хотите сказать что USB хостконтроллер сам с периодом 10мкс опрашивает МИДИ устройство по балкпротоколу (почему не по прерыванию тогда), а как же блоки аудиоданных которые идут по протоколу реального времени в это же самое время по тому же проводу в обе стороны? А другие устройства которые на том же хосте могут оказаться? Не ну можно наверное один хост контроллер отдать под МИДИ эксклюзивно, но это же трюки. Я правда ЗК тоже монопольно выделяю один хост контроллер, чтобы там не оказалось какихнить флешек и тем более USB1.1 устройств.
Ну и главный вопрос - ради чего так биться чтобы доставить МИДИ сообщение быстрее аудио? Опрашивать с периодом 10мкс.. Хотя если нажали 10клавиш одновременно - то вот уже 10мс задержка.
 
А сколько времени нажимается клавиша? - ведь чтобы чтото там намерить опрашивая с периодом 0,2мс она должна нажиматься милисекунды?

Еще раз: не важно сколько времени вы нажимаете клавишу. Задержка считается не от момента, когда ваш мозг принял решение нажать на клавишу и дал команду пальцу, а с момента, когда клавиша дошла до нижней точки, т.е. с момента замыкания нижнего датчика. До этого момента клавиша еще не нажата и никакого звука еще быть не должно по определению. Собственно, также происходит звукоизвлечение и у акустического инструмента. Между началом движения пальца и ударом молотка по струне проходит некоторое время. Но вы же не называете это задержкой.
[DOUBLEPOST=1502224486][/DOUBLEPOST]
как же блоки аудиоданных которые идут по протоколу реального времени в это же самое время по тому же проводу в обе стороны?

Блоки аудиоданных передаются как раз по другому, потоковому, протоколу, где гарантируется непрерывность, но не гарантируется 100% достоверность передачи. На один USB-порт два девайса разного типа обычно сразу не вешают.
[DOUBLEPOST=1502224646][/DOUBLEPOST]
Хотя если нажали 10клавиш одновременно - то вот уже 10мс задержка.
Да, в этом есть преимущество USB-MIDI. Аккорд передается более синхронно. Но в реальности заметить этот эффект очень сложно. Мы редко жмем на клавиши одновременно всеми пальцами.
[DOUBLEPOST=1502224760][/DOUBLEPOST]
Ну и главный вопрос - ради чего так биться чтобы доставить МИДИ сообщение быстрее аудио?
Да никто не бьется. Просто времени у компьютера на столь ничтожную операцию сколько угодно.
 
  • Like
Реакции: Sharu и EUGEN27771
"Между началом движения пальца и ударом молотка по струне проходит некоторое время. Но вы же не называете это задержкой."
- нет не называю, если посмотрите посты выше . к этому человек готов и не замечает, что делает все с упреждением, оно выверенное.
"На один USB-порт два девайса разного типа обычно сразу не вешают."
- учитывая ничтожность количества данных и необязательность транслировать их через USB быстрее чем аудио - почему не на тот же порт, тем более под обслуживание родного общего драйвера? Вот никакого смысла не вижу.. тем более что на моей ЗК и не только моей стандартный МИДИ порт присутствует.
"Просто времени у компьютера на столь ничтожную операцию сколько угодно."
- много ли мало ли, а общая задержка от удара по клавише до звука - на 3-4мс получилось больше чем общая задержка аудио в моем эксперименте, а не задержка выхода +10мкс . Но тут возможно эти 3-4мс - это как раз время опускания клавиши, от момента падения на нее отвертки. Тогда да - мы это задержкой не считаем и общие задержки по МИДИ и аудио идентичны. Попробую по эпюрам понять характерный удар клавиш по упору под ними. Раз решили что этот момент нужно считать моментом нажатия.
 
@VAT, ваш эксперемент с замером задержки - не верный, а вы от него какие-то выводы уже понастроили.
Какая бы не была выставленна задержка Аудио в ASIO, задержка прихода миди сообщения в DAW по сравнению с ней будет ничтожно мала, пишу это в который раз, но вы упорно этого не понимаете.
 
Последнее редактирование:
  • Like
Реакции: Oliver_Cray
Aleksandr Oleynik, вы вот это как мантру повторяете - этого не может быть и все.. я вам показываю результаты эксперимента по измерению задержки аудио и миди на разных буферах. И миди задержка всегда больше чем аудио. У меня, на моем оборудовании и драйверах. У вас может как-то по другому, возможно на USB/MIDI клавиатуре работающей по USB в каком то диком режиме с опросом 10мкс - но это не значит что у всех это так и сомневаться в этом не стоит. Вы или покажите ошибку у меня или предложите свою схему по измерению или эпюры вашей системы где задержка миди =0.
В каком месте неверный у меня эксперимент?
 
Последнее редактирование:
@VAT, вот если вы все сами знаете, зачем тогда вопросы задаете? Вот еще и пытаетесь других учить... А так да, тема феерическая... Ничего страшного, что у меня миди по USB интерфейсу? ))))))
 
@VAT, вот скажите, зачем мне вникать в эксперимент, доказывающий, что колёса у автомобиля квадратные, если я точно знаю, что они круглые?
Сами разбирайтесь со своим анти научным экспериментом.
Сигнал от миди клавиатуры до динамика дойдёт в двое быстрее (почти), чем аналогичный сигнал от микрофона до динамика.
 
  • Like
Реакции: Battlelore
Намасте_намасте, не возражаю против USB-MIDI..

Aleksandr Oleynik, неспортивно однако. Вы не точно знаете..
Схема замера сквозной задержки аудио тут достаточно обмусолена - единичный сэмпл на одном канале воспроизводить на другой записывать. Хотя "форма" специального сигнала используемая для этого и вызывает у меня вопросы. Я просто щелкнул по звукоснимателю- точность не пострадала.
Я полагаю есть аналогичная схема и для замера задержки МИДИ? Давайте ее. Ведь откуда то взялась эта догма?

Если у вас в системе МИДИ проходит на VSTi "мгновенно" - это не повод делать из этого аксиому. У меня в ASIO видимо по другому - и мне нравится пусть бOльшая, но стабильная задержка, чем неопределенная "мгновенная".
Может добавите к своим советам поменять компьютер и звуковую плату, что вы уже сделали в начале темы, еще и совет поменять МИДИ клавиатуру и ее драйвера, так как это не укладывается в религию форума?
 
Может добавите к своим советам поменять компьютер и звуковую плату, что вы уже сделали в начале темы, еще и совет поменять МИДИ клавиатуру и ее драйвера, так как это не укладывается в религию форума?
Извините за грубость, но могу еще посоветовать поменять мозг.


Я полагаю есть аналогичная схема и для замера задержки МИДИ?
А что мешает соединить MIDI out-in. Воспроизводите миди-ноту из Рипера через выход и записываете через вход. Разница между ними должна дать труЪ миди-задержку.
 
ибо ваш совет никак не относится к делу
Сколько человек вам должны сказать что вы несете охинею, пока до вас дойдет? Уверен, если весь форум вам скажет то же самое что и @Aleksandr Oleynik , вы все равно будете спорить и доказывать обратное, если вам так хочется верить в то что городите,никто вам не запрещает, но если вы думаете, что кто-то даст вам ответ, который вы так хотите услышать , то вам не сюда
 
Ну приведите хоть одно доказательство своей правоты. Если вас хоть 100 - почему я должен не верить своим глазам.
Есть новый тест. Приглашаю User811 заценить.
Я переключил Рипер на ввод Миди сообщений через SB. Вроде теперь ASIO TASCAM не должны влиять, была у меня такая гипотеза.
Поскольку 5конт порт на клаве освободился я завел миди прямо на гитарный вход ЗК (ослабил чуток конечно).
Пишем 3 трека сразу (буфер 256, задержка 5,8/15 = 21мс)
1трек. Аудио канал ЗК 1 - пишем как аудио МИДИ сообщение с выхода МИДИклавы - те самые 3 байта - они действительно по замерам имеют длину 1мс, форма конечно искажена.
2трек. записываем это МИДИ сообщение как мидиноту, выводим его через VSTi через выход ЗК
3трек. записываем через аудиоканал ЗК 2 синтезированный звук
256-SB-M.jpg

Что видим? задержка от миди ноты - те же 21мс. задержка от начала МИДИ сообщения - 20.
Я не могу записать в одном тесте еще и удар по клавише - только 2 аудиоканала в ЗК. но если писать вместо МИДИ сообщения - микрофон - то картина идентична предыдущим записям.
256-SB-A13.jpg
21мс задержка мидинота-звук. Если совместить 2 картинки - то можно прикинуть что от касания клавиши до посыла сообщения ~5мс.
На самом деле предполагаю - ~4мс клавиша продавливается потом ~1мс обработка контроллером. Обработка контроллером должна входить в задержку в отличие от продавливания клавиши, так что Рипер думаю компенсирует с точностью до милисекунды.

В любом случае - минимум, что тут можно насчитать, если считать что контроллер клавиатуры работает "мгновенно" - это 20мс задержку по МИДИ. По аналогу напомню - 21мс. Где тут задержка по Миди чуть больше половины от аудио?

Да - МИДИ вроде как не должно иметь отношения к ASIO но драйвера ЗК и порт общий. В последнем эксперименте все разное - но результат нисколько не поменялся.
 

Вложения

  • 256-SB-M.jpg
    256-SB-M.jpg
    406,3 KB · Просмотры: 109
Последнее редактирование:
ВАТ, вы не понимаете базовых вещей, поэтому эти тесты ничего не стоят, а выводы ошибочны. То с чем вы имеете дело - это АУДИО задержка, то есть время, которое нужно вашей системе и вст-синтезатору чтобы синтезировать и вывести звук.

Если вы действительно считаете что у миди клавиатуры есть задержка, единственный настоящий способ её измерить - это снять высокоскоростной камерой в одном кадре нажатие пальцем клавиши и появление миди-ноты в рипере на экране, хотя у матриц экранов тоже есть задержки.
 
Zerocool - вам не стоит пробовать, а мне можно - я бывший электронщик. Почему нет то? это ж осциллограф по сути, запоминающий.
Fedor_Bird - о каких базовых вещах вы говорите? мы пишем на DAW на два канала два сигнала одновременно и видим на его линейке (в правом нижнем углу результаты замера того что выделено в мс). Замеров два - от начала посылки миди-сообщения из клавиатуры до звука (20мс) и от касания клавиши (прибавляет ~5мс на продавливание и обработку контроллером клавиатуры) до звука.
 
Последнее редактирование:
Миди - это протокол передачи цифровых данных. Понимающий этот простой факт человек не станет подключать кабель для передачи ЦИФРОВЫХ данных в АНАЛОГОВЫЙ вход звуковой карты, ибо это ничего не даст, а только покажет задержку аудио-входа звуковой карты.

Что вы можете сделать - так это записать микрофоном звук нажатия клавиши, вместе с нотами с миди входа. Вы увидите,что аудио с микрофона появляется в проекте позже, чем миди-нота, и разница соответствует задержке аудио-входа.
 
  • Like
Реакции: Oliver_Cray
Я догадывался что элементарные вещи окажутся для вас новостью. Цифру в аналог!! А цифровой сигнал на осциллографе наблюдать тоже нельзя?
Понимаю конечно что вам тяжело расставаться со своими иллюзиями по задержкам - ну да ладно.
 
VAT
Вы бывший электронщик , а я текущий системный инженер , повторюсь - вы упороты :)
Вам уже стопятьсот раз объяснили - , вы меряете неизбежную задержку аудио.
Воткните миди в миди - и никакой задержки не будет ..
 
)))
ждем User811

"Но сути не меняет, в любом случае посылать миди сообщение, как аудио это ноу хау"
- а вы знаете что когда скимером пи@*ят данные с вашей магнитной полосы на карточке цифру пишут как мп3? И не потому что идиоты, а наоборот. Это позволяет восстановить данные запутанные системой противодействия мошенничеству.
 
Последнее редактирование:
Итак. Что бы я сделал в этой ситуации. Просто переустановил бы систему нахер. Сэкономил бы время, это раз. Занимался бы уже делом, это два. Хотя, с другой стороны, лишил бы камрадов стольких позитивных моментов! @VAT, пиши ИСТЧО!
 
  • Like
Реакции: Oliver_Cray
Статус
В этой теме нельзя размещать новые ответы.

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