Better Tools
for
Sound Designers on
PlayStation®3
through
Open Architecture Designs
Michael Kelly,
Senior Audio Engineer,
Sony Computer Entertainment Europe
What does that mean?

On PlayStation 3

Very powerful audio engine


No tools to fully exploit it
Open architecture
Documented
 Pluggable
 Open Source
 Published file format

Overview
Introduce PS3 Audio Engine
 Reasons for rethinking audio tools
 Discuss our approach
 Show


How this model benefits game-audio
MultiStreamTM Introduction
The de-facto PS3 Audio Engine
 Entirely software based



Therefore it’s optional
Probably the most powerful and flexible
audio engine in the world!
MultiStream Routing:
Example: Voices to master

Up to 512 voices
Voice
0
Voice
511
MASTER
Voice
n
MultiStream Routing:
Example: All busses to Master

Multiple busses to master
Voice
Bus 0
Bus n
Voice
Bus 30
Voice
Voice
MASTER
Voice
MultiStream Routing:
Example: Busses route to each other

Asymmetrical configuration
Voices
Bus 1
Bus 0
Bus 2
Voices
Bus 3
Bus 4
MASTER
Voices
MultiStream Effects





Compressor, Multiband Compressor, Softclip
Distortion, Polynomial Distortion
Eq on bus, Parametric eq, Filters (15 types)
FDN reverb, I3DL2, Convolution Reverb
Pitch Shift/Time Stretch, Vocoder
Delay, Ring Modulator
MultiStream Effects

Each bus can have 8 effects
Bus
Voice
Slot 0
Filter
Slot1
Reverb
Slot2
Comp
Slot3
EQ
Slot4
Empty
Slot5
Empty
Slot6
Empty
Slot7
Empty
MultiStream Effects

…So can each voice
Voice
Slot0:
Stretch
Slot1
Conv.
Slot2
Empty
Slot3
Empty
Slot4
Empty
Slot5
Empty
Slot6
Empty
Slot7
Empty
MultiStream Effects

Send and return Voices and busses
Bus 0
Voices
Slot 0
Filter
Slot1
Reverb
Slot2
Send
Slot3
EQ
Slot4
Empty
Slot5
Empty
Slot6
Empty
Slot7
Empty
Slot5
Empty
Slot6
Empty
Slot7
Empty
Bus 1
Voices
Slot 0
Return
Slot 1
Filter
Slot2
Reverb
Slot3
EQ
Slot4
Empty
MultiStream Routing:
Send and return

Complicates routing further
Voices
Bus 1
Bus 0
Bus 2
Voices
Bus 3
Bus 4
MASTER
Voices
MultiStream
Multi-Channel

Each voice and bus


Matrix Routing




8 Channels (eg. 7.1 Surround)
Voice to Bus
Bus to Bus
Send to Return
Sends and returns

From/To any channel
MutliStream Power

We can run 50 X 2 second impulses


on a single SPU
Decode 400+ MP3 Streams

24kHz / 128kb/s
MultiStream Summary




Endlessly configurable
Many effect combinations
~15 effects out of the box
ATRAC, VAG, MP3 support

Roll your own Effects
Roll your own formats

How do you make a tool to do that?

New Tool Design
No MultiStream Tools:
What about SCREAM?
SCREAM / MultiStream

Uses fixed config
SRC/
Pitch
PEQ
Dist.
Send
Filt
Stream
n
SRC/
Pitch
PEQ
Dist.
Send
Filt
Stream
127
SRC/
Pitch
PEQ
Dist.
Send
Filt
MultiStream Bus
Stream
0
SCREAM Summary
Only uses a fraction of MultiStream
 Specific to PlayStation platforms
 Robust but dated

New Tool Spec
Easy to use
 Provide complex routing and effects
configuration
 Improve workflow
 Cross-Platform Engine

PS3, PlayStation 2, PSP
 Xbox 360, PC, MAC

Easy to use

Basic assumption

-A whole other talk
Routing configuration

Sound Punk Tool (working title)
Desribe bus routing
 Desribe effects config


Simplifies MultiStream setup
Cross Platform

Many approaches

Eg. Use Sound Punk to describe/emulate another
platform




Configure MultiStream to be another engine
Lowest common denominator problem
Cross platform engines
Cross platform tools

What’s the difference
Cross Platform:
The traditional approach
Middleware engine
 Wraps console hardware
 Fixed tools

Programmer
Tool/Audio API
Hardware Engine
Cross Platform:
Lowest common denominator

In the hardware days
Tool
API
Platform
Cross Platform:
The software engine

XBox360 and PS3

Very little audio hardware
Software engine
 Same code


Except for optimizations
Cross Platform:
The Tool Engine
With each tool you need the runtime
engine
 Bound to audio engine



Solves the lowest common denominator
problem
This gives us a problem

MultiStream is optional!
Cross Platform:
Separate tool & Engine


This is the way it used to be (kind of)
Good for us


Good for other people because their tools work
on our engine


Our tool works with other people’s engines
Sound designer and programmer separate choice
It’s not that simple

& How to avoid the LCD problem
Separating the tool from the
engine
Engine Overview

Abstract the engine
Configuration
 Triggers
 Param updates

Abstraction

Abstraction model: SP-EAL
Tool API
Engine
Abstraction
Engine
Engine
Engine
Engine
Sound Punk:
Describe engine & config

Describes the audio engine





Max voices
Max busses
Effects
Routing Options
Describes specific configuration


Bus routing
Active effects
Abstraction + Sound Punk

Platform file describes engine limits


Also describes config


Voices, busses, effects, etc
bus names, source names, formats
Testing with different well-known APIs
Sound Punk: Supplied
libraries on PS3

PS3 runtime library layer
Including source code
 Developer can re-implement for other
platforms (Wii, Xbox 360)

Example PC implementation
 Script Engine also as source


Developer can rebuild for other platforms
Lowest common denominator:
solved
Everything is abstracted
 Mapping
 Scalability

Engine abstraction: Bonuses

Once you abstract the engine, new things
for free
Remote auditioning
 In game preview
 Cross platform

Problems

Voice allocation

Tool or engine
Missing effects
 Different effects
 File Formats
 All implementation dependent


-Accommodate in tool
Another approach:
The file format
Common File format

Engine abstraction and File Format


Not mutually exclusive
Agreed tool-level interchange format
Standard format for asset data
 Standard format for scripts
 Standard format for parameters

Tool choice
Tool API
Engine
Common file format

Advantages
Sound designer chooses right tool for right
job
 Common terminology
 Common expectations
 Should still allow USPs

Common File Format:
Where to start?
Don’t reinvent the wheel
 IASIG: iXMF


Interactive Extensible Media Format
Common File Format:
XMF Folder layout
File 1
Data
Folder
Nod
e
Nod
e
Folder
Nod
e
Folder
Nod
e
Nod
e
Data
Data
Folder
Nod
e
Data
Nod
e
Data
Data
File 2
Common File Format:
Asset Types

Media files


+ Chunks: references to media files
Cues and Scripts
Common File Format:
Scripting
Script language defined
 Roll your own


Everything is extensible
Common File Format:
Extensibilty
Metadata
 New script languages
 New anything

Problems
GUI Metadata
 Common file format, common tool?
 Unsupported extensions?
 Corruption
 Inefficient at runtime?

Summary


Rationalising the sound process
SCEE has two approaches



Perfect approach for us


Engine Abstraction + Config Tool
Open File Format
What about you?
Improves workflow
Industry benefits
Mature idea of audio engine
 Common terminology
 True choice for developers
 Improved Workflow


Better sounding games
This isn’t the end
(well it is, but..)
 More discussion to follow

Sony Computer Entertainment & Developers
 Events like GDC
 Bodies like IASIG, AES, BBQ


And the Q&A…
Descargar

GDC 2005