Upload
nasir-tibbett
View
226
Download
0
Embed Size (px)
Citation preview
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 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)
Fall 2010 15
BgmusicFMUSIC PLAYS S3M AND MID; NOT MP3 (sequenced file, not PCM-type)
OK for mod files
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