Правда о цифровой задержке в музыке.

Дисклеймер:

Оригинал материалов для этого поста можно найти в следующей статье:

http://www.presonus.com/learn/technical-articles/the-truth-a...

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

Много картинок не ждите, ждите много текста, и помните у птиц беда с пунктуацией.


Вступление

В английском языке слова Latency и Delay на русский переводятся одинаково, и означают задержку. Хотя latency в основном употребляют, когда говорят об аудио задержке. Под аудио задержкой понимают промежуток времени между тем как звук был извлечен и тем моментом в который он попал к вам в уши. Обычно задержка измеряется в миллисекундах (мс).


Если говорить о природной/физической задержке, то вот её пример: Представьте что сидите за пианино и хотите извлечь звук нажатием его клавиши. Что произойдет когда вы её нажмете? Ваш палец нажимает на клавишу, клавиша приводит в движение молоток, молоток бьет по струне, звук от струны путешествует к вашим ушам. Вот промежуток между тем как вы нажали на клавишу и тем как вы услышали ноту и есть задержка.


Эхо - также является природной задержкой звука, с ним чуть посложнее поскольку вы слышите и "исходный" сигнал и задержанный. Ученые, проведя опыты, подсчитали, что задержка менее ~10 мс не воспринимается человеческим ухом. В промежутке между 12 и 15 мс вы начнете "чувствовать" эффект задержанного сигнала, и только задержка от 20мс заставит ваш мозг разделить между собой исходный и задержанный сигнал.


Теперь подойдем к цифровой записи, представим что мы пишем злой такой, мощный соляк, на компьютере. В аудиостанции(аудиохост, DAW) играет минусовка, стучит метроном, гитара подключена к интерфейсу и включен мониторинг (прослушка) сигнала через аудиостанцию. Но вот беда, мы играем как будто с каким то эхом, звук который мы слышим сильно запаздывает от наших пальцев, как правило исполнителя это сильно дизориентирует и записать партию в таких условиях практически невозможно. Мы кидаемся к настройкам нашего аудио интерфейса, видим загадочное значение какого то буфера в 128 семплов, и подпись в 2.9 мс задержки.


Но постойте, стоя на сцене в метре от усилителя, при скорости звука 340 м/с, мы будем слышать наш звук с задержкой минимум 3мс! Так почему на сцене 3 мс мы не замечаем, а в студии 2.9 мешают нам нормально работать?


Все не так как кажется

Для того чтобы разобраться в проблеме нам нужно несколько углубится в физику процесса и разобрать, каким именно образом звук путешествует у нас в компьютере.

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

Далее наш сигнал попадает в аналого-цифровой преобразователь (АЦП) аудио интерфейса, который занимается тем что преобразовывает непрерывную звуковую волну в массив битов и байтов. Процесс невероятно сложен, но занимает немногим более половины миллисекунды. Забегая вперед скажу,что на другом конце всей этой цепочки звук будет поступать на цифро-аналоговый преобразователь вашего интерфейса (ЦАП), который в свою очередь будет преобразовывать дискретный сигнал в электрические импульсы, для того чтобы вы могли услышать его на своих динамиках или наушниках. Ещё пол миллисекунды или типа того.


Далее за дело берется ваш ASIO (в случае windows) или CoreAudio (Mac) драйвер. Он осуществляет "доставку" сигнала со входа USB в ваш аудиохост и обратно.

Все это "расстояние" сигнал преодолевает путешествуя из одного буфера в другой.


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


*Входной буфер USB шины

*Входной буфер ASIO драйвера

*Выходной буфер ASIO драйвера

*Выходной буфер USB шины


Здесь нам придется ещё раз прерваться, и кратко объяснить зачем вообще эти буферы нужны.


Зачем нужны буферы

Дело в том что "многозадачность" компьютера это всего лишь иллюзия, процессор в один момент времени работает только с какой-то одной задачей, но за счет того что он очень (ОЧЕНЬ) быстро переключается между ними, выполняя то часть одной, то часть другой, кажется что процессы протекают одновременно.


В нашем случае процессор по большей части выполняет задачу по переносу данных с нашего интерфейса в аудиостанцию, и обратно. Так как он не может постоянно этим заниматься, он делает это кусками. Отправил кусок, занялся делом, ещё отправил кусок, ещё чем то занялся. Чем больше размер буфера, тем больше мы можем позволить процессору тратить времени на системные задачи, но вместе с тем мы будем задерживать сигнал. Чем буфер меньше, тем ближе к "реальному времени" будут выполнятся задачи, но это может отрицательно сказаться на стабильности всей системы. А кто, спросите вы, устанавливает размер этих буферов? -драйверы, поговорим о них!


ASIO и CoreAudio драйверы

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


И звук с вашего интерфейса ваш хост принимает также посредством драйвера. Все эти драйверы пишут инженеры фирмы, которая ваш аудио интерфейс выпустила. Различают два "слоя" таких драйверов. Первый "слой" взаимодействует с USB шиной, второй - с вашим хостом. Давайте начнем с простого и поговорим для начала о втором. Подробнее о различиях ASIO и Core Aduio, зачем вообще ASIO нужен на Windows мы поговорим в другом посте.


Задержка декодирования

Итак, ваш сигнал преодолел USB шину, и вам нужно направить его на вход к вашему хосту. Здесь на сцену выходит входной ASIO буфер. Это и есть тот самый буфер, размер которого вам позволено менять, и задержку на котором вам так радостно отображает контрольная панель интерфейса, и ничуть не врет. Если разделить 441000 Герц (частота дискретизации) на 128 семплов (размер буфера), то получим как раз 2.9 мс задержки. Но мы то теперь знаем, этот буфер не один! С другой стороны хоста стоит ещё один, выходной ASIO буфер, размер которого как правило выставляется равным входному. Итого мы имеем 2.9 + 2.9 = 5.8 мс задержки, в лучшем случае. И лучший случай это только на бумаге. На практике в самом хосте и на пути к выходу происходят и другие процессы, которые в целом могут увеличить выходную задержку до 256 семлов, что в целом сложится в 384 семпла, и на частоте 44100 Гц будут давать задержку в 8.7 мс. Добавьте сюда ещё 1 мс которую мы посчитали для работы преобразователей и получим 9.7 мс. Но 9.7 мс это все ещё слишком мало чтобы человек различал разницу.


Откуда берется дополнительная задержка

Сейчас то вы уже наверное догадались, потому что Я решил не путать ваш лишний раз, но на самом деле об этом виновнике редко где встретишь разговоры. А речь конечно о буфере USB шины. USB шина работает на основе миллисекундного таймера, как только таймер отсчитывает определенный интервал, происходит остановка и все что было записано в буфер отправляется на аудио процессинг. Точная настройка этого буфера под характеристики вашего компьютера могла бы дать возможность значительно ускорить процесс работы с аудио, но инженеры умышленно прячут её от вас, а все дело в том что, если пользователь случайно поставит достаточно малое значение этого драйвера, он рискует "уронить" драйвер (при чем как пишут в presonus "crash the driver—a lot.") Как правило большинство (но не все!) производителей значение этого драйвера устанавливают в безопасное для большинства компьютеров значение, которое на деле приводит к лишним 6 мс на входе и выходе. (Также часто можно встретить и 4 мс) Теперь когда мы знаем все этапы цепочки, сложим наши найденные 12 мс с прежде посчитанными 9.7 мс (помните что все значение мы брали в среднем, но результаты на практике сильно не отличаются) и получим 21.7 мс задержки, и вот это уже реальная помеха.

Заключение. Как жить и что делать

Во первых справедливости ради надо заметить, что не все аудио интерфейсы скрывают факты о задержке аудио. Карточки Steinberg UR например в этом плане сразу суммируют значения задержке с двух слоев, и высчитывает различные значения для входного и выходного потока, выдавая вам:

Правда о цифровой задержке в музыке. Музыка, Теория, Физика, Длиннопост, Текст

Значение хоть и приблизительное, но по нему действительно можно ориентироваться. При 64 семплах получим задержку ~10 мс, что для большинства инструментов не должно стать помехой. И нет, это - не реклама, хотя это явно камень в огород всяким фокусрайтам.


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


В большинстве дейвайсов сейчас предусмотрена функция Direct Monitoring, которая пробрасывает сигнал с АЦП сразу к ЦАП. В результате мы все равно имеем около 1мс задержки, но её пока никто "прочувствовать" не смог. Ественно в этом случае мы лишаемся возможности обрабатывать сигнал на хосте.


Кроме этого есть ветвители сигналов, например большинство DI-боксов для гитар выдают балансный сигнал который можно направить в интерфейс и небалансный который можно воткнуть в усилитель.


Вы можете экспериментировать с ещё меньшей задержкой на Windows приобретя например RME Hammerfall, которая позволяет работать под ASIO с буфером в 32 семпла. А на Mac тот же Ur22 будет работать в 32 семпла в силу иной природы устройства их CoreAudio.


Также некоторые карточки, например из линейки presonus AVL позволяют таки изменять размер USB буфера, выбирая между 6, 4 и даже 2 мс. Ещё часть их карточек имеет на борту DSP процессор который позволит проводить direct monitoring с небольшой обработкой для вашего комфорта.

Постскриптум

Как видите зверь не так страшен, если с ним разобраться. И Я надеюсь, что мир цифровой аудиозаписи стал на миг прозрачней и понятней.


Павлин рад тратить свое время на помощь вам, и готов отвечать на ваши вопросы. Свои вопросы задавайте в комментариях.


Павлин не просит ничего взамен, но это не значит что ему не нужна ваша помощь. Если у вас найдется 20 минут свободного времени, вы можете здорово помочь пройдя анкету на тему современной западной поп музыки.


Свои замечания по поводу анкеты вы можете оставлять под предыдущим постом.

Лига музыкантов

3.7K пост5K подписчиков

Правила сообщества

Не стоит постить вещи совсем не по теме, в остальном - ограничений и правил не будет.