Добавляет ли mac os задержку 20 мс в midi?

Я изучаю миди-производительность на OS X

Моя тестовая установка представляет собой патч puredata, который отправляет заметку на миди-интерфейс, а затем измеряет время, необходимое для возврата на другом.

Я пробовал различное оборудование и программное обеспечение в качестве интерфейсов ввода / вывода:

  • бидуле (программное обеспечение)
  • пользовательские nodejs с node-midi
  • интерфейс irig usb-midi с кабелем midi между входом и выходом
  • специальное программное обеспечение, созданное с помощью библиотеки c++ rtmidi
  • os x встроенная шина IAC

Я всегда получаю задержку от 10 до 30 мс для кругового пути (чистые данные MIDI OUT -> интерфейс -> puredata MIDI IN), поэтому я думаю, что на входе теряется от 5 до 15 мс, и столько же на выходе.

Я попробовал ту же настройку с abeton live вместо puredata и получил тот же результат.

Есть ли у кого-нибудь такой же результат или, лучше, обходной путь?

Если бы это было так, я уверен, что знал бы, потому что 20 мс - это МНОГО. Какова была ваша установка Ableton Live? Я постоянно использую Live в качестве MIDI-маршрутизатора и снова чувствую, что считаю 20 мс смехотворно раздражающими и невозможными для воспроизведения. Какие именно MIDI-интерфейсы вы используете? Вы пробовали/использовали USB MIDI-контроллеры?
Midi всегда будет генерировать не менее 10 мс на устройство. Он последовательный и не имеет сквозной функции, поэтому он всегда будет повторной передачей — и это без дополнительной обработки.
@ToddWilcox - мой комментарий касается самого интерфейса. Внутренняя маршрутизация в наши дни я вообще не ожидаю каких-либо заметных задержек. [Хотя прошло много лет с тех пор, как мне приходилось последовательно подключать миди-клавиатуры или вообще иметь дело с каким-либо миди-выходом. В эти дни у меня есть одна мастер-клавиатура, все остальное в программном обеспечении ;)
@Tetsujin Может быть, я переоцениваю, насколько различимы 10–15 мс. Я знаю, что со звуком через компьютер более 8 мс меня довольно раздражает. Я просто подключил старую MIDI-клавиатуру с помощью кабеля DIN к интерфейсу Thunderbolt, прогнал ее через Live, а затем снова подключил к синтезатору с USB MIDI и... но опять же, возможно, я просто не заметил бы этого так сильно, как я думаю. Это еще один вопрос для спрашивающего: какая бы задержка у вас ни была, мешает ли она вашей способности создавать музыку?
@ToddWilcox tbh, раньше мы считали, что 15-20 мс достаточно близко для партии ударных. Устройства GM обычно имели приоритет перед ch10 [барабаны], а затем 1 -> 16. Человеческое восприятие всегда представлялось так: «Все, что меньше 7 мс, просто фазируется, 10-20 — это флейм, 30-50 — становится очень ощутимым», но это просто я повторяю старую мудрость, я никогда этого не делал. проверил на себе. Я также думаю, что вы можете очень быстро привыкнуть к игре чуть впереди - я имею в виду, что гитаристы делают это все время ... «центр» их ритма не в том, когда они ударяют по струне, а в том, когда они отпускают ее.
@ToddWilcox моя установка аблетона представляла собой клип с одной нотой, направленной на выход, и другим каналом записи в качестве входа. Аппаратным интерфейсом был iconnect2. Я получил такой же результат с IAC от Apple в качестве интерфейса и с PureData вместо аблетона. Это действительно печально...
@EdwinJoassart Вы отключаете звук, а затем снова включаете? Потому что задержка звука может легко превысить 20 мс на многих интерфейсах.
@ToddWilcox нет звука, это была чистая миди-установка для проверки задержки миди

Ответы (2)

Чтобы ответить на первую часть, нет, Mac по своей сути не представляют никакой задержки. CoreAudio — это надежная система с чрезвычайно низкими накладными расходами и одна из основных причин, по которой люди выбирают Mac для воспроизведения звука. Я получаю задержку < 2 мс в Ableton с моим Apogee Duet.

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

Я бы не стал использовать Node или что-то еще, что запускает JavaScript для аудио. Хорошо для веб-аудио-игрушек, но интерпретируемые языки не годятся для чего-то с серьезно низкой задержкой.

У меня есть задержка менее мс с узлом при использовании OSC вместо midi. Я имею в виду, что это не проблема с узлом, даже когда я переключаю свой самодельный патч для узла на Ableton Live, я получаю тот же результат 20 мс. И похоже, что это не проблема интерфейса, поскольку я пробовал 3 разных интерфейса (аппаратное и программное обеспечение) и все равно получил тот же результат. Вот почему я подозреваю, что проблема в OS X.
И в дополнение к моему ответу. Идея этого программного обеспечения узла состоит в том, чтобы сделать быстрый прототип. И после проверки перепишите движок как C++, просто сохранив внешний интерфейс как приложение node-webkit. ;)

В итоге нашел причину!

На самом деле это была ошибка Ableton. Мы поговорили с инженером Ableton, который объяснил, что в стеке Midi Live происходит какая-то черная магия. Это задержит некоторые миди, чтобы соответствовать задержке звука в системе.

Добавленная задержка в 20 мс связана с аудиобуфером (и будет увеличиваться, если вы увеличите аудиобуфер).

Это имеет смысл для Ableton Live, но не для бенчмаркинга задержки.

Pure Data делает что-то подобное. В настройках звука есть параметр «Задержка (мс)». Это фактически повлияет на задержку MIDI (очень вводит в заблуждение). TBH, я не знаю, влияет ли это также на звук.

В конце концов, виновато было программное обеспечение для зондирования, а не тестируемое программное обеспечение и не ОС :)