FAQ: Проблемы миди тайминга в Cubase/Nuendo (1 онлайн

Статус
В этой теме нельзя размещать новые ответы.

P00H

New Member
12 Мар 2004
8.192
2.789
0
57
Moscow
Оригинал на английском http://www.jay.fm/miditime/

Перевод от Castaneda
PC МИДИ Тайминг и Нуэндо. (Jay Levitt)

Пользователи программ Steinberg Nuendo и Cubase часто сталкиваются с проблемой Миди Тайминга. Я не работаю в Steinberg, но как программист, я проделал большую работу экспериментируя с таймингами MIDI на PC. Вот, я надеюсь, основной список проблем и решений. Хотя я в основном упоминаю Нуэндо, Cubase SX мало чем отличается от Нуэндо, поэтому всё что описано ниже относится к обоим приложениям без исключений.

Безусловно, главная причина проблем MIDI тайминга, связана с использованием эмуляции МИДИ портов. Когда-то, был только один тип драйвера MIDI, известный как MIDI для Windows. Позже, Microsoft ввела новый тип драйвера, DirectMusic, который теоретически мог улучшить качество передачи миди сообщений, но из-за некоторых ограничений, только производители игровых звуковых карт смогли получить от него хоть какую-то пользу.

Для того чтобы ускорить переход разработчиков ПО от Windows MIDI к DirectMusic,  Windows предлагает \"'эмуляцию\" портов DirectMusic для всех драйверов MIDI в Windows; Таким образом программа расчитанная на более старый стандарт даже не догадывается, что общается через \"родной\" драйвер Direct Music, а всю работу по эмуляции берёт на себя Windows. Это означает, что Nuendo, в теории, может быть \"заточена\" исключительно под интерфейс DirectMusic, и даже если ваша карта не поддерживает DirectMusic, то Windows сможет (опять же теоретически) сэмулировать эту поддержку.  

Реальность же как известно, сурова и жестока. Иногда драйвера эмулирующие Direct Music вообще отказываются работать или же работают только \"в одну сторону\". Бывает, что сэмулированые порты не работают, а работают лишь \"родные\" порты Windows MIDI. Иногда МИДИ тайминг нормально работает на только на одном из портов. Бывает и такое что для вашего устройства устанавливаются вместе как \"родные\" Direct Music так и Windows MIDI драйвера. Таким образом если установлены оба типа драйверов, Нуэндо пытается угадать какой из них \"тот самый\" и отфильтровывает остальные. Иногда угадывает, но чаще всего ошибается, особенно если используются \"виртуальные\" или сэмулированые порты. На некоторых системах, хотя конечно же не на всех, у эмулированых портов возникают проблема с задержкой по времени или таймингом.

К слову, Direct Music и Windows MIDI отностятся к низкоуровневым драйверам и ничего общего с технологиями WDM и MME не имеют. WDM и MME отличаются лишь разным подходом к созданию драйверов, оба же общаются с устройствами через Windows API одинаково. К тому же различия между этими драйверами не относятся к проблемам МИДИ тайминга.


ИСПРАВЛЯЕМ МИДИ ТАЙМИНГ

В директории, где установлена НУЭНДО, путь по умолчанию C:program FilesSteinbergNuendoMIDI Port Enabler, установлен файл нулевой длины с именем \"ignoreportfilter\". Перемещаем этот файл из директории MIDI Port Enabler на один уровень выше, перезапускаем Нуэндо и видим, что теперь появились как сэмулированые так и \"родные\" миди порты. Заходим в Device Setup и выставляем для эмулированых портов Direct Music,  параметр \"Show\" на \"No\" для того чтобы случайно их не заюзать. Это решение для тех у кого проблемы с МИДИ таймингом на сэмулированых портах Direct Music. Опять же повторюсь, эта проблема встречается не на всех системах.

ПРОБЛЕМА ДАБЛ-КЛОКИНГА.

Все МИДИ интерфейсы в Windows создают временную метку перед тем как передать информацию приложению с которым они общаются. Для того чтобы избежать временных задержек, которые происходят по разным причинам, например Нуэндо не сразу получает поступающие ноты, из-за имеющих более высокий приоритет прерываний или программ жрущих процессорное время, или вы так быстро стучите тридцать вторыми, что секвенсор просто не успевает их обработать. Нуэндо считывает временную метку, тут же делает все необходимые вычисления и бац: все миди события получают компенсацию задержки т.е. вы не замечаете никаких задержек между нажатием клавиш и звуком получаемым из вашего секвенсора. Эти преобразования были изначально \"заложены\" в спецификации МИДИ драйвера.

НО, как известно \"хотели как лучше, а получилось как всегда\". Windows предлагает два временных счётчика для мультимедийных приложений. timeGetTime или TGT и QueryPerformanceCounter или QPC. Последний более точен (хотя его точность напрямую зависит от материнской платы) и зачастую более аккуратен, но QPC доступен только в последних версиях Windows и некоторые материнские платы выпущеные не так давно, работали с QPC не корректно, а некоторые дуальные материнские платы до сих пор не могут держать в синхронном режиме два процессора.
TGT используют драйвера, такие как Windows MIDI, которые были написаны и предназначены для работы в старых системах, более медленные но и более надёжные. Нуэндо по умолчанию использует именно этот временной счётчик. Спецификации ASIO и VST также основываются на использовании этой технологии.  
Новые драйвера всё чаще используют технологию QPC. Поэтому если ваш драйвер основан на этой технологии проблем с задержками МИДИ сообщений возникнуть не должно.

Этой проблеме подвержен не только Нуэндо или Кубэйс, а и любой секвенсор, некоторые из них могут быть основаны на технологии QPC вместо TGT и те устройства, которые в Нуэндо работают без проблем в других секвенсорах могут работать с ошибками и наоборот. В Сонаре например есть скрытая опция которая позволяет игнорировать все временные метки поступающие от интерфейса, которая прекрасно работает, до тех пор пока Сонар не начнёт отставать от вашего устройства и вы получите \"прекрасный\" плавающий МИДИ тайминг.

РЕШЕНИЕ ДАБЛ-КЛОКИНГА
В Нуэндо и Кубэйсе версии 2.20 есть опция в настройках Direct Music - \"Use System timestamp\".Включив её, Нуэндо использует для всех МИДИ трэков режим тайминга используя временной счётчик QPC вместо TGT. Эта опция распространяется только для драйверов Direct Music. Поэтому, если у вас установлен драйвер Windows Midi который использует QPC вам необходимо использовать ЭМУЛЯЦИЮ драйверов Direct Music, что противоречит рекомендуемым настройкам! К счастью будущие версии содержат эту опцию как в Windows Midi так и в Direct Music вкладках. В следующей версии программы MIDITime появится возможность проверять точность клокинга на сэмулированых портах DirectMusic и вы будете в курсе против чего вы боретесь.
 
Статус
В этой теме нельзя размещать новые ответы.

Сейчас онлайн (Пользователей: 0, Гостей: 1)