
Introduction
|
 |
The FMOD Ex sound system is a revolutionary new audio engine for game developers, multimedia developers, sound designers, musicians and audio engineers, based on the years of experienced of Firelight Technologies’ previous product FMOD.
It also aims high - to push the boundaries of audio implementation for games and the like while at the same time using minimal resources and being scalable.
This new engine is written from the ground up since FMOD 3 was released and involves years of experience and feedback from FMOD users to create the most feature filled and easy to use product possible, without the drawbacks of legacy implementation that FMOD 3 may have suffered from its years of continuous development.
Some of the most exciting new features, which are described in more detail later are:
Suite of built in DSP special effects which do not rely on any platform or operating system. (for a 100% cross platform audio experience).
Next-gen console support. PS3 and Xbox 360
are fully supported.Sound designer focus and tool. The new suite of tools and functionality means FMOD is usable by sound designers and musicians and not just programmers. Sound authors will have the ability to create complex audio models and tweak them in real-time over the network (or even internet) while the game/application is still running!
Full 3D sound support including linear/nonlinear/custom rolloff models, multiple listener support, occlusion and obstruction (using real polygons!),
sound cones, and support for stereo or multichannel samples being played in 3d!.
Virtual voices to allow a game to play thousands of sounds at once on limited hardware without worrying about handling the logic to switch sounds off and on themselves.
Support for over 20 file formats.
Advanced streaming engine supporting gapless stitching/sentencing of sounds, low cpu overhead, multiple stream support, over-ridable file callbacks and more.
Compressed sample playback. ADPCM, MPEG and XMA are able to be stored in memory without decompressing or streaming them, as if they were normal static samples!
Sub mixing and channel groups.
New advanced 'DSP network' based software engine to rival the most complex software synthesizer packages, all performed in real-time while the game/application is running!
Matrix panning allows sound channels to be mapped to any speaker in any
combination.New object oriented API supporting C,
C++, C#, Delphi and Visual Basic.
Plug-in support for ultimate flexibility.
FMOD and VST plugins are supported. Everything in FMOD Ex has been designed with future expansion in mind.
SIMD optimized (ie SSE, VMX, VFPU, ALTIVEC) mixing and filter routines for low cpu overhead. It is faster to use FMOD's software mixer than go through the driver overhead of DirectSound!
Platform Support
|
 |
FMOD Ex supports the following hardware platforms. No other audio system available supports this many platforms.
Microsoft Windows series.
Microsoft Windows series 64bit. (AMD64)
Linux
Linux 64bit. (AMD64)
Macintosh. OS8 / 9 / X and OSX for x86.
Sony PlayStation 2
Microsoft Xbox
Nintendo Gamecube
Sony Playstation Portable.
Microsoft Xbox 360.
PlayStation 3.
Nintendo Wii.
That's currently 12 platforms! No other game audio library can claim to match anywhere near that many platforms!
Feature List
|
 |
Unified API.
Coming from FMOD 3, Samples, streams, music and CD API's are gone. Everything is now a 'Sound'
All types of sounds, including mods, midi files, wavs, oggs, samples, streams, cd tracks and fsb files can be accessed seamlessly through the one API.
Virtual Channels
Virtual channels allow thousands of channels to play on limited hardware/software. Voices are swapped in and out according to 3d distance and priority.
Plug-in System
New file formats, output modes, and encoders can be added or downloaded by the user as DLLs.
VST and Winamp DSP plug-in support for effects is included.
Digital CD Playback
Digital CDDA playback allows dsp effects / spectrum analysis, ripping etc just as if it was a normal PCM file being played back.
C++ API
In FMOD Ex, a new C++ API is available as well as a standard C API.
All new FMOD API features are accessible through simple class types, such as the system class, sound class, channel class, DSP class. C/C++ headers naming conventions closely mapped.
For example - FMOD::System::init() in the C++ header would become FMOD_System_Init() in the C header.
C# and Visual Basic API
FMOD Ex has full support for managed C# and Visual Basic interfaces
Multiple simultaneous soundcard support
FMOD 3 was limited by only supporting 1 sound card at a time, so if you wanted to output to multiple cards at once you would have to instance fmod.dll multiple times.
Multiple output at once support is simply done by initializing multiple 'System' objects.
Multi-speaker output support
Now FMOD has a full multichannel mixer, even 2D sounds can be played in 5.1 (or 7.1!). Sounds can even swap their channel assignments around so left and right of a stereo sound are swapped around, mixed or all placed in the rear left speaker for example.
The way this is available is FMOD supports pan matrices. Any input sound channel can be redirected to any output speaker, and on top of this percentages/fractional levels are supported, so there are no absolute speaker assignments.
Via ASIO, FMOD Ex now also supports full multichannel output access to up to 16 output channels for high end sound devices.
Multi-channel sound support
Multi-channel wavs, oggs and FSB files are supported for 5.1 music for example.
Low latency recording support
FMOD Ex now supports super low latency recording, processing and output through a new recording engine.
Via ASIO the recording->DSP->playback latency can be as low as 1-3ms! This is great for realtime processing and playback of recorded audio.
Enhanced Internet features
Internet audio streaming.
Custom internet streaming code is included, which allows for seamless SHOUTcast, Icecast and http streaming support.
Download capability.
A side effect of FMOD’s modular file system which supports network files, even static samples can be loaded off the internet.
In fact you can use FMOD’s API to write an arbitrary file downloader!
Voice chat
In a future version, sever/client voice chat will be supported for real-time over the internet voice conversations! Compression such as SPEEX etc will be supported for low bandwidth.
File format support
FMOD currently supports a wide range of audio file formats.
AIFF - (Audio Interchange File Format)
ASF - (Advanced Streaming format, includes support for the audio tracks in video streams)
ASX - (playlist format - contains links to other audio files. To access contents, the FMOD Ex tag API is used)
DLS - (DownLoadable Sound format for midi playback. Can also be used as a stand alone container format in FMOD)
FLAC - (Lossless compression codec)
FSB - (FMOD sample bank format generated by FSBank and FMOD designer tool)
IT - (Impulse tracker sequenced mod format. FMOD Ex also fully supports resonant filters in .IT files, and the per channel or per instrument echo effect send, that can be enabled in ModPlug Tracker. This is cross platform effect support and does not require DirectX like other libraries do.)
M3U - (playlist format - contains links to other audio files. To access contents, the FMOD Ex tag API is used)
MID - MIDI using operating system or custom DLS patches.
MOD - (Protracker / Fasttracker and others sequenced mod format)
MP2 - (MPEG I/II Layer 2)
MP3 - (MPEG I/II Layer 3, including VBR support)
OGG - (Ogg Vorbis format)
PLS - (playlist format - contains links to other audio files. To access contents, the FMOD Ex tag API is used)
RAW - (Raw file format support. The user can specify the number of channels, bitdepth, format etc)
S3M - (ScreamTracker 3 sequenced mod format)
VAG - (PS2 / PSP format, supported on all platforms!)
WAV - (Microsoft Wave files, inlcluding compressed wavs. PCM, MP3 and IMA ADPCM compressed wav files are supported across all platforms in FMOD Ex, and other compression formats are supported via windows codecs on that platform).
WAX - (playlist format - contains links to other audio files. To access contents, the FMOD Ex tag API is used)
WMA - (Windows Media Audio format)
XM - (FastTracker 2 sequenced format)
XMA - (Xbox 360 only)
File format plugins are also supported so the number of formats supported is limitless!
Note AAC is not included in FMOD Ex because the only reference source for this is GPL and FMOD Ex does not contain GPL protected code. To support this a user may add their own plugin to support it externally.
Wav Writer output
All output can be written to a wav file, and with encoder plug-ins, it can even be encoded in real-time to MP3 or other file formats!
Sample accurate seeking and looping
Most systems seek to a compression block boundary such as mp3 which decodes in blocks of 1152 samples at a time. FMOD Ex supports sample accurate seeking and decoding. For example you could seek to sample offset 1,000,000 exactly, and extract 1 sample of audio.
This accuracy is good for DJ type programs that need to sync streams properly.
Enhanced streaming engine
A new low latency stream decoder that spreads the decode burden over time instead of doing it in chunks (cpu spikes!) is included. This means smoother frame-rates in game.
Enhanced sample format support
24bit, 32bit integer and 32bit IEEE float sample support is included.
Alongside standard mono/stereo sample support, now multi-channel sample support is
included!
Wav, ogg and user created sounds are examples of sound formats that support
multi-channel sound.
Advanced mixing engine
Enhanced output channel support
Most systems only allow mixing to mono or stereo output. FMOD Ex allows mixing to any number of output channels, for example 6 channel output (with panning) to allow for 5.1 or Dolby digital output in real-time for 3d sound!
Stereo and 5.1 are optimized as a special case fast-path for extra speed.
Full DSP data flow network based mixing engine.
New mixing routines with separate resample/mix/effects stages.
This is a node based multiple input/output DSP engine which is extremely flexible and allows submixing, splitting and advanced speaker location and selection.
High quality mixing
All mixing is floating point with full 32bit interpolation.
Resampling modes supported are
o No interpolation
o Linear interpolation
o Cubic interpolation
o 5 point spline interpolation!
All resampling is done with true 32bit precision using a 32bit fractional, it is not downscaled or compromised in any way.
Matrix Panning
Sounds can have their input channels mapped to any output channel through a simple 2D matrix. For example the left and right parts of a stereo sound can be positioned anywhere in a 5.1 speaker array, in any combination, in one speaker, or all speakers. It is totally flexible.
Volume ramping
Linear volume ramps between pan/volume changes are included as standard.
This removes clicks in sound that changes pan or volume frequently.
3D Sound enhancements
Rolloff models.
Logarithmic, linear, or custom rolloff models supported (per voice).
Geometry API.
A revolutionary step up in audio realism is supported with FMOD Ex’s custom geometry engine. This allows polygon scenes to be added to FMOD so that it can automatically calculate obstruction/occlusion as the user moves around the world.
Multiple listener support.
Multiple 3d listeners for split screen support are supported.
Sound cone support.
Sound cones are supported to give sounds direction.
Stereo / multichannel sound support.
Stereo samples or even multichannel samples can be positioned in 3D, with their component channels
(ie left/right parts of a stereo sound) positioned in 3D space, configurable by the user.
User delay on sound playback
A new 'setDelay' function is available so a sound can be specified to start after a certain period of time (samples or ms) - can be called between init and start on a channel
MIDI Support
FMOD Ex includes its own software midi playback, so that midi playback works cross platform.
Patch sets / DLS banks have to currently be provided with the song, or FMOD Ex will take advantage of any found in the operating system.
Stitching / sentencing
Seamless stitching.
For sounds allows one sound to end then another starts immediately afterwards without gaps. This is great for commentary or interactive music.
Built in software based special effects.
FMOD Ex hosts a whole suite of special effects surpassing any system available considering it will work on every platform FMOD supports.
Here are some of the effects that are supported by default. More can be added through plug-ins.
Oscillators - sine, square, saw up, saw down, triangle and noise wave oscillators.
2 Low-pass with resonance filters.
High-pass with resonance.
2 Echo filters.
Flange.
Distortion.
Normalizer.
Parametric EQ.
Real-time pitch shifter (changes pitch not playback speed)
Chorus.
Reverb.
Channel groups, and submixing.
Channel groups.
Multiple channel groups can be created and channels assigned to these groups.
From there a variety of commands can be issued on a group such as volume, mute, frequency, pause and more.
Master volume can be controlled through the use of a channel group, and multiple channel groups can be used for multiple master volume assignments, which is very useful for things like relative volume of GUI sounds
vs. in game sounds for example, or music vs. special effects volume.
This allows greater flexibility in controlling audio levels.
Submixing.
Submixing allows effects to be placed on groups of channels, without affecting other channels. This is an advanced feature which is really useful for saving CPU usage or keeping some sounds dry while others are affected by DSP effects for example.
Enhanced callback support
'latency adjusted' or 'real-time' flag for callbacks.
This means you can get a callback at mix time, or audible time (the 2 are different, by the length of time determined by the mixer's buffer size)
sample accurate user timer callbacks
(millisecond or sample based) for global or per channel.
Memory and file system overrides
Callbacks.
FMOD Ex of course allows the user to override FMOD's file and memory system through
callbacks.
FMOD Designer tool and API.
|
 |
Sound Designer Tool
This easy to use and flexible sound designer tool allows simple or complex multi-layer/effect/envelope based sound events to be modeled and created by the sound designer. The capabilities would include such things as layering, effects, random behaviour, and stitching of sounds.
The aim is for a sound designer to totally design the in game audio from an external tool, and simply supply the programmer with assets and an event list to implement. If the audio behaviour needs to be changed within the game, it should be up to the sound designer not the programmer to do this.
The layering screen allows for complex audio models (such as a car engine with multiple cross fading channels, sounds and effects) to be totally controlled by the author, then all the programmer has to do is call the previously defined set of simple commands, such as SendEvent and UpdateParameter. In the car model cast, the ‘parameter’ in UpdateParameter might just be ‘revs’ or ‘torque’ or some other English type value, rather than a value defined by a programmer.
FMOD Event API
This is an API for programmers to interface to the data produced by the FMOD
Designer tool. This API consists of very simple commands such as:
Init
Close
Load
GetEvent / Start
UpdateParameter
All event behaviour is specified by the FMOD Designer, not the programmer, to
make it totally data driven.
Network tweaking features
As part of the sound designer tool, the user can tweak the audio parameters in a game over the network while the game is running!
A sound designer now gets even more control over the outcome of the audio mix by being able to alter sound parameters such as volume / frequency / randomization etc while the game is running. This will save hours of time instead of the usual routine of testing, quitting, tweaking, recompiling, running. Even with that old method it can lead to mistakes which take several attempts to perfect. Using the network tweaking tool the sound designer can get it right first time.
 
Copyright © 2001-2006 Firelight Technologies Pty, Ltd. All rights reserved.
|