Slyším kroky později, než je vidím

Windows ve výchozím stavu předávají zvuk zvukové kartě v 10milisekundových bufferech — je to vlastní číslo Microsoftu — a všechno ostatní se na to nabaluje. Odkud se která milisekunda bere, které se dají odstranit a proč se sluchátka, která otevřou mikrofon, zhorší dramaticky.

Ve výchozím stavu přesouvají Windows zvuk mezi aplikacemi a tvým zvukovým hardwarem v 10milisekundových bufferech, a je to vlastní číslo Microsoftu, ne odhad: "by default all applications in Windows 10 and later will use 10-ms buffers to render and capture audio". Všechno ostatní — efekty, prostorové zpracování, převzorkování, bezdrátová linka — se přidává na tuhle podlahu. Pokud ti kroky přicházejí až po záblesku z hlavně, důvodem může být jedna z těch přidaných věcí, a oddíly níže je probírají jednu po druhé.

Cesta, kterou zvuk projde, s vlastními čísly Microsoftu

Dokument Low Latency Audio od Microsoftu rozděluje cestu přehrávání na fáze a k těm, které řídí, uvádí čísla. Krátká verze:

FázeKolik stojíZdroj
Hra zapíše zvuk do bufferu——
Zvukový engine ho přečte a zpracuje, přičemž načte efekty jako audio processing objects (APO)1,3 ms ve Windows 10 a novějších, dřív ~12 ms pro aplikace ve float a ~6 ms pro celočíselnéMicrosoft
Každý efekt v řetězci přidá svoje"The latency of the APOs varies based on the signal processing within the APOs" — žádné pevné čísloMicrosoft
Engine zapíše do bufferu, ze kterého čte ovladač10 ms ve výchozím stavu; minimum deklaruje zvukový ovladačMicrosoft
Ovladač ho přesune do hardwaru, který ho může zpracovat znovuZávisí na zařízení, nezveřejněno—
Reproduktor nebo sluchátkaFyzika—

Dva fakty z toho dokumentu stojí za to nosit s sebou:

Plyne z toho jeden zajímavý důsledek. Microsoft uvádí, že když si o malý buffer řekne jedna aplikace, "all applications that use the same endpoint and mode will automatically switch to that small buffer size", a engine se vrátí na 10 ms, jakmile ta aplikace skončí. Nízkolatenční aplikace, která už na stejném výstupu běží, tak může zmenšit buffer, který používá tvoje hra, aniž by o tom hra věděla.

Příčina 1 — bluetooth sluchátka, která otevřou mikrofon

Pokud používáš bluetooth sluchátka a zároveň do nich mluvíš, tahle příčina se tě týká, a je zdokumentovaná, ne folklor.

Windows hrají stereo přes A2DP a pro mikrofon používají Hands-Free Profile — a obojí najednou neumí. Stránka Bluetooth Classic Audio od Microsoftu říká, že na Windows 11 přepnou Windows z A2DP na HFP ve chvíli, kdy "an application opens the input (microphone) endpoint" nebo kdy "an application creates an output (playback) stream with the category set to Communications". HFP běží na 8 kHz (úzkopásmově) nebo 16 kHz (širokopásmově), v monu, a "Windows automatically resamples audio as needed for the currently selected profile" — takže hra hrající zvuk na 48 kHz se převzorkuje dolů na linku v kvalitě telefonního hovoru v tom okamžiku, kdy tvůj hlasový chat otevře mikrofon.

Proto sluchátka znějí v menu dobře a v zápase hrozně: není to stejná zvuková cesta.

Co s tím:

  1. Na soutěžní hraní použij drátová sluchátka nebo vyhrazená bezdrátová sluchátka na 2,4 GHz s vlastním přijímačem USB. Ta drží jednu cestu a profily nepřepínají.
  2. Pokud musíš zůstat na Bluetoothu, použij samostatný mikrofon, aby nic neotevřelo vstupní endpoint sluchátek a zařízení zůstalo na A2DP.
  3. Zkontroluj si, jaký kodek jsi vlastně dostal. Windows vyberou první kodek, který podporují obě strany, v pořadí aptX Adaptive, AAC, aptX Classic, SBC — tabulka dostupnosti podle verze Windows je na téže stránce Microsoftu.
  4. Pokud se zařízení špatně páruje nebo endpointy úplně zmizí, je to jiná závada: opravná karta na ni je Bluetooth.

