FIT ČVUT

Adam Vesecký

NI-APH
Přednáška 8

Hudba a zvuky

Digitální zvuk

PCM

  • pulzně-kódovaná modulace, digitální reprezentace analogového signálu
  • sample - jeden vzorek, reprezentuje amplitudu signálu v čase
  • bit depth - bitová hloubka, jeden bit = 6dB rozsah
  • sample rate - počet samplů za vteřinu: 8 kHz, 22.05 kHz, 44.1 kHz, 48 kHz
  • frequency - počet pulzů za sekundu
  • frame - sekvence samplů pro jeden kanál
  • buffer - sekvence framů v paměti, obvykle 64-4096 na jeden buffer
    • čím vyšší buffer, tím vyšší latence, ale nižší zatížení processoru
Digital sound diagram

Bitová hloubka a sample rate

PCM attributes
PCM attributes
PCM attributes
PCM attributes

Zvukové formáty

Časová doména

  • velmi rychlý přístup
  • samply a efekty
  • PCM, WAV, FLAC

Frekvenční doména

  • lepší komprese
  • hudba a hlasy
  • MP3, OGG Vorbis

Synth formáty

  • obsahují noty, případně i samply a efekty
  • a) trackery: MOD, S3M, XM, IT
  • b) MIDI (např. elektrické piano)
  • c) proprietární formáty zvukových editorů
NI-APH audio logo

Zvukové formáty

Sound Formats
Sound Formats

Historie digitálního zvuku

  • 1981 - Commodore MOS 6581, vzestup demoscény
  • 1985 - Yamaha YM3812 (OPL2), FM synth používaný pro DOS hry
  • 1987 - Amiga Ultimate Soundtracker, vzestup trackerů
  • 1989 - Sound Blaster 1.0 - IBM PC dostalo PCM zvuky
  • 1992 - Gravis Ultrasound - MIDI music s wavetable
  • 1996 - DirectSound - vzestup (a pád) hardwarové akcelerace
  • 1996 - VST pluginy - umožnili syntetickou tvorbu komplexní hudby
  • 1997 - Realtek ALC5611 - vzestup on-board audio čipů
  • 1998 - Sound Blaster Live! - poslední vlajková loď Creative Labs
  • 2004 - High Definition Audio - nová specifikace pro PC
  • 2005 - sound processing se vrací z HW do SW (díky vícejádrovým CPU)
  • 2012 - Dolby Atmos - technologie pro 3D zvuk
  • 2017 - NVidia VRWorks - zpracování zvuku na GPU
  • 2021+ - vzestup AI toolů jako Lovo.ai, Murf, Synthesys, melody.ml
Gravis Ultrasound
Arrow
Realtek
Shrug icon

Syntéza a skládání hudby

Generátory zvuku

  • generátor - oscilátor, který dokáže vygenerovat tón
    • syntetická hudba kombinuje generované tóny, efekty, filtry, a nahrané samply
  • hlavní typy syntézy: aditivní, subtraktivní, frekvenční modulace, přes wavetably
Sound Waves

ADSR Envelope

  • obálka popisuje změnu zvuku v čase
  • attack - čas, za který se zvuk přesune z nuly na nejvyšší hlasitost (fade in)
  • decay - za jak dlouho se zvuk z peaku dostane do ustáleného stavu
  • sustain - maximální intenzita ustáleného stavu
  • release - návrat do ticha (fade out)
Sound ADSR Envelope diagram

Efekty

  • Echo - signály zpožděné o 50 a více ms
  • Reverberation (Reverb/Dozvuk) - odraz zvuku od povrchu, používaný pro indoor prostředí
  • Chorus - zpožděné zvuky přidané k originálu, přidávají hloubku
  • Time stretching - změna rychlosti bez změny výšky tónu
  • Compressor - redukuje dynamický rozsah zvuku (hlasité zvuky jsou tišší a tiché hlasitější)
  • Equalization - změna hlasitosti v různých frekvenčních intervalech
  • Filtering - aplikace filtrů
  • Lowpass/highpass - filter který usekne vysoké či nízké frekvence
  • Portamento - postupné zvýšení intenzity
  • Vibrato - pulzující změna intenzity
  • Tremolo - pulzující změna hlasitosti
  • Panning - změna hlasitosti pro různé kanály

VST pluginy

  • Visual Studio Technology
  • interface pro zpracování digitálního zvuku
  • dají se integrovat do každého DAW (digital audio workstation)
  • používají se pro efekty, konvertory, filtry, virtuální nástroje
