Воткнул гитару в компьютер, поставил усилитель-плагин — и играть невозможно: звук приходит позже, чем дёрнул струну. Формулируют это по-разному, а беда одна:

«Задержка неадекватно большая — от момента, когда взял ноту, до звука.»

«Поставил буфер поменьше — начался треск. Поставил побольше — играть нельзя.»

Дальше обычно советуют «поставь ASIO4ALL» и на этом расходятся. Совет верный наполовину, и от того, какая это половина, зависит, получится у вас или нет.

Сколько задержки допустимо

Цифра, которую стоит запомнить: десять миллисекунд.

Меньше — играть можно, и большинство людей вообще ничего не замечает. Больше — начинает мешать, причём на перегруженном звуке сильнее, чем на чистом: у перегруза резкая атака, и рассогласование слышно отчётливее.

Двадцать-тридцать миллисекунд — это уже невозможно. Именно столько даёт обычный звук Windows, и именно поэтому «просто воткнуть и играть» не работает.

Для сравнения: звук летит по воздуху примерно метр за три миллисекунды. Десять миллисекунд — это как стоять в трёх метрах от комбика. Привычное расстояние, и потому незаметное.

Из чего она складывается

Задержка — это не одно число, а сумма пяти. Понимать это важно: люди крутят одну ручку и удивляются, что не помогает.

Звено Сколько
Преобразование звука в цифру ~0,5–1 мс
Буфер входа зависит от размера
Обработка (плагины) доли миллисекунды, но бывают исключения
Буфер выхода столько же, сколько вход
Преобразование обратно в звук ~0,5–1 мс

Плюс передача по USB, если карта внешняя.

Ручкой вы управляете только буфером. Остальное задано железом и не меняется. Отсюда следует неприятное: у дешёвой карты есть предел, ниже которого не опуститься, сколько ни уменьшай буфер.

Про исключение в строке «обработка»

Один плагин в цепочке может добавить десятки миллисекунд — и это самая обидная причина, потому что о ней не думают.

Так делают обработки с «заглядыванием вперёд»: линейно-фазовые эквалайзеры, многополосные компрессоры, некоторые лимитеры. Им нужно знать, что будет дальше, поэтому они придерживают звук.

На форумах разбирали случай: человек жаловался на 20–30 мс в одной программе при нормальных пяти в другой, с теми же настройками. Виноват оказался единственный компрессор в цепочке.

Проверяется просто: отключите все плагины и послушайте. Стало нормально — включайте по одному, пока не найдёте виновника.

Что делать по порядку

1. Убедиться, что звук идёт через ASIO

ASIO — это способ разговора программы со звуковой картой в обход обычного звукового тракта Windows. Тракт Windows делался, чтобы ничего не щёлкало при просмотре кино, и ради этого он копит звук в больших буферах. Для игры это смертельно.

Без ASIO дальше можно не читать: остальные настройки ничего не спасут.

2. Понять, какой у вас ASIO

Их два вида, и разница между ними принципиальна.

Родной драйвер карты. Пишется производителем под конкретное железо. Focusrite, Audient, Steinberg, Behringer, Arturia — у всех есть. Если карта у вас есть, скачайте драйвер с сайта производителя, а не пользуйтесь ничем другим.

ASIO4ALL. Это не драйвер карты, а прослойка: он изображает ASIO поверх обычного звука Windows. Нужен тем, у кого внешней карты нет вовсе и гитара воткнута во встроенный вход.

ASIO4ALL — честная и полезная программа, но чудес она не делает. Задержка через неё будет заметно больше, чем через родной драйвер, потому что под ней всё тот же тракт Windows. Если вы упёрлись в предел с ASIO4ALL — это предел не настроек, а подхода.

3. Подобрать размер буфера

Буфер — это порция звука, которую программа обрабатывает за раз. Меряется в кадрах: 64, 128, 256, 512.

Меньше буфер — меньше задержка и выше нагрузка. Больше буфер — наоборот. Всё.

Порядок подбора:

  1. Начните со 128. Это обычно работает у всех.
  2. Поиграйте пару минут. Если щелчков нет — попробуйте 64.
  3. Появились щелчки или треск — вернитесь на ступень назад. Это ваш предел.

Не гонитесь за минимальным числом. Разница между 64 и 128 — примерно полторы миллисекунды, то есть полметра расстояния до комбика. Разница между «играет ровно» и «щёлкает» — гораздо больше.

4. Не опускаться ниже, чем имеет смысл

Вот измерение, которое многое объясняет. Замер физической петлёй — выход карты соединён со входом кабелем, программа выпускает щелчок и ждёт его обратно:

Буфер Задержка целиком Выигрыш
64 кадра 7,35 мс
32 кадра 6,24 мс −1,11 мс
16 кадров 6,15 мс −0,09 мс

С 64 до 32 выигрыш настоящий. С 32 до 16 — девять сотых миллисекунды, то есть ничего: дальше время съедают уже не буферы, а передача по USB и сами преобразователи, а они не сокращаются.

Зато нагрузка при вдвое меньшем буфере ровно вдвое выше. То есть ниже определённого предела вы платите риском срывов, не получая взамен ничего.

Предел этот у каждой карты свой, но порядок такой: 32–64 кадра для приличной внешней карты, 128–256 для ASIO4ALL на встроенном звуке.

5. Не верить числу, которое показывает драйвер

Драйверы сообщают свою задержку, и почти все занижают: они считают буферы, но не считают собственно преобразователи.

На той же карте драйвер обещал 6,44 мс, а замер петлёй дал 7,35. Разница почти в миллисекунду — и это нормальная, честная разница, а не поломка.

Настоящее число даёт только замер петлёй. Если вам важна точность — соедините выход со входом кабелем и померьте.

Что здесь делает StemPlayer

Строка настройки звука в StemPlayer: драйвер Audient USB Audio ASIO, буфер 64 кадра и заявленная задержка 3,5 миллисекунды

Программа работает через ASIO напрямую: выбор драйвера, размера буфера и пары выходов прямо в окне.

Показывает счётчик перегрузок. Это главное, чего не хватает при подборе буфера: обычно человек слышит щелчок и гадает, показалось или нет. Здесь видно числом — не ноль, значит движок не успевает, берите буфер побольше.

Умеет померить настоящую задержку петлёй — той самой, из таблицы выше.

Замер на Audient iD4: 6,2 мс при буфере 32 кадра. Это и есть то, ради чего всё затевается.

И главное, ради чего программа вообще существует: гитара идёт не сама по себе, а вместе с песней в одном микшере — со своей громкостью, замедлением и петлёй.

Чего программа не делает

Не заменяет драйвер вашей карты. Родной ASIO-драйвер всё равно нужен, его берут у производителя.

Не работает без ASIO вообще — в части живой гитары. Всё остальное (воспроизведение песни, табы, замедление) работает на любом компьютере, но гитару без ASIO не пустить.

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