200 likes | 282 Views
Game Programming Gems 7 - Audio -. Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung SS 13 AM3: Softwaretechnologie II (Teil 2): Simulation und 3D-Programierung Dozent: Dr. phil., Prof. Manfred Thaller Referent: Jan Moritz Kohl.
E N D
Game ProgrammingGems 7- Audio - Universität zu Köln Historisch Kulturwissenschaftliche Informationsverarbeitung SS 13 AM3: Softwaretechnologie II (Teil 2): Simulation und 3D-Programierung Dozent: Dr. phil., Prof. Manfred Thaller Referent: Jan Moritz Kohl
Audio Signal Processing USING GPU • Technologien wie SIMD (Single Instruction Multiple Data), Multiple Executionoder multiply-accumulate -> DSP hardware • Chorus & Compression schneller • Filter & Delay langsamer
Ray-Tracing für real-time room-acoustics LeafPlaneIntersect(Ray) { get plane indexforcurrent Ray for (i=1,i<=6,i++) { Intersectwith plane forcurrentleaf Store dataforclosestintersectedrays } } PropagateRay(Ray) { Check ifcurrentLeafcontainsmoreplanes if(currentLeaf == listener.leaf) Intersect Ray withboundingsphere if(intersectionwith plane) Reflectrayanditsabsorption if(intersectionwithportal) Set newleafforray }
MultiStream – Next-Gen Audio (ps3) • Nur Software basiert • Entwickeln eigener Audio Engine kann Jahre dauern! • Ein „stream“ beinhaltet: audiodaten (8 Kanäle), Wiedergabe Frequenz, Lautstärke Parameter/Surround Sound Position, Amplitude envelope, DSP effekte, outputrouting. • Anspruch: Audio in Echtzeit • Hürden: frequencydomainprocessing (unter anderem)
Maximal 512 Kanäle • Beispiel: Auto-Motor: • Motorumdrehungen * acht (jew. Für 1000 RPM Umdrehungen) • Auspuff * acht (zur selben Zeit aufgenommen wie die Motorengeräusche) • Schlittersounds (vier loops, für jedes Rad einen) • Straßen rumble (vier sounds, für jedes rad einen) • Schaltung = 25-30 Kanäle • Vormals zu viel RAM verbrauch
Sample Formats: Float32 PCM 16-bit PCM ADPCM MP3
Tricks beim Handling: Callback function um stream außerhalb der Audio Engine zu laden dadurch Fehlerprävention und unabhängiges synchronisieren • Laufende streams zuerst updaten • Neu angeforderte streams updaten • Zuletzt die Audiodaten laden Wenn buffergröße nicht ausreichend: sample rate halbieren 48000 samples/48kHz 48000 samples/24kHz Mehrere Versionen einer Datei um DVD read zu erleichtern
Frequencydomainprocessing (FFT – Fast Fourier Transform) • Vocoder und Hall Effekte
FFT braucht 1024 samplesinput um 512 auszugeben 1536-2559 0-1023 512-1535 1024-2047
Surround Sound Für realistischen Sound, hier X,Y,Z koordinaten werden übergeben Player spezifischer Sound meist multi-channel, außerhalb eher mono Syncing Channels bereitet häufig Probleme (Pitch shift) Lösung: voidSync_On(void) voidSync_Off(void) Sync On Audio 1 Audio 2 Sync Off
Listen Carefully, YouProbablywon‘thearthisagain • Töne in der „realen Welt“ beeinflusst von vielen Faktoren • um Wiederholungen bei Sounds zu vermeiden Echtzeit processing • Spiele nicht linear wie Filme, trotzdem wird Filmen nachgeeifert • In diesem Beispiel: Erstellen von einzigartigen Sounds aus Rohdaten • Hier: Explosionen!!!
„pop“ als Synonym für Granaten, Raketen, detonierende Geschosse oder explodierende Gegenstände Ebenfalls: Besiegen eines Gegners, aufnehmen eines Items oder specialfx wie teleporter, unsichtbar oder unbesiegbar werden.
Explosion in Bestandteile zerlegt: • Initial Zündung/ Anschwellen von Energie • Drop-Off und fade sound (Echo) • Beeinflusste Elemente • Drop-Off für alle beeinflussten Objekte • Größere untergeordnete Effekte (Gesteinsbrocken) • Kleinere untergeordnete Effekte (Kleine Steinchen)
Short sharp metallic impactsound: Stone Objects affectedbyenergy: Small objectsreturningto a stateofrest:
Tools für Audiodesigner/ File management: • FMOD • Microsoft XNA XACT • 2 wavdateien brauchen ebensoviel Speicherplatz wie die kombinierte Datei • Größere headerfiles, aber managable mit 3rd generation Konsolen • Dynamische Sounds kompensieren größeren Aufwand
Real-Time Audio Effects Applied • Die zwei bekanntesten APIs für Sound: DirectSound & OpenAL • Überblick: • Primary Buffer • The Listener • Sound Sources • Sound Effects
Sound buffers: • Circularbuffer • Rank buffer • Effectsandfilters: • IIR (Infinite impulseresponse) • FIR (Finite impulseresponse) • Compressionand Streaming:
Context-Driven, Layered Mixing • Film hat Spielen noch viel voraus, aber Technologie verfügbar • Kontextbasiertes Mixen von Spiel-“Szenen“
Mixing System (interface) • Mixing Category (sounds werden zugeordnet) • Central Mix (parameter für Kategorien) • Mixing Snapshots (Kalkulation für Central Mix) • Mixing Layers (Pre-Mix, Base, Modifying)