VST plugins

Nahrávání zvuku

  • ambientní zvuky - nahrávání přímo v cílovém prostředí
  • syntetické efekty - DAW software (FLStudio, Audacity,...) a sada VST pluginů
  • skutečné efekty - vytvářené foley artisty
Sound Recording process
Foley stage

Hudba ve hrách

Hudba ve hrách

Žánry

  • chiptune (pixel-art)
  • elektronická hudba (arkádovky, shoot-em-upy)
  • instrumentální hudba (story-based hry)

Způsoby prezentace

  • character-based - zaměřuje se na postavy
  • environment-based - zaměřuje se na prostředí
  • emotional-based - zaměřuje se na atmosféru

Použití

  • reflektuje stav hry
  • reflektuje prostředí, ve kterém se hráč nachází
  • reflektuje příběhovou linku
  • upozorňuje hráče na události ve hře
Music key

Hudba ve hrách

Monkey Island 2: LeChuck's Revenge (1991)

  • iMUSE engine pro přechod mezi lokacemi

The Legend of Zelda: Ocarina of Time (1998)

  • každá postava měla vlastní téma (např. Saria's Theme)

F.E.A.R (2005)

  • reaktivní hudba řízená událostmi

League of Legends (2009)

  • looping hudba, in-game alerty

Mass Effect 3 (2012)

  • komplexní instrumentální hudba

Hellblade: Senua's Sacrifice (2017)

  • binaural audio pro zvýšení imerze

Hudba jako hlavní mechanika

Tileshop

Tiles Hop

Guitar Hero

Guitar Hero

Dance Dance Revolution

Dance Dance Revolution

Hudba ve hrách

Kategorie assetů

  • diegetické zvuky - provázány s viditelnými objekty (hlas postav, kroky)
  • nediegetické zvuky - nemají vazbu na objekty ve hře (soundtrack, vypravěč)
  • hudba na pozadí - ambientní hudba
  • score - soundtrack
  • interface zvuky - např. stisk tlačítka
  • ostatní - např. GTA radio
  • alerty - upozornění pro hráče

Dynamika

  • lineární hudba - reflektuje pouze hlavní předěly (dokončený level)
  • dynamická hudba - reaguje na změnu gameplaye či prostředí
  • adaptivní hudba - adaptuje se na herní prostředí a hráče

Příklad: lineární hudba

Doom music diagram

Doom 2

Prince of persia music diagram

Prince of Persia 2: Shadow and the flame

Doom2
Prince of Persia 2

Dynamická hudba

Funkce

  • looping - smyčka
    Music features - looping
  • branching - větvící se hudba
    Music features - branching
  • layering - některé části je možno utlumit
    Music features - layering
  • transitions - přechod mezi dvěma tracky
    Music features - transitions

Přechody

  • přechod z jednoho tracku do druhého
  • nikdy nesmíme hudbu náhle utnout
Crossfade transition

Cross-fade

  • jednoduché řešení - první track se utlumí, druhý zesílí
  • není vhodné pro instrumentální hudbu
Transition cue

Přechodový klip

  • každý song má svůj vlastní klip, který je použit na přechod
Transition points

Přechodové body

  • každý song má několik bodů, kde může dojít k přechodu
  • složité na implementaci

iMUSE

  • dynamická hudba pro SCUMM engine
  • vyvinuto firmou LucasArts v 1991
  • databáze sekvencí obsahovala rozhodovací body uvnitř tracků
  • segmenty bylo možno měnit, vypínat, loopovat, obsahovaly různé skoky atd.
Monkey Island music transition
Monkey Island

Monkey Island 2

Rušivá hudba

  • nesouvisející hudba
  • špatný looping
  • špatné přechody
  • špatné mixování (např. zvuk který přehluší dialog)
  • repetitivní NPC
  • nízká úroveń variace (ta samá hudba pro vícero levelů, ten samý zvuk pro kroky)
  • falešný poplach
  • příliš mnoho zvuků hrajících současně
I used to be an adventurer like you meme
Battle music when no enemies are around meme
Just Cause

Adaptivní hudba

  • dynamická hudba reflektuje změny v gameplayi
  • adaptivní hudba více diverzitní, podporuje emergentní gameplay

Variabilita

  • variabilní tempo
  • variabilní výšky
  • variabilní rytmus
  • variabilní hlasitost
  • variabilní DSP
  • variabilní melodie
  • variabilní harmoničnost
Apeout

Ape Out (2019) - reaktivní hudební systém

Zvuky ve hrách

Zvukové efekty

  • iluze imerze ve 3D hrách je značně posílena zvuky
  • 2D hry - hlavní fokus je hudba, jednoduché zvuky jsou dostačující
  • 3D hry - komplexní poziční zvuky

Typy

  • one-shot - tzv. štěky, vždy stejné
  • buzzery - např. zvuk zářivek
  • pohybující se objekty - např. Dopplerův efekt u aut
  • náhodné - např. zvuky explozí
  • periodické - např. vodopád
  • dynamické - např. různé zvuky pro kroky

3D zvuky

Útlum (attenuation)

  • čím dále je zdroj, tím tišeji zní
Attenuation in 3D sound

Pohlcení

  • pokud je před zdrojem bariéra, dojde ke ztrátě vyšších frekvencí
Occlusion in 3D sound

Překážky

  • pokud cesta od zdroje není přímá
  • způsobuje zpoždění a změnu hlasitosti v různých směrech
Obstruction in 3D sound

3D zvuk

Panning

  • změna hlasitosti podle toho, kde je zdroj

HRTF

  • přenosová funkce modelující vnímání zvuku ušima
  • popisuje, jak je zvuk filtrován difrakcí lidské hlavy
  • používá se pro generování binaurálních zvuků

Ambisonics

  • zvukový formát, který pokrývá zdroje
    nad a pod posluchačem

Raytracing

  • fyzicky přesné renderování zvuku, používá VRWorks
Raytracing in 3D sound

Audio API

Audio API

  • audio smyčka se řídí sample ratem a velikostí bufferu
  • audio enginy používají double buffer - z jednoho hrajeme a do druhého dáváme data
  • callback API - OS-level thread cally při dostupnosti bufferu (např. CoreAudio pro MacOS)
  • polling API - je potřeba se periodicky dotazovat na dostupnost bufferu (např. Windows WASAPI)
Audio engine diagram

Audio Engine

Příklad: Godot audio loop

1 OSStatus AudioDriverCoreAudio::output_callback(...) {
2 AudioDriverCoreAudio *ad = (AudioDriverCoreAudio *)inRefCon;
3 ...
4 for (unsigned int i = 0; i < ioData->mNumberBuffers; i++) {
5 AudioBuffer *abuf = &ioData->mBuffers[i];
6 unsigned int frames_left = inNumberFrames;
7 int16_t *out = (int16_t *)abuf->mData;
8
9 while (frames_left) {
10 unsigned int frames = MIN(frames_left, ad->buffer_frames);
11 ad->audio_server_process(frames, ad->samples_in.ptrw());
12
13 for (unsigned int j = 0; j < frames * ad->channels; j++) {
14 out[j] = ad->samples_in[j] >> 16;
15 }
16
17 frames_left -= frames;
18 out += frames * ad->channels;
19 };
20 };
21 ...
22 return 0;
23 };

Audio Enginy

  • FMOD Engine - integrován do Unity (skrze plugin) a Unreal
  • WebAudio API - API pro zpracování zvuku v prohlížečích
  • RealSpace 3D Audio - 3D audio engine, podporovaný v Unrealu
  • VRWorks - raytraced sound rendering od NVidia
  • Audiokinetic Wwise - jeden z dalších 3D audio enginů
  • Windows Sonic - HRTF engine pro Windows a HoloLens
  • Project Acoustics - kombinuje HRTF s enginem Project Triton
Audio engine pipeline

Pipeline audio enginu

WebAudio API

  • JavaScript API pro zpracování zvuku
  • funkce: modular routing, spatialized audio, convolution engine, biquad filtrování,...
  • spatialized audio (distance attenuation, sound cones, obstruction, panning models)
  • convolution engine (řeší šíření zvuku dle velikosti místnosti)
  • používá audio uzly, které se propojují dohromady
WebaudioApi diagram

Příklad uzlů

Co jsme si řekli

  • Něco o pojmech jako je PCM, sample rate, frame a buffer
  • Něco o waveformech a generátorech
  • Něco o dynamické hudbě (looping, branching, layering, transitions)
  • Něco o pojmech jako je attenuation, occlusion a obstruction ve 3D zvucích

Hláška na závěr

Já si to koupil jako šavloware... to jsou takový ty hry, co najdeš ve slevovym koši v Penny Marketu!Jakub Olejník