Погрешности MIDI-тайминга в программных секвенсорах

  • Автор темы Автор темы Pavell
  • Дата начала Дата начала
Это внешнее миди. Внутри хоста расхождений нет. Ну т.е. не должно быть :-)
да? у меня вот нет такой уверенности, я не знаю, как оно там устроено. Пока, по результатам тестов, получается так же, как и внешнее.

Я не считаю нормальными подобные разъезды таймингов измеряющиеся не парой семплов, а у же десятками семплов
пара сэмплов для миди это слишком хорошо... если предположить, что максимальная погрешность правильно работающей системы должна быть меньше или равна половине доли разрешающей способности секвенсора (получается тогда, что погрешность зависит от темпа? будет время - попробуйте),то как раз десяки сэмплов... Потом, кроме самого хоста - у нас же в процессе участвует еще и плагин, который, собственно, и воспроизводит - может, с его стороны тоже что-то есть? Я пока думаю, что среди обсуждающих нет никого, кто реально знает, как это там устроено. Из-за этого процедура корректного теста представляется мне затруднительной...
 
да? у меня вот нет такой уверенности, я не знаю, как оно там устроено. Пока, по результатам тестов, получается так же, как и внешнее.
Ну тестов в кубейсе. В Сонаре-то сэмпл в семпл. И вроде бы Рипере тоже?
Я тоже не знаю как оно устроено.
 
на практике чем больше нагрузка, тем больше лажает, но в оффлайн, по кр мере на родных генераторах в нативе не должно быть расхождения.
ФЛ я мерял давно на 1 треке - семпл в семпл триггерился семплер, 0 отклонения. 3000 мпц в районе 5-15 на одном треке.
 
сампломатик с настройками по умолчанию жутко корежит сэмплы. Как настраивали?
-по умолчанию.Ну про тишину-не совсем точно-около -70дБ(из-за сэмпломатика как раз).С Батареей получается совсем четко -138дБ,то есть практически в ноль.
 

Вложения

  • 2.JPG
    2.JPG
    150,6 KB · Просмотры: 13
daicehawk,
Дык, речь идёт как раз о почти пустом проекте - то бишь, есть Кубейс и есть только один миди трек и одна прописанная в нём нота, и есть Контакт с одним семплом на ноту...., И ВСЁ..

То бишь - нагрузки, считай, нет никакой...

Однако по наблюденям за описанными здесь результатами, одного и того же теста, полученными участниками темы, в различных хостах - наиболее точными явлются Сонар и Рипер. То бишь - следуя приниципу "Бритва Оккама" - лажа исходит конкретно из самого Куба и ещё некоторых хостов подвергшихся данному тесту в интернал режиме.

Для прояснения термина "Бритва Оккама": "БРИТВА ОККАМА" — методологический принцип, согласно которому более простым теориям следует отдавать предпочтение перед сложными, если и те и другие в равной степени согласуются с эмпирическими, опытными данными."©
 
Тут надо методологию единую по всем хостам - от чего клок (внешний\внутренний\мастер\слейв), PPQ база какая, БПМ какой, результаты онлайн\оффлайн, и вообще механизм сексвенсинга бы теор часть раскурил бы кто из практикующих. Опять Андрею Субботину +1
 
daicehawk, интернал, клок внутренний..Это уже обуславливалось условиями теста.
 
daicehawk,
если куб плавает оффлайн с внутренними генераторами даже в районе пары семплов, то это как-то не айс.
Так о тож....Только расхождение больше, чем пара семплов - полистай аудио примеры здесь выложенные. . И это выносит мозг и уши..
 
спасибо, покурю
101 пост - обсчет аудио для подстановки в противофазе был как сделан? и обсчет миди версус аудио как сделан был?
111 - тоже мутно все в плане методологии. Проще всего взять по сетке расставить Дирак импульс и его копию в противофазе и обсчитать оффлайн.
по видео, сорри, не могу в правом канале слушать, уже человек бы хоть моно сделал.
 
А вот как, лично в моём примере..Условия теста заданные Алексом:
Только что провёл эксперимент ради интереса (Cubase Elements 6 на Макоси). Загрузил в Батарейку сэмпл бочки и сделал "долбёжку" на 16 тактов четвертями с примесью восьмых и 16-х. Делаю миксдаун со вставкой аудиофайла на дорожку. Запускаю миди одновременно с аудио. При воспроизведении слышно, как меняется тембр от удара к удару, включаю аудиотрек в противофазу, на отдельных ударах тишина, но многие прослушиваются, причём процесс абсолютно рандомный). Но после миксдауна аудио с миди в итоговых файлах всё нормально и тишина с противофазой соответственно. Получается косяк при реалтайм воспроизведении?
 
