Audio Middleware, Part 3THE FINAL CHAPTER ON GAME DEVELOPMENT ENGINES 5/01/2007 8:00 AM Eastern
In my March and April columns, I began a report on videogame audio middleware, examining the value of this software in game production. In this final installment, I'll look at three other players in the market: FMOD, the Miles Sound System and the Unreal 3 Sound System. So many choices, so little time.
Firelight Technologies' FMOD (www.fmod.org) began as a simple assembly-written (assembly code = fast) audio engine that now stands as a serious contender to Wwise and Miles as a great “multipurpose” engine that can pretty much do it all. Its 13 supported platforms include Windows (all), Linux, Mac, Xbox, Gamecube, PlayStationPortable (PSP), Xbox 360, PlayStation 2 and 3, and Wii. Single-platform FMOD pricing begins at $3,000, plus $1,500 per additional platform.
Among FMOD's supported file formats are WAV, AIFF, MP3, Ogg Vorbis, ASX, FLAC, DLS, ASF, IT, MP2, MOD, RAW, WAX, WMA, XM, XMA, S3M, VAG and GCADPCM. FMOD has a feature that lets you optimize the sample rate during each sample's build process. However, you will be unable to access certain target platforms unless you have a signed nondisclosure agreement from the respective console manufacturer (i.e., Sony, Nintendo, Microsoft).
Surround support includes Dolby Digital 5.1, DTS and Pro Logic, with a panning matrix that lets you route mono/stereo/multichannel sources to any speaker in a 5.1 matrix.
FMOD has its own set of effects such as chorus, reverb, etc., yet it supports VST plug-ins, which is a huge plus. It would be too processor-intensive to run, but imagine using Waves Renaissance reverb in your game in real time! This is something to investigate. Certainly, the power to run a good, old-fashioned Eventide reverb or something from a Lexicon PCM90 is probably very achievable on an Xbox 360, isn't it?
The FMOD Designer is meant to compete with tools such as Creative Labs' ISACT and Audiokinetic's Wwise. It is an excellent bank-manipulation tool that allows most of the functionality of Wwise and nearly all the functionality of Creative Labs' GameCODA. It introduces a set of terms such as Sound Definitions and Layers, and completely leaves out the term “cue,” which is something of an oddity, yet it takes only a few hours to get used to it.
The Designer GUI has a clean interface with tabs and a fairly intuitive hierarchy of objects and effects. Within the Event editor, you can create a rough idea of what a combination of sounds will do in the game.
FMOD's network-based auditioning lets you use Designer to try out sounds on the target platform while a game is running. It also includes a simple set of commands in the API that are also usable by the Designer tool, which is a simple way to expose commands to the integrator. Here, the documentation is somewhat sketchy and I'll look at a successful “real-world” implementation of this in a future column.
The channel groups and submixing function are straightforward, allowing the routing of sounds into different groups with independent control of volume, effects, etc., in those groups. The software doesn't include a sound matrix, although it does offer events that can be manipulated in different tracks to simulate a matrix. For some reason, streaming must be specified as a bank type (just as you specify memory-based sounds as a bank type) rather than on individual sounds.
In terms of interactive music, FMOD makes use of its basic event and sound definition functionality, and the Designer manual provides a tutorial on using these functions for music. It lets you randomize a number of clips and set up a sound definition to set “seek points” that will jump to a particular clip or ignore a particular clip based on parameters that you set. If your programmer can't do it for you, then the commands that let you sync to game events are Init, Close, Load, GetEvent/Start and UpdateParameter.
FMOD Designer isn't quite as full-featured as Wwise and doesn't have the attraction of video tutorials. However, Brett Paterson, who wrote FMOD, answers support e-mails personally and is grappling with the massive task of providing support on a developer-wide basis. FMOD is less expensive than the competition and is one of the most stable, reliable engines currently on the market.
From RAD Game Tools (www.radgametools .com), the Miles Sound System supports Windows (all except Vista), Xbox, Xbox 360, PS2, PS3, PSP (coming soon), DOS, Linux and Mac OS 8/9/X, and is priced at $3,000 per title for any platform. File formats include Microsoft WAV, ADPCM, Ogg Vorbis, MP3 and MIDI, and mono, stereo or surround in SRS Circle Surround (6.1), Pro Logic, quad, 5.1, 4.0 DTS, 5.1 DTS, 6.1, 7.1 and 8.1. Compression is offered for MP3, ADPCM and Ogg Vorbis.
Miles has the leanest feature set, the smallest set of tools and perhaps the most support for its code base of any of the engines. It comes with MIDI Echo, Miles Sound Studio and Miles Sound Player. Sound Studio lets you convert and merge multiple kinds of files, and that's really about it. The rest of the functionality is through the SDK (Software Development Kit) via programmers.
Miles claims you can have sound playing using three function calls (essentially, sentences in your game engine's code). This is pretty quick for engineering integration, but it certainly doesn't compare with real time. No sound-matrix function is provided, but like everything else, it can be programmed more quickly than in other engines.
Regarding code, Miles is about as clean or possibly even cleaner than FMOD. This enables streaming Redbook audio without using your CPU. It also allows you to stream in as little as three calls. Yet again, though, if you're not an engineer, then you're out of luck. In terms of interactive music, roll your own: Miles will be a solid backbone. Also, the documentation has nothing specific about game-event linking.
At this point, you might wonder why I've included such a skeletal audio engine in this roundup. By current standards, Miles is dated. Without real-time parameter control and some sort of GUI interface that lets you organize your files beyond a simple directory structure, it doesn't offer much in the way of additional features, especially the ones required by larger projects. Yet John Miles revolutionized the industry and this engine is still used by a wide range of products. Why? Because it's super-cheap at $3,000. It's solid and won't break, and it includes solid support with fast response to e-mails and phone calls. Can't say much better than that.
Designed for Windows and Xbox 360 platforms, the Unreal 3 Sound System from Epic Games (www.epicgames.com) is arguably the most commonly used middleware in the industry today. Unreal offers support for Microsoft WAV, XMA and Ogg Vorbis files, with up to 5.1 surround and XMA or Ogg Vorbis compression that's customizable for each cue.
The Unreal Editor GUI is the best in the business; as a plus, it's all self-contained. You load a level — graphics animations and all — and the audio with it, and everything is integrated. It provides good visual feedback, which can get a bit tricky with larger sound cue structures, but many of the sounds' parameters are editable, such as volume, radius and crossfade functionality within Kismet, the integrator's link.
You can run the game right from the editor, with all sounds included. Sounds do not react in real time to changes, but it's the next best thing. Animations are a bit different. You can use animation event notifications (AnimNotifies for short) to add sounds directly to animations on a per-frame basis and preview them in real time. This is something I desperately wanted in the last Unreal game that I worked on, and thankfully it is now available.
There is no sound matrix. Unreal relies on sound cues alone for its object structure; just take a single file or group of files and create a cue. Streaming isn't currently supported. You simply play a file and it loads into memory.
Unreal has a great comprehensive interactive music system that allows you to manipulate multiple sections of songs at cue points that you define. Kismet controls just about anything that happens in an Unreal level, which is like Microsoft Visio — a flowchart of events, if you will. Renderware also had this view, and it can get insanely confusing to look at boxes and circles connected with lines. But, believe me, it's far easier to do this than to figure out code. Kismet is a godsend to audio folk and it provides a great playground for the engineer to dig in and create a lot of custom audio events that sync to game action.
In recent years, Epic Games has stepped up with much better support. Licensed Unreal developers have access to a Website with a comprehensive set of tutorials and information about each version of the engine, as well as a message board detailing prioritized bugs and feature requests that the team is working on. Your suggested feature may not be added right away, but you do get responses in 24 hours or less.
Unreal's audio system is solid and user-friendly, thanks to its unique visual interface, yet not as comprehensive by any means as Wwise. (Good luck doing vehicle engines using Cues, for example.)
Audio engines are rapidly expanding and evolving into slick professional tools, and I hope that after reading this series you have a good understanding of what they can do. However, they still have a long way before achieving the ease of integration provided by post tools such as Nuendo and Pro Tools. That's my next crusade.
Alexander Brandon is the audio director for Midway Home Entertainment in San Diego, Calif.
Download your guide to audio middleware here.