В общем, прибило меня разобраться с этой проблемой..., а именно- какого лешего миди играет так неровно. ( имеется ввиду именно MIDI протокол, передача по реальному или виртуальному проводу потока миди-сообщений)
Почему стало интересно- а потому что лучше BD для танцевальной колбасы, чем KickMe, работающей только в среде кримвейр, в природе не придумано. А в кримвейр мржно попасть, только используя миди, будь оно неладно.
А неладно оно по многим причинам..
Во первых, эта 20ти летней давности зараза по определению последовательна, то есть сыгранная пачка нот передаётся в любом случае одна за другой, на каждую ноту тратится 3 байта, а ширина мидипротокола- примерно 3000 байт.сек.
Наблюдение 1-То есть на передачу только одной ноты по одному мидиканалу уходит примерно 1 миллисекунда времени.- Кошмар.
Теоретически, не сильный кошмар, если это можно компенсировать негативной задержкой, но тут вылезает другая бяка- некоторые называют это миди-джиттер, я не уверен в правильности определения, пусть будет дрейф.. Так вот, эта нота может спокойно дрейфовать в лучшем случае плюс-минус 5 семплов. Никакими бубнами заставить её играть ровно невозможно, а если влепить на том же канале ( да даже просто в этом же миди порте, но на другом канале) ещё штук 8 нот ( пусть и не звучащих, чтобы не отвлекаться) дрейф будет уже просто огромен- от 2 семплов до 5 миллисекунд..
Наблюдение номер 2- две ноты, передаваемые по Одному каналу, всегда играют в разное время, та нота, что ниже по клавиатуре , опережает следующую на определённое время, но опять же, с минимальным дрейфом.
Наблюдение 3 -канал, номер которого больше, играет позже, на определённое время, и опять же, с дрейфом, но уже побольше.
ВЫВОД- 1заставить миди играть ровно НЕВОЗМОЖНО.
2- идеальный тайминг возможен только внутри одного ВСТ-хоста,
всё, что касается VSTi- у них всё в порядке с таймингом.
ВЫХОД- 1 не юзать внешние и внутренние миди устройства.
2- выписывать всё в аудио и расставлять по сетке вручную.
3- то же самое, только запихивать в семплер VST.
4- юзать степ-секвенсоры и прочие грув-боксы, питающиеся от мидиклока. ( хотя клок тоже может плавать, но всё равно меньше, чем кучи нот и контроллеров)
5- передавать по одному порту не более 2 нот и только по одному, желательно первому, каналу.(хе-хе)
6-попытаться уменьшить миди-разброс посредством пользования всякими изобретениями производителей секвенсоров, как то Steinberg MIDEX- USB миди-интерфейс - он упаковывает миди-данные максимально быстро, пользуясь информацией от самого секвенсора, что и когда должно играть, и отсылает данные в буфер железяки с небольшим опережением по времени..
Такие же приборы есть у Emagic и MOTU, работают со своими секвенсорами.
Вот.. башка опухла, а толку нет. Не понимаю я, какого хрена внутрь компьютера запихивают 15 лет назад устаревший протокол передачи данных... При таких мегагерцах, как нынче, нет никакой сложности по тому же миди проводу передавать хоть кино в реал-тайме... ан нет, производители не чешутся..., каждый изобретает свой велосипед.
Придумали бы хотя бы МИДИ2 специально для внутрикомпьютерного пользования, а к нему- умный конвертор для выпуска миди наружу...
гады.
Почему стало интересно- а потому что лучше BD для танцевальной колбасы, чем KickMe, работающей только в среде кримвейр, в природе не придумано. А в кримвейр мржно попасть, только используя миди, будь оно неладно.
А неладно оно по многим причинам..
Во первых, эта 20ти летней давности зараза по определению последовательна, то есть сыгранная пачка нот передаётся в любом случае одна за другой, на каждую ноту тратится 3 байта, а ширина мидипротокола- примерно 3000 байт.сек.
Наблюдение 1-То есть на передачу только одной ноты по одному мидиканалу уходит примерно 1 миллисекунда времени.- Кошмар.
Теоретически, не сильный кошмар, если это можно компенсировать негативной задержкой, но тут вылезает другая бяка- некоторые называют это миди-джиттер, я не уверен в правильности определения, пусть будет дрейф.. Так вот, эта нота может спокойно дрейфовать в лучшем случае плюс-минус 5 семплов. Никакими бубнами заставить её играть ровно невозможно, а если влепить на том же канале ( да даже просто в этом же миди порте, но на другом канале) ещё штук 8 нот ( пусть и не звучащих, чтобы не отвлекаться) дрейф будет уже просто огромен- от 2 семплов до 5 миллисекунд..
Наблюдение номер 2- две ноты, передаваемые по Одному каналу, всегда играют в разное время, та нота, что ниже по клавиатуре , опережает следующую на определённое время, но опять же, с минимальным дрейфом.
Наблюдение 3 -канал, номер которого больше, играет позже, на определённое время, и опять же, с дрейфом, но уже побольше.
ВЫВОД- 1заставить миди играть ровно НЕВОЗМОЖНО.
2- идеальный тайминг возможен только внутри одного ВСТ-хоста,
всё, что касается VSTi- у них всё в порядке с таймингом.
ВЫХОД- 1 не юзать внешние и внутренние миди устройства.
2- выписывать всё в аудио и расставлять по сетке вручную.
3- то же самое, только запихивать в семплер VST.
4- юзать степ-секвенсоры и прочие грув-боксы, питающиеся от мидиклока. ( хотя клок тоже может плавать, но всё равно меньше, чем кучи нот и контроллеров)
5- передавать по одному порту не более 2 нот и только по одному, желательно первому, каналу.(хе-хе)
6-попытаться уменьшить миди-разброс посредством пользования всякими изобретениями производителей секвенсоров, как то Steinberg MIDEX- USB миди-интерфейс - он упаковывает миди-данные максимально быстро, пользуясь информацией от самого секвенсора, что и когда должно играть, и отсылает данные в буфер железяки с небольшим опережением по времени..
Такие же приборы есть у Emagic и MOTU, работают со своими секвенсорами.
Вот.. башка опухла, а толку нет. Не понимаю я, какого хрена внутрь компьютера запихивают 15 лет назад устаревший протокол передачи данных... При таких мегагерцах, как нынче, нет никакой сложности по тому же миди проводу передавать хоть кино в реал-тайме... ан нет, производители не чешутся..., каждый изобретает свой велосипед.
Придумали бы хотя бы МИДИ2 специально для внутрикомпьютерного пользования, а к нему- умный конвертор для выпуска миди наружу...
гады.