zvuk

Hry jsou médiem, které je neustále v pohybu. Hratelnost soutěží v rychlochůzi, grafika pak běží maraton a pár kilometrů před cílovou páskou se začíná trochu zadýchávat. Ale i zvuková stránka si prošla razantním vývojem, který ve stínu grafického pokroku není úplně doceňován tak, jak by měl. Pokud o teorii zvuku moc nevíte a elektroakustika vám nic neříká, psychicky se připravte, že ze článku se možná něco nového naučíte. A připravte se, i pokud vám elektroakustika něco říká, protože teorii často velmi drsně zjednodušuji.

Začněme ale od úplných základů. Co to vlastně zvuk je? Z lehkého průzkumu na internetech jsem k mému překvapení zjistil, že někteří lidé si pletou akustické a elektromagnetické vlny. Velmi laicky řečeno jsou elektromagnetické vlny nehmotné vlny, které nesou energii a naše oči vidí jen velmi malinký výsek jejich frekvenčního spektra. Akustické vlny jsou zase změny hustoty prostředí. Ve většině případů se jedná o změny tlaku vzduchu, na které reaguje ušní bubínek a vnitřní, střední a vnější ucho.

Jak taková změna tlaku může probíhat? Pokud tlak nelineárně roste do maxima a minima, jedná se o sinusový průběh. Takový zvuk je našim uším vcelku příjemný, pokud není příliš vysoký a hlasitý. Jedná se o čistý a základní tón, jehož perioda se pořád dokola opakuje. Takový tón můžeme popsat frekvencí (jak rychle se perioda opakuje) a hlasitostí (jak vysoká je maximální výchylka, tedy jak veliký je maximální tlak).

Tlak se ovšem může měnit skokově a na maximální a minimální hodnotě určitou chvíli zůstat. Takový průběh se nazývá obdélníkový a uším už tak příjemný není. Obdélníkový průběh vznikne, když jednoduše sečtete několik dříve zmíněných sinusových průběhů určitých parametrů. Čím více takových jednoduchých sinů sečtete, tím více bude obdélník připomínat obdélník, jak můžete vidět na přiloženém obrázku. Tón tvořící obdélník tak můžeme také popsat frekvencí a výchylkou. Budeme popisovat ale samotné základy – siny. Obdélník tedy popíšeme několika frekvencemi a výchylkami.

zvuk2

A zvuky v prvních hrách byly přesně takové. Sčítaly se jednoduché sinusové průběhy do obdélníků, pil nebo trojúhelníků. My jsme tak slyšeli různé druhy bzučení a pípání. Hudba se vytvářela vrstvením různých druhů tónů s měnícími se parametry. A i když zvukaři dokázali uměle vytvořit hromadu zajímavých a rozmanitých syntetických zvuků, k realistickému audiu to mělo hodně daleko.

Jak šel vývoj vpřed, dočkali jsme se i pokročilých zvukových karet, které byly schopny zpracovávat navzorkované zvuky. Čož byl skok srovnatelný s tím vizuálním. Pro studia to ovšem znamenalo více práce. Už nestačilo mít jednoho programátora (generování syntetických zvuků a jejich správné posílání na výstup má blízko k matematice), který bude připravovat synteticné vzorky průběhů. Práce herního zvukaře se přiblížila práci filmového zvukaře.

Jak tedy probíhá takové nahrávání zvuků? Změny akustického tlaku se převedou na změny elektrického napětí. V určitém časovém intervalu (vzorkovací frekvence) se koukáme na výstup mikrofonu a čteme aktuální velikost napětí. Rychlost tohoto „koukání“ je opravdu rychlá. Za sekundu musíme uložit 44100, často až 48000 hodnot. Proč tolik, to nás teď moc zajímat nemusí (pokud bychom ukládali méně, přehrávaný signál by neodpovídal tomu nahranému). Hodnoty napětí z mikrofonu pak zakódujeme do jedniček a nul.

Není ale úplně ideální nahrát zvuk do jedné stopy a při nějaké herní události ho přehrát, a to z jednoho prostého důvodu. Zní to ploše. V reálu totiž rozeznáme polohu zdroje zvuku. Se zavřenýma očima poměrně jednoduše poznáte, kde co třísklo a prásklo. Ve hře byste to ale normálně nezjistili. Nahrání zvuku do sterea (jedna stopa pro pravé ucho, druhá pro levé) ničemu nepomůže, protože ve hře se pořád všechno mění, nepřátelé poskakují a hráč pobíhá. Jak problém vyřešit?

V reálném světě polohu zdroje zvuku lokalizujeme hlavně podle dvou parametrů. Časové a intenzitní diference (ITD a IID). Popsat se to dá jednoduše. U pravého ucha vám štěká pes. Do něj tedy dorazí štěkot dříve (časový rozdíl) a bude hlasitější (rozdíl intenzit). Do levého přijde o trošku později a o trošku méně hlasitěji. Mozek už signály dokonale zpracuje a zalarmuje vás, že máte za zadkem vzteklého čokla.