А вот как, лично в моём примере..Условия теста заданные Алексом:
Ну вот, ЧИТД, оффлайн все ровно. А рилтайм плывет, кстати, отсюда и несовпадение и появляющиеся преференции звука между рил-тайм баунсом и рендером.
 
Идеальная картинка - что бы этого не было..
При тех же условиях теста Сонар(вычитается в ноль вообще судя по результатам тестов) и Рипер(чуть хромает, но в целом лучше) справляются лучше..

То бишь Куб по кривизне таймингов, опережает всё из перечисленного здесь.
 
Идеальная картинка - что бы этого не было..
При тех же условиях теста Сонар(вычитается в ноль вообще судя по результатам тестов) и Рипер(чуть хромает, но в целом лучше) справляются лучше..

То бишь Куб по кривизне таймингов, опережает всё из перечисленного здесь.
Это нужно копаться как реализован секвенсинг - сколько там (рилтайм) оглядок на другие функциональные блоки типа аудио или, скажем, мониторинга на предмет изменения мастер-темпа, и проч... Фрукт на 1 дороге тоже ровно бегает.
 
Все эти "если" в данном случае не в счёт с учётом одного миди трека и одной ноты..При таких простых условиях - любой хост должен по определению работать ровно и иметь "запас прочности" при большей нагрузке...
 
Детектив.

Это интересное упражнение чтобы почесать мозг.

Так как кубейса у меня нет, ограничился доступными мне тремя хостами, это Logic, Reaper и Ableton.
Глубокий математический аппарат мне тоже не слишком близок, поэтому буду говорить своими словами, тем более из доступных методов анализа имеется только сложение в противофазе.

Краткие выводы, которые удалось сделать.
Онлайн рендер миди имеет свою строгую, неслучайную структуру у каждого из хостов, эта структура во всех случаях совпадать не может.
В онлайн рендере миди влияющими факторами являются BPM и Sample Rate проекта, еще точнее – их соотношение.
Логику поведения как минимум одного секвенсора удается предсказывать, на другие пока нет достаточного количества времени (жду помощи).
Противофаза внутри одного проекта складывается в ноль при аккуратном расположении старта аудио-фрагментов исключающим влияние положения курсора при запуске рендера.

Прочитав топик захотел проверить лоджик, в котором работаю. Описываю так, чтобы желающие могли повторить, скажу сразу – это было интересно.

Создём проект с произвольным BPM (104), загружаем штатный сэмплер и отключив в нем обработку расставляем бочку 8-ми на несколько тактов. Сейчас нужно заметить, что 104 BPM некратно сэмплрэйту проекта 44100 Гц, это означает, что в одном такте содержится не целое число отсчетов, и тем более не целое число отсчетов содержится в более мелких делениях – восьмых, шестнадцатых и тп, но для чистоты эксперимента считайте, что я этого пока не знаю. После расстановки бочки отрендерил аудио, вставил в соседнюю дорожку, инвертировав фазу, запустил с первого такта – вычитается в ноль, звука нет. Скопировал оба региона, и аудио и миди далее – вычитаются первые регионы, копии – не вычитаются, притом с плавающей фазой. Задумался. Зациклил отрезок, который вычитается – первый цикл вычитается, следующие – не вычитаются, от цикла к циклу фаза меняется. Задумался.

Удалил скопированные регионы, проиграл второй раз сначала оригинальные – вычитаются в ноль. Подвинул регионы на несколько тактов вперед, с привязкой к тактам – затем выставил курсор комбинацией клавиш, завязанной на бары/биты/тики BPM в начало регионов, при проигрывании – не вычитается, картина та же, как и с копиями раньше. Поставил копии обоих регионов в начало проекта на первый такт – вычитается в ноль.

Вывод – регионы копируются правильно, но в связи с нецелочисленной соотношением Sample Rate и BPM на вычитаемость влияет положение курсора относительно регионов при запуске. Максимально увеличив масштаб и отвязав курсов от BPM поставил его точно перед началом регионов, в предыдущий сэмпл – вычитается в ноль при любом положении регионов в такте, ошибок не происходит. Если поставить не точно в тот отсчет, где находится начало аудио и миди регионов, а в предыдущий отсчет (до начала) или в следующий (уже после начала) – не вычитается, с разными фазовыми сдвигами. Следовательно, мы выясняем, что положение курсора при запуске имеет значение. Также удалось пронаблюдать, что при случайной постановке курсора до начала регионов, но при определенном количестве отсчетов до них, вычитание в ноль происходит, и повторяемо – при сохранении позиции курсора (например командой Stop and go to last position) – всё достоверно вычитается сколько угодно раз, фаза не двигается.