Bluetooth linka přidává čas na zakódování, přenos a dekódování v obou směrech a žádný výrobce nezveřejňuje jediné číslo, které by platilo napříč čipsety a adaptéry — takže tady žádné tisknout nebudeme. Co dokumentace výrobců doloží, je mechanismus a přepnutí profilu popsané výš. Na rozhodnutí to stačí.

Příčina 2 — vzorkovací frekvence, kterou je potřeba převádět

Pokud hra vydává 48 kHz a tvoje zařízení je nastavené na 44,1 kHz — nebo naopak — engine převzorkovává, což je práce a není zadarmo. Windows nabízejí příznak, který si aplikace může nastavit, když "it is important to avoid resampling in the audio engine", a to ti říká, že ta konverze je natolik skutečná, že Microsoft dal vývojářům způsob, jak se jí vyhnout.

Co s tím:

  1. Klikni pravým na ikonu reproduktoru, otevři Nastavení zvuku a pak vlastnosti svého výstupního zařízení.
  2. Najdi výchozí formát (obvykle pod Upřesnit) a nastav ho na 24 bitů, 48000 Hz, pokud dokumentace tvého hardwaru neříká něco jiného. Hry i Windows pracují v 48 kHz.
  3. Nastav stejnou frekvenci i v konfiguračním softwaru svých sluchátek, pokud nějaký mají.
  4. Něco pusť a ověř, že to pořád funguje. Pokud se rozbije konkrétní aplikace, vrať nastavení zpátky — tohle je vratné a nestojí to za to, přijít kvůli tomu o aplikaci.

Příčina 3 — stoh efektů, o kterém jsi nevěděl, že je zapnutý

Každý efekt v cestě je audio processing object a vlastní formulace Microsoftu je, že se jejich latence liší podle zpracování uvnitř nich. Prostorový zvuk, virtuální surround, „vylepšení“, vyrovnávání hlasitosti, EQ od výrobce sluchátek a neztlumený druhý výstup — každý z nich přidává fáze.

Prostorové zpracování je pro hráče ta zajímavá položka, protože je to skutečná výměna, ne omyl: existuje proto, aby se dal snáz odhadnout směr, a je to další fáze v řetězci. Posuď ho uchem, ne principiálně.

Co s tím:

  1. Otevři vlastnosti svého výstupního zařízení a najdi záložku s vylepšeními nebo efekty. Vypni všechno a poslouchej.
  2. Dočasně vypni prostorový zvuk a zahraj si kolo v čistém stereu. Pokud se zhoršil směr a zlepšilo časování, znáš teď svou vlastní výměnu.
  3. Stejným způsobem vypni EQ a virtualizaci v softwaru svých sluchátek. Jedno po druhém.
  4. Zapni zpátky jen to, co ti chybělo.

Správná odpověď tady neexistuje a kdokoli ti tvrdí, že existuje, ten test na tvých uších s tvými sluchátky nespustil.

Příčina 4 — exkluzivní režim: co si koupíš a co to stojí

Aplikace může zařízení otevřít v exkluzivním režimu a Microsoft přesně popisuje, co to znamená: "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."

Vlastní stránka Microsoftu o exkluzivním režimu je ještě přímější: "Exclusive-mode streams seize the audio endpoint—all system sounds, notifications, and audio from other applications are silenced."

Tatáž stránka nese i důležitou moderní výhradu. Od Windows 10 dovoluje IAudioClient3 používat velmi krátké periody i proudu ve sdíleném režimu, což "provides latency comparable to exclusive mode while preserving system sound mixing and interoperability" — exkluzivní režim tedy už není ta automatická výhra, kterou byl v roce 2010.