Do hry tedy zvuk nahrajeme do jedné stopy v mono. Chceme co nejplošší zabarvení, protože ho dále upravíme až ve hře zvukovým systémem. Je to stejné jako s grafikou. Difuzní texturu také chceme bez stínů a přepalů, protože nasvětlení pak definujeme jinou texturou a nasvícením v enginu. Takže máme třeba skřípání železa nahrané v jedné stopě. Ve hře pak určíme virtuální vzdálenost hráče od zdroje zvuku, zmíněnou jednu mono stopu zduplikujeme do dvou kanálů a podle určitého vzorce na každý kanál aplikujeme potřebné zpoždění a zesílení.

Aby byl výsledek co nejlepší, musí být nastavení kanálů co nejpřesnější a nahraný zvuk co nejčistčí. To zajistíme nahráváním ve stíněné místnosti, kde nedochází k odrazům vln od stěn (nebo při venkovním nahráváním za vhodných podmínek). Výsledek ale nebude pořád dokonalý, protože realita je daleko komplikovanější.

Ještě v části syntetických zvuků jsem se zmínil, že obdélníkový průběh vznikne součtem sinusových průběhů, přičemž každý má jinou frekvenci a maximální výchylku. To ale platí pro naprosto všechny druhy signálů. Spektrální analýzou zjistíme frekvence a velikosti všech složek analyzovaného signálu. Přebasovaný dubstep má například mnoho dominantních složek v nižších frekvencích. A je důležité vědět, že i spektrum zvukového signálu se může razantně změnit podle typu prostředí.

Pusťme si pro příklad z reproduktoru houslistku. Uvažujme, že se jedná o dokonalý reproduktor, který plně pokryje celé akustické spektrum. Zvuk houslí je vysoký a ostrý, tudíž je mnoho dominantních složek ve vysokých kmitočtech. Dejte pak mobil pod nějaký bytelný hrnec a hned poznáte rozdíl. Ostrý smičcový zvuk už není tak ostrý, ale utlumený. Slyšíme v něm také hlavně hlubší složky. Což znamená, že jsme potlačili ty vysoké. Něco podobného dělá i ekvalizér v hudebním přehrávači. Nažhavte Winamp/Aimp a zkuste si potlačit vysoké a pak nízké složky.

Podobně jako hrnec funguje i vaše hlava, uši a ramena. Hlava potlačuje vysoké složky, ušní boltce a ramena zase způsobují další odrazy, které také mají vliv na zvuk, co dorazí do vašich uší. A natáčení dvěma mikrofony do sterea zohledňuje pouze časové a intenzitní rozdíly, ne samotný tvar hlavy. Pro takřka dokonalé výsledky se používá speciální umělá hlava, co má v uších mikrofony. Jen si poslechněte na videu, jak taková nahrávka zní (až překvapivě realisticky). O něco levněji vás vyjdou speciální mikrofony, které si strčíte do vašich vlastních uší a vaše vlastní hlava pak slouží k modifikaci nahraného zvuku.

Jenže jak už jsme si napsali, do hry vždy a jen mono. Umělá hlava nám tedy v ničem nepomůže. Můžeme si ale vytvořit virtuální „hrnec“ (filtr), který bude mít vliv na spektrální složky stejný, jako hlava. Jak ale takový filtr navrhnout? Filtr má určitou charakteristiku, která nám říká, jak moc různé části spektra potlačuje. Říká se jí impulsní charakteristika. Přesněji řečeno impulsní charakteristika vyjadřuje vlastnosti systému na jednotkový impuls. Jednoduše řečeno tedy přehrajeme ničím nemodifikovaný zvuk (třeba pseudonáhodný šum) a pak se podíváme, jak je v místě každého ucha šum změněn a tato změna nám v podstatě ukazuje vliv naší hlavy na zvuk. Tento vliv vyjadřují koeficienty, které si uložíme a budeme je pak ve hře aplikovat jako filtr na přehrávané zvuky, které pak budou znít daleko realističtěji.

Poměrně dlouze jsme si rozebrali zatím vlastnosti naší hlavy na zvuk. Musíme ale brát ohled též na vliv prostředí a ten pak simulovat ve hrách. Což lze udělat také speciálním filtrem, protože můžeme obdobně změřit impulsní charakteristiku místnosti a tu pak aplikovat do her. A nesmíme zapomínat ani na odrazy vln od stěn, čímž lze v herních prostorech vytvořit vhodné ozvěny.

Faktem je, že v reálném světe naše slyšení zvuku závisí na mnoha faktorech. Jejich simulace je výpočetně náročná, ale v dnešní době to už problémem není. Vysokorozpočtové tituly používají speciální zvukové systémy, jako například FMOD, QSound či OpenAL, které jsou vytvářeny profesionálními firmami (v případě OpenAL tomu zrovna tak není). Implementace takových systémů do her je pak daleko lehčí, než si napsat vlastní komplexní audio systém.

Když si dnes pustíte nějaký opravdu starý titul, který vám pískáním maximálně rozbolaví hlavu, musíte prostě ocenit pokrok ve zvukové kvalitě dnešních her. Je stejně významný, jako ten vizuální. I když to na první pohled nevypadá.