Задумался. Пока что мы обнаружили, что имеется некоторая модель поведения, но её количественные характеристики нам не доступны, предсказать что-либо конкретное невозможно.

Так давайте уточним. Для простоты ставим регионы в начало проекта. Проверяем с первого такта – всё вычитается. Увеличиваем масштаб почти до максимального – в лоджике есть возможность отмасштабировать так, что отсчеты уже видны, но при воспроизведении экран не будет двигаться вместе с курсором, а будет перепрыгивать по-тактово, точнее – по восьмым нотам, при этом начало каждого такта будет постоянно отображаться на экране на одной позиции, что удобно для визуализации изменений в аудио волне от такта к такту. Так вот увеличиваем, и наблюдаем при воспроизведении, что начало волны от удара к удару сдвигается на некоторое количество отсчетов. Секунды за две удалось увидеть закономерность – первый удар и пятнадцатый совпадают по началу волны, затем цикл изменений повторяется. Не трогая миди-регион обрезаем аудио-регион ровно перед пятнадцатым ударом, и копируем следом начальный отрезок аудио, удостоверившись, что драг-н-дроп привязан не к тактам, а к сэмплам. Если всё сделано правильно – второй аудио-отрезок будет вычитаться. И третий, поставленный ровно следом за вторым, и четвертый, пятый… а вот в шестом – первый удар не на месте. Увеличиваем, смотрим – ага! Это не в шестом первый удар не на месте, это в пятом – последний уже не подходит. Не буду утомлять вас математикой, ну не математик я, в общем, после пары кружек кофе и нескольких мозолей в голове, удалось посчитать, что у лоджика при 104 BPM накапливается определенная погрешность округления (44100 кГц помножить на 60 секунд и разделить на 104 удара в минуту), так вот погрешность накапливается внутри такта – вот откуда 15 ударов в цикле, затем цикл перезапускается, и всё хорошо – ровно до следующей ошибки, которая накапливается к 73-му удару восьмыми нотами (такт 9.3.3.1) – там ошибка исправляется тем же методом, что и внутри такта, сдвигом на некоторое количество сэмплов. С 73-го удара цикл повторяется – если отвязать все привязки, поставить очень точно первый аудио-регион – будет вычитаться (в проекте 104 выделено цветом). И так далее.

Были таким же способом испытаны проекты в 103, 147 и 186 BPM с частотой дискретизации 44,1 кГц, результаты подобны, наблюдается полная вычитаемость.

В общем, эта погрешность округления отношения частоты дискретизации проекта к количеству ударов в минуту, не знаю какой термин правильный. Видимо, она по-разному обрабатывается каждым секвенсором, поэтому в проектах с некратными соотношениями Sample Rate и BPM получить вычитание если и возможно, то весьма непросто. Более точно пока сказать не могу, но на примере лоджика удалось найти закономерности при разных значениях BPM.

Что же будет с проектами, в которых это соотношение является целым числом?
Легко проверить. Создадим проект, где 8-е ноты будут иметь целое количество сэмплов. 44100 х 60 / 8 = 330750, откуда вероятный BPM, например, 125, что дает нам длительность 8-ой ноты равной 2646 отсчетов. Схема проекта – та же самая, что в первом примере. но теперь при копировании регионов или при цикле размером в такт или половину такта – наблюдается полное вычитание в противофазе.
Проблемы начинаются только при попытке зациклить 1/8 такта – и при максимальном увеличении видно, что все четные восьмушки рендерятся с небольшим отставанием от нечетных, поэтому максимально возможный цикл в данном проекте составляет 1/4 такта. Его можно как угодно копировать и двигать – всё работает. Скорее всего я что-то напутал с расчетами разрешающей способности хоста, либо такое поведение запланировано.

По наблюдениям за подобными целочисленными проектами в других секвенсорах – Ableton и Reaper, могу сказать только, что внутри хостов файлы вычитаются без проблем, иногда только бывает краткий звук в самом начале воспроизведения, вы по-любому лучше меня знаете что это, возможно что-то с фейдами или особенностями распределения приоритетов между аудио и миди.

Нецелочисленные проекты в этих хостах живут своей жизнью, удалось заметить некоторые закономерности в исправлении погрешности округления, но эти принципы совсем не похожи на лоджиковские. Предполагаю, что в разных хостах реализованы разные схемы, в том числе в кубейсе. Повторить вычитаемость в таких проектах внутри других секвенсоров кроме лоджика пока не пробовал, нет достаточного опыта работы чтобы исключить нелепости. Но, повторюсь, в лоджике удаётся найти закономерности, думаю в других хостах ситуация похожа.

Уточню, что вычитаемость в лоджике проверял на слух, на достаточной громкости, но за математическую точность ручаться не могу.

Прикладываю два лоджиковских проекта в 104 и 125 BPM, с дополнительными рендерами из рипера и аблетона, а также сэмпл которым пользовался. Учтите, аудио из этих хостов – только для визуального сравнения, заниматься уровнями и огибающими было некогда, но буду благодарен, если специалисты аблетона, кубейса, рипера, протулса и других хостов предоставят свои рендеры с этим сэмплом. BPM которые меня интересуют – 103, 104, 125, 147, 186.
 

Вложения

Последнее редактирование:
TRANCEDLY, Речь в данном случае о миди , с аудио проблем не возникало ни разу.
 
spred, Отличное, практическое исследование вызывающее определённое согласие )
 
В общем, эта погрешность округления отношения частоты дискретизации проекта к количеству ударов в минуту, не знаю какой термин правильный. Видимо, она по-разному обрабатывается каждым секвенсором, поэтому в проектах с некратными соотношениями Sample Rate и BPM получить вычитание если и возможно, то весьма непросто. Более точно пока сказать не могу, но на примере лоджика удалось найти закономерности при разных значениях BPM.
да, хорошее наблюдение... тогда возникает вопрос - если округление позиции происходит до ближайшего к сетке сэмпла, то почему кое-кто дает расхождения на десятки сэмплов? может быть, округление происходит с точностью не до сэмпла, а с меньшей?
 
ничо не понимаю !!!!!!!!
вот что у меня происходит. уж до проверки совпадения миди лупа с тем же семплом расставленым по сетке не дошло. затык раньше произошел, и там надо его копать. в мидях. большое сорри за кашель и ненормативную лексику:unsure:

[video=youtube_share;WmOE1UeSe2s]http://youtu.be/WmOE1UeSe2s[/video]
 
Последнее редактирование:
Andrey Subbotin, Да! Верное замечание ..И вот здесь видимо стоит внимательней рассматривать эти чрезмерные погрешности как реальные огрехи самих разработчиков хоста или целого ряда хостов)
 
Испанский ГалстоГ, Ну, те же наблюдения и у меня - в точности такие же ..С тем и сбрасывал вчера пример...Повеселили твои ироничные замечания)))
Упс..Сорри ты оказывется на вычитание лишь аудио гонял - без мидей..Тогда трабл ещё хуже получается..
 
Я пока думаю, что среди обсуждающих нет никого, кто реально знает, как это там устроено. Из-за этого процедура корректного теста представляется мне затруднительной...

_________
Думаю, что если придет тот, кто знает, и расскажет, как там устроено - то половина спорящих заявит, что им не хватает доказательств. Я могу лишь сказать две вещи. 1. Требовать от системы, в которой существуют информационно-событийные потоки, курсирующие по MIDI-интерфейсу, нулевых погрешностей - глупо. 2. Более выраженные погрешности Кубейса могут быть (и наверняка) обусловлены конкретной реализацией его ядра машины конечных состояний и обработок прерываний. Возможно, это ядро взято в готовом виде из какой-либо малоизвестной ОС. Разрабатывать совершенно новое было лень, и проблема проходит сквозным образом по версиям.
Но главный вопрос в другом - а насколько вся эта ловля блох важна с точки зрения художественной выразительности, талантливости или успешности музыки, создаваемой с помощью секвенсоров ? Никогда не интересуюсь и не обращаю внимание на девиацию сетки в музыке, которая реально нравится.
 
Пресловутый рилтайм миди джиттер
какой реалтайм джиттер. миди рендерилось в оффлайне ДВА раза. один раз целиком, другой раз по тактам 8 кусков. и 2 срендеренных аудио не дают вычитание. так что реалтайм тут не при чем! внимательнее смотрите )))

а насколько вся эта ловля блох важна с точки зрения художественной выразительности
захочешь ты создать хороший грув рисунок ударных, подгонишь хетики, разный квантайз применишь, разный свинг, клапперы со сдвигом на мс понаставляешь, все выверишь а тут здрассьте - бочка рандомно неровно играет. а накое оно такое надо? как слышишь у меня на видео выскакивают достаточно продолжительные отрезочки бочки, это не ошибка в семпл, и не десяток семплов! значит на это время и играет криво. если спошняком писать живьяк мультитрек как на мафон, то понятное дело, оно может и не будет играть роли.
 
Последнее редактирование:

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