Top Banner
INSIDE Audio ITU 2016 Jakob Schmid PLAYDEAD The Playdead Approach to Audio
62

The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Mar 03, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

INSIDE Audio

ITU 2016Jakob SchmidPLAYDEAD

The Playdead Approach to Audio

Page 2: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

MeJakob Schmid

Audio programmer at PLAYDEAD

Composer and sound designer by night

Page 3: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

● Introduction● Audio Engine Overview● Animation events● Voice sequencer

Overview

Slides will be available online!

Page 4: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

INSIDE

PLAYDEAD

Released soon for Xbox One

Commenced 2010

Page 5: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Martin Stig Andersen

audio director, sound designer, composer

Andreas Frostholm sound designer

Søs Gunver Ryberg composer, sound designer

Jakob Schmid audio programmer

Playdead Audio Team

Page 6: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Audio Engine Overview

Page 7: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Audio Engine Overview

Audio Hardware

Page 8: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Audio Engine Overview

Audio Hardware

Audio API- XAudio2 (Win, XB1)- WDM-KS (Win, low-level)- CoreAudio (Mac)- Scream (PS4)

Interrupt

Page 9: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Audio Engine Overview

Audio Engine- Wwise- FMOD (Built-in: Unity, Unreal, CryEngine, Source)

Audio Hardware

Audio Engine outputs sample data

Interrupt

CallbackAudio API

Page 10: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Audio Engine Overview

Audio Engine- Wwise- FMOD (Built-in: Unity, Unreal, CryEngine, Source)

Audio Hardware

Audio Engine outputs sample data

Interrupt

CallbackAudio API

Page 11: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Playdead Audio Engine Setup

Wwise

Audio Hardware

Audio API

Wwise Unity Integration- Wraps C++ API in C#

Unity

Playdead Audio Stuff- C# scripts

Page 12: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Playdead Audio Engine Setup

Wwise

Audio Hardware

Audio API

Wwise Unity Integration- Wraps C++ API in C#

Unity

Playdead Audio Stuff- C# scripts

Page 13: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Standard Unity Audio CodeUnity audio:

AudioSource audio;AudioClip myClip;audio.clip = myClip;audio.Play();

// Modify sound while playing// - here we use AnimationCurvesfloat t;audio.pitch = pitchCurve.Evaluate(t);audio.volume = volCurve.Evaluate(t);

Page 14: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Wwise Unity CodeUnity audio:

AudioSource audio;AudioClip myClip;audio.clip = myClip;audio.Play();

// Modify sound while playing// - here we use AnimationCurvesfloat t;audio.pitch = pitchCurve.Evaluate(t);audio.volume = volCurve.Evaluate(t);

Wwise Unity Integration:

GameObject go = this.gameObject;AkSoundEngine.PostEvent("MySound", go);

// Modify sound while playing// - modification is defined using external toolfloat t;AkSoundEngine.SetRTPCValue("MyParameter", t, go);

Page 15: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Wwise Workflow: Wwise Authoring Tool

Page 16: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Wwise Workflow: Defining Sounds

Page 17: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Wwise Workflow: Events

Page 18: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Wwise Workflow: Output Sound Banks

● Sound Banks contain a list of events● ... And all the sounds used by the events

Page 19: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Wwise Workflow: Scripting

AkSoundEngine.LoadBank("Init.bnk", ... );AkSoundEngine.LoadBank("MySoundBank.bnk", ... );

AkSoundEngine.PostEvent("MySound", go);

Page 20: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Wwise: Modify Playing Sounds

Page 21: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Wwise Workflow: Scripting

AkSoundEngine.PostEvent("MySound", go);float t;AkSoundEngine.SetRTPCValue("MyParameter", t, go);

Page 22: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Audio Engine Summary● Common audio engines: FMOD (Unity built-in), Wwise● Wwise Unity Integration, C#● Sound designer works in Wwise Authoring Tool● Sounds, parameter curves are set up in Wwise Authoring Tool (not engine)● Has lots of functionality, simplifies audio implementation

Page 23: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Animation Events

Video: foley.mp4

Page 24: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Animation Events● Set up per animation● Animation event types:

○ Custom○ Matrix○ Footstep (also matrix evts)

● Also used for VFX

Page 25: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Custom Animation Events● Name of sound event specified directly● Fires when animation frame has been passed● Checks layers: ground, water, air

frame layers

sound event name

Page 26: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Wet Animation Events● Optionally plays additional wet sound event● Current wetness is sent as a parameter

○ Is set high when in water or on a wet surface○ When dry, approaches 0 over time

add wet event

Page 27: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Matrix Animation Events● Matrix key instead of sound event name● Context-dependent sounds

e.g. from 'run' to 'stop' yields 'brake'

matrix key

Page 28: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Matrix Animation Events

previous key current key

Page 29: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

current key: jog

● Current key is specified in current animation event

Current Matrix Key

jog

Page 30: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Previous Matrix Key

previous key: idleidle

● Previous key was specified in previous animation event

Page 31: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Play Sound

previous key: idle current key: jog idle jog

play sound 'takeoff_mf'

Page 32: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Context Sensitivity

previous key: sneak current key: jog sneak jog

play sound 'walk'

● If previous matrix key was 'sneak', a different sound is played

Page 33: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Animation Events

Video: foley.mp4

Page 34: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Animation Events

Video: foley.mp4

Page 35: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

● Animation events occur at a specific frame● Animation events are filtered based on layers● Custom events specify sounds directly● Matrix events are used for context-sensitivity

Animation Events Summary

Page 36: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Voice Sequencer

Video: voice.mp4

Page 37: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Voice Sound Events● Played by voice sequencer● Which sound to play is defined by switches:

○ Action○ Emotion○ Intensity○ etc.

● Intensity is a numeric value:○ increases with physical exertion○ decreases when idle

Page 38: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Voice Sequencer: Continuous Mode

set action, emotion, intensity, etc.

play sound

Page 39: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Voice Sequencer: Continuous Mode

play sound wait for sound to finish

set action, emotion, intensity, etc.

Page 40: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Voice Sequencer: Continuous Mode

play sound

update breath cycle(inhale/exhale)

wait for sound to finish

set action, emotion, intensity, etc.

Page 41: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Engagement ActionsSpecial actions indicate performing work, uses different set of sounds

not engaged engaged passive engaged active

Page 42: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Voice Sequencer Configuration● Trigger boxes● State machines● Scripts● Gives full control over voice parameters

Page 43: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Voice Sequencer Configuration: Trigger box

Page 44: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Switch

Page 45: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Switch Container: Action

Page 46: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Switch Container: Intensity

Page 47: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Switch Container: Emotion

Page 48: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Random Container

Randomly selects and plays one of its children sounds

Page 49: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

● Voice configuration is our way of doing voice direction.● The director (Martin) instructs the actor (voice sequencer) how to emote:

○ based on location on the set (trigger boxes), or○ based on reacting to events (state machines or scripts)

Voice Direction

Page 50: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Voice Sequencer

Video: voice.mp4

Page 51: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Voice Sequencer Summary● Sound events are selected based on action, emotion, intensity, etc.● Continuous sequencing of sound events● Voice direction with trigger boxes and state machines

Page 52: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Wrapping Up

Page 53: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Effect Analyzer

Animation Events

Anim EventPlayer

Effect State

ReadWrite

Page 54: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Effect Analyzer

Foley VoiceVoice Sequencer

Voice State

Voice AnalyzerEffect State

Voice Sequencer

ReadWrite

Anim EventPlayer

Page 55: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Effect Analyzer

Foley VoiceFull Audio Architecture for the Boy

Ragdoll

General Foley

Envelopes

Voice State

Voice Analyzer

Anim EventPlayer

Cloth

Effect State

Voice Sequencer

ReadWrite

Page 56: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Using Wwise for Your Own Projects● Free for non-commercial use (limited to 200 sounds)● Has Unity integration● Setup is not completely trivial● Using the Authoring Tool requires training● The Authoring Tool is very powerful without having to code● Short answer: Maybe.

www.audiokinetic.com/download/

Page 57: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Questions?

Twitter: @jakobschmid

E-mail: [email protected]

playdead.com

game140.com

Slides are here: schmid.dk/talks/2016-04-05-itu/

Page 58: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool
Page 59: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Column Default

previous key: idle current key: run idle run

play sound 'run'

● Empty entries are replaced with column default

Page 60: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Switch Controlled by Parameter

Page 61: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Audio Engine Overview: Low-level

Audio Hardware

Audio API

Interrupt

Low level API

Render sample data yourself!Callback

Page 62: The Playdead Approach to Audio PLAYDEAD Jakob Schmid …Common audio engines: FMOD (Unity built-in), Wwise Wwise Unity Integration, C# Sound designer works in Wwise Authoring Tool

Audio Engine Overview: Low-level

Audio Hardware

Audio API

Interrupt

Low level API- SDL- PortAudio- Unity: - MonoBehaviour.OnAudioFilterRead (C#) - Native Audio Plugin SDK (C++)

Render sample data yourself!Callback