sound engine evaluation for computer games
DESCRIPTION
Sound Engine Evaluation for Computer Games. Case Study: fmod Jyun-Ming Chen. Typical Game Loop. Roles of music/sound BGM (background music) Sound effect. Microsoft SDK. Need more sophisticated tools!. BGM (Midi) mciSendCommand ( … ) Sound (Wave) sndPlaySound See msdn for details - PowerPoint PPT PresentationTRANSCRIPT
Sound Engine Evaluation for Computer Games
Case Study: fmod
Jyun-Ming Chen
Fall 2010 2
Typical Game Loop
Roles of music/soundBGM (background music)Sound effect
Fall 2010 3
Microsoft SDK
BGM (Midi) mciSendCommand (…)
Sound (Wave) sndPlaySound
See msdn for details
Ex: midi_wav.zip on webhd2/game-ex
Need more sophisticated tools!
Fall 2010 4
Check List
BGM File formats supported:
mid, mp3, mod, … Looping Early termination Volume control
Sound effects File formats supported Trigger mechanism Reverb and other DSP
FX (e.g., room effects) Pre-load to avoid delay
in first play
General Mixing capability (how
many sounds can be mixed at one time)
Spatial sound Position: 3D vs. panning Velocity: Doppler
supported? Occlusion?!
Sync capability sound to action Action to sound
Others CPU overhead
Fall 2010 5
Case Study: fmod
Cross platform audio library (Win32, Linux, mac, WinCE, PS2, Xbox, …)Free unless for commercial use
Fall 2010 6
DocumentationFSOUND: for sound
effect
FMUSIC: for bgm
Fall 2010 7
FSOUND API
Fall 2010 8
InitializationRequired for
both FMUSIC & FSOUND
Fall 2010 9
FSOUND_Sample
Load, FreeSetMode: LOOP normal | bidi | offGet/SetLoopPointsGetLengthGet/SetMinMaxDistance (min is the distance where the sound starts to attenuate) increase the min_distance of a sound to make it
'louder' in a 3d world, and decrease it to make it 'quieter' in a 3d world.
Fall 2010 10
FSOUND_Stream
If the PCM data (wav) or compressed file (ogg, mp3, …) is too big to be read in as a sample, we can use stream functions to read it (decompress it on-the-fly)Certain functionalities are restricted
Fall 2010 11
Channel Functions
FSOUND_PlaySound, PlaySoundEx FSOUND_FREE: Choose a free channel to play in Returns the channel selected Extended version can play paused (allow
attributes to be changed, then play)
FSOUND_SetFrequency (channel, 11025);FSOUND_SetVolume(channel, 255);FSOUND_SetPan(channel, 255); FSOUND_SetPaused(channel, FALSE);FSOUND_StopSound
Fall 2010 12
FMUSIC (mid, mod; mp3)
LoadSongPlaySong: can play more than one music (yes, but why?)SetPausedSetLooping: default TRUESetPanSeparation, SetMasterSpeed, SetMasterVolumeStopSong, StopAllSongsFreeSongSetReverb (midi only)
OpenGL Tests
Webhd2/game-ex/fmod_opengl_tests
Fall 2010 14
Basics
Fall 2010 15
BgmusicFMUSIC PLAYS S3M AND MID; NOT MP3 (sequenced file, not PCM-type)
OK for mod files
Fall 2010 16
Stream
Works for mp3, ogg, wavOnly wav can store cue point (for sync)
Fall 2010 17
3dsound
FSOUND_Update():
This updates the 3d sound engine, and should be called whether sound source or listener changes position
Fall 2010 18
Listener Attributes
Float *posFloat *Vel (per second) NULL to ignore
Fx, fy, fz (forward orientation unit vector)Tx, ty, tz (top-up orientation unit vector)
x
y
z
Global Axes in Fmod
Left-handed
Fall 2010 19
Doppler FSOUND_3D_SetDopplerFactor (4.0);
Commonly Used APIs
Fall 2010 20
Init and Close
Load and Free sample
Sound API
Fall 2010 21