Я чую кроки вже після того, як бачу ворога

Windows типово віддає звук твоїй звуковій карті буферами по 10 мілісекунд — це власне число Microsoft, — і все інше нашаровується поверх нього. Звідки береться кожна мілісекунда, які з них можна прибрати і чому гарнітура, яка відкриває мікрофон, стає драматично гіршою.

Типово Windows переносить звук між програмами і твоїм звуковим залізом буферами по 10 мілісекунд, і це власне число Microsoft, а не оцінка: "by default all applications in Windows 10 and later will use 10-ms buffers to render and capture audio". Усе інше — ефекти, просторова обробка, передискретизація, бездротова ланка — додається поверх цієї нижньої межі. Якщо твої кроки приходять уже після спалаху пострілу, причина може бути в одному з цих додатків, і розділи нижче розбирають їх по одному.

Який шлях проходить звук, із власними числами Microsoft

Документ Microsoft Low Latency Audio розбиває шлях відтворення на етапи й ставить числа тим із них, якими керує сама. Коротка версія:

ЕтапЧого це коштуєДжерело
Гра записує звук у буфер——
Звуковий рушій читає й обробляє його, підвантажуючи ефекти як об'єкти обробки звуку (APO)1,3 мс у Windows 10 і новіших — до того було ~12 мс для програм із рухомою комою і ~6 мс для цілочисловихMicrosoft
Кожен ефект у ланцюжку додає своє"The latency of the APOs varies based on the signal processing within the APOs" — фіксованого числа немаєMicrosoft
Рушій пише в буфер, який читає драйверТипово 10 мс; мінімум оголошує сам звуковий драйверMicrosoft
Драйвер переносить його в залізо, яке може обробити його ще разЗалежить від пристрою, не публікується—
Динамік або навушникФізика—

Два факти з того документа варто носити з собою:

З цього випливає один цікавий наслідок. Microsoft зазначає, що коли одна програма просить малий буфер, "all applications that use the same endpoint and mode will automatically switch to that small buffer size", а щойно ця програма завершується, рушій повертається до 10 мс. Тобто програма з низькою затримкою, яка вже працює на тому самому виході, здатна зменшити буфер, яким користується твоя гра, без відома самої гри.

Причина 1 — Bluetooth-гарнітура, яка відкриває свій мікрофон

Якщо ти користуєшся Bluetooth-гарнітурою і ще й говориш у неї, ця причина стосується тебе — і вона задокументована, а не фольклорна.

Windows відтворює стерео через A2DP, а для мікрофона використовує профіль Hands-Free — і робити обидва водночас не вміє. Сторінка Microsoft Bluetooth Classic Audio каже, що на Windows 11 система перемикається з A2DP на HFP, коли "an application opens the input (microphone) endpoint" або "an application creates an output (playback) stream with the category set to Communications". HFP працює на 8 кГц (вузька смуга) або 16 кГц (широка смуга), у моно, і "Windows automatically resamples audio as needed for the currently selected profile" — тож звук гри на 48 кГц передискретизується вниз під лінію телефонної якості тієї ж миті, коли твій голосовий чат відкриває мікрофон.

Саме тому гарнітура нормально звучить у меню й жахливо в матчі: це не той самий звуковий шлях.

Що робити:

  1. Для змагальної гри бери дротову гарнітуру або бездротову гарнітуру 2,4 ГГц із власним USB-приймачем. Вони тримають один шлях і не перемикають профілі.
  2. Якщо мусиш лишитися на Bluetooth, візьми окремий мікрофон, щоб ніщо не відкривало вхідну кінцеву точку гарнітури, — тоді пристрій лишиться на A2DP.
  3. Перевір, який кодек ти насправді отримав. Windows бере перший кодек, який підтримують обидва боки, у порядку aptX Adaptive, AAC, aptX Classic, SBC — таблиця доступності за версіями Windows є на тій самій сторінці Microsoft.
  4. Якщо пристрій погано спарюється або кінцеві точки взагалі зникають, це вже інша несправність: для неї є картка відновлення Bluetooth.

Bluetooth-ланка додає час кодування, передавання й декодування в обидва боки, і жоден виробник не публікує одного числа, яке було б справедливим для всіх чипсетів і адаптерів, — тож і ми його не друкуватимемо. Що документація виробників таки встановлює, так це механізм і те перемикання профілю вище. Для рішення цього досить.

Причина 2 — частота дискретизації, яку доводиться перетворювати

Якщо гра виводить 48 кГц, а твій пристрій налаштований на 44,1 кГц — або навпаки, — рушій передискретизує, а це робота, і безкоштовною вона не буває. Windows дає програмам прапорець, який вони можуть виставити тоді, коли "it is important to avoid resampling in the audio engine", — а це вже каже тобі, що перетворення достатньо реальне, щоб Microsoft дала розробникам спосіб його обійти.

Що робити:

  1. Клацни правою кнопкою на значку динаміка, відкрий Параметри звуку, а тоді властивості свого пристрою виводу.
  2. Знайди формат за замовчуванням (зазвичай у розділі Додатково) і постав 24 біт, 48000 Гц, якщо документація твого заліза не каже інакше. І ігри, і Windows працюють у 48 кГц.
  3. Якщо у твоєї гарнітури є власна програма налаштування, постав у ній ту саму частоту.
  4. Увімкни щось і переконайся, що воно й далі працює. Якщо зламалася якась конкретна програма, поверни налаштування назад — це оборотно і не варте того, щоб втратити програму.

Причина 3 — стек ефектів, про який ти не знав, що він увімкнений

Кожен ефект на цьому шляху — це об'єкт обробки звуку, і власне формулювання Microsoft каже, що їхня затримка змінюється залежно від обробки всередині них. Просторовий звук, віртуальний об'ємний звук, «покращення», вирівнювання гучності, еквалайзер від виробника гарнітури і незаглушений другий вихід — усе це додає етапи.

Просторова обробка тут найцікавіша для гравця, бо це справжній обмін, а не помилка: вона існує для того, щоб було легше визначати напрямок, — і водночас вона є ще одним етапом у ланцюжку. Суди про неї на слух, а не з принципу.

Що робити:

  1. Відкрий властивості свого пристрою виводу й пошукай вкладку покращень або ефектів. Вимкни там усе й послухай.
  2. Тимчасово вимкни просторовий звук і зіграй раунд на звичайному стерео. Якщо напрямок став гіршим, а тайминг кращим — тепер ти знаєш свій власний обмін.
  3. Так само вимкни еквалайзер і віртуалізацію в програмі своєї гарнітури. По одному за раз.
  4. Увімкни назад лише те, чого тобі забракло.

Правильної відповіді тут немає, а той, хто каже тобі, що вона є, не проганяв цього тесту на твоїх вухах із твоєю гарнітурою.

Причина 4 — монопольний режим: що він дає і чого коштує

Програма може відкрити пристрій у монопольному режимі, і Microsoft описує рівно те, що це означає: "the data bypasses the audio engine and goes directly from the application to the buffer where the driver reads it from. However, if an application opens an endpoint in exclusive mode, then there's no other application that can use that endpoint to render or capture audio."

Власна сторінка Microsoft про монопольний режим формулює різкіше: "Exclusive-mode streams seize the audio endpoint—all system sounds, notifications, and audio from other applications are silenced."

На тій же сторінці є важливе сучасне застереження. Починаючи з Windows 10, IAudioClient3 дозволяє потоку в спільному режимі працювати з дуже малими періодами, що "provides latency comparable to exclusive mode while preserving system sound mixing and interoperability" — тож монопольний режим уже не той автоматичний виграш, яким він був у 2010 році.

Галочка у Windows — Дозволити застосункам монопольно керувати цим пристроєм — сама нічого в монопольний режим не переводить. Вона лише вирішує, чи буде це дозволено програмі, яка попросить. Лишити її ввімкненою не коштує нічого; вимкнути її означає не дати тим програмам, яким це потрібно, цього отримати.

Для гри, у якій тобі потрібні ще й голосовий чат, браузер і системні звуки, монопольний режим — зазвичай неправильний обмін. Скажи це вголос, перш ніж вирушати його шукати.

Що w0a тут робить і чого не робить

Сторінка Fix: одна картка відновлення на кожну річ, яку можна змінити, і кожна повертає стандартне значення Windows.
Сторінка Fix: одна картка відновлення на кожну річ, яку можна змінити, і кожна повертає стандартне значення Windows.

Що робить. На сторінці Твіки реєстру у групі ЗВУК є рівно один запис — Пріоритет аудіопотоків (MMCSS). Він ставить Scheduling Category завдання Audio мультимедійного планувальника в High, під HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio. Твіки звуку — це сторінка з розбором саме цього запису.

Будьмо точні щодо механізму. Підняття пріоритету планування не зменшує буфер — воно підвищує ймовірність того, що звуковий потік працюватиме тоді, коли настане його дедлайн. На завантаженій машині це прибирає запізнілі буфери й тріски, які з ними приходять, а це ти чуєш. На незавантаженій машині вигравати тут нема чого.

Чого не робить. Він не змінює розміру твого буфера — попросити про це може лише сама програма. Він не змінює частоти дискретизації. Він не встановлює звукового драйвера. Він не чіпає просторового звуку. І він не пише SystemResponsiveness, яке є в кожному інтернетному списку налаштувань звуку: нижче за 10 це значення все одно поводиться як типове, а на машині, де вже стоїть 10, ми виміряли, що запис 0 робить гірше. Сторінка Fix усе одно може повернути його до стандартного значення Windows, якщо його змінив давніший інструмент.

На сторінці Оптимізації є споріднений перемикач — Тримати профіль планувальника ігор у категорії High (MMCSS Games) — і він заслуговує на таку саму чесність. Він впливає лише на ті ігри та звукові стеки, які справді реєструють завдання мультимедійного планувальника. На ігри, які його ніколи не реєструють, він не впливає, і саме тому продукт не робить для цього перемикача жодної заяви про частоту кадрів.

Якщо зламався сам звуковий стек — звук пропадає, пристрій зник, давній інструмент лишив значення планування десь у дивному місці — картка відновлення Звук перезапускає звукові служби й записує назад стандартне значення Windows. Це відновлення, а не твік, і воно не залежить від того, чи робив цю зміну саме w0a.

Чого програма тут не може

Лишається короткий чесний список того, що справді твоє: транспорт (дріт проти бездроту), частота дискретизації, стек ефектів і те, чи встигає звуковий потік потрапити в розклад вчасно. Пройди ці чотири пункти — і ти прибрав усе, що можна прибрати.

Пов'язане

Із приблизно дванадцяти етапів між кліком і зміною пікселя програмі належать три, а решта належить прошивці, дисплею і грі: Як зменшити input lag: що програма може скоротити, а що ні

w0a не змінює жодного налаштування Windows, поки ти не попросиш, а твік зберігає старе значення, перш ніж записати нове. Бути в курсі

Ця сторінка допомогла?

Чого бракувало або що не спрацювало? Ми читаємо кожну таку відповідь.

Якщо ця сторінка не розв'язала проблему, напиши нам — скажи, яку статтю ти читав, і ми виправимо статтю.