Zaškrtávátko ve Windows — Povolit aplikacím, aby měly nad zařízením výhradní kontrolu — samo o sobě nic do exkluzivního režimu nepřepne. Rozhoduje jen o tom, jestli to aplikace, která si o to řekne, smí dostat. Nechat ho zapnuté nestojí nic; vypnout ho znamená, že aplikace, které o to stojí, to nedostanou.

Pro hru, u které potřebuješ i hlasový chat, prohlížeč a systémové zvuky, je exkluzivní režim obvykle špatná výměna. Řekni si to nahlas, než ho půjdeš hledat.

Co tady w0a dělá a co ne

Stránka Fix: jedna opravná karta na každou věc, která se dá změnit, každá vrací výchozí hodnotu Windows.
Stránka Fix: jedna opravná karta na každou věc, která se dá změnit, každá vrací výchozí hodnotu Windows.

Co dělá. Stránka Regedit tweaky má ve skupině ZVUK přesně jednu položku a jmenuje se Priorita zvukových vláken (MMCSS). Nastavuje Scheduling Category úlohy Audio multimediálního plánovače na High, pod HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Audio. Stránka k té jedné položce jsou Zvukové tweaky.

K mechanismu buď přesný. Zvýšení plánovací priority buffer nezmenší — způsobí, že zvukové vlákno spíš poběží ve chvíli, kdy přijde jeho termín. Na vytíženém počítači to odstraní pozdní buffery a lupance, které s nimi chodí, a to slyšíš. Na nečinném počítači tam není co získat.

Co nedělá. Nemění velikost tvého bufferu — o tu si může říct jedině aplikace. Nemění tvoji vzorkovací frekvenci. Neinstaluje zvukový ovladač. Nesahá na prostorový zvuk. A nezapisuje SystemResponsiveness, který je v každém internetovém seznamu ladění zvuku: pod 10 se ta hodnota stejně chová jako výchozí a na počítači, který už na 10 nastavený je, jsme naměřili, že zápis 0 věci zhorší. Stránka Fix ji přesto umí opravit na výchozí hodnotu Windows, pokud ji změnil starší nástroj.

Na stránce Optimalizace je příbuzný přepínač — Držet profil plánovače her v kategorii High (MMCSS Games) — a zaslouží si stejnou poctivost. Týká se jen titulů a zvukových stohů, které si opravdu zaregistrují úlohu u multimediálního plánovače. Hry, které si žádnou nezaregistrují, nechává beze změny, a produkt přesně proto u toho přepínače netvrdí nic o snímkové frekvenci.

Pokud je rozbitý sám zvukový stoh — zvuk vypadává, zařízení zmizelo, starší nástroj nechal plánovací hodnotu někde podivně — opravná karta Zvuk restartuje zvukové služby a zapíše zpátky výchozí hodnotu Windows. To je oprava, ne tweak, a nezávisí na tom, jestli tu změnu udělal w0a.

Co tady software nedokáže

Zbývá krátký poctivý seznam toho, co je opravdu tvoje: přenos (drát proti bezdrátu), vzorkovací frekvence, stoh efektů a to, jestli se zvukové vlákno naplánuje včas. Projdi si ty čtyři věci a odstranil jsi všechno, co odstranit jde.

Související

Ze zhruba tuctu fází mezi kliknutím a změnou pixelu vlastní software tři, zbytek patří firmwaru, obrazovce a hře: Jak snížit latenci (input lag): co software dokáže zkrátit a co ne

w0a nezmění žádné nastavení Windows, dokud o to nepožádáš, a tweak si před zápisem nové hodnoty uloží tu starou. Upozornit mě

Pomohla ti tahle stránka?

Co chybělo, nebo co nefungovalo? Čteme každou jednu takovou zprávu.

Jestli tahle stránka problém nevyřešila, napiš nám — uveď, který článek jsi četl, a my ten článek opravíme.