Audio Middleware, Part 2MORE CONTENDERS IN THIS EMERGING FIELD 4/01/2007 8:00 AM Eastern
In the March 2007 column, I began my report on middleware game audio engines: what this software is, how to get it and its value as an essential cog in the game production process. This second installment in a three-part series will look at two other middleware heavyweights: Audiokinetic's Wwise and Microsoft's XACT.
Audiokinetic (www.audiokinetic.com) offers Wwise for the PC, Xbox 360, PlayStation 3 and Wii platforms. The software supports Microsoft WAV and Broadcast WAV audio files, and its Conversion Settings dialog box can be set to support any surround configuration. In addition, sounds are automatically compressed to the selected console format within this box.
Although Creative Labs' ISACT (a competing product that was profiled in last month's column) has an open-ended and powerful GUI tool, Wwise is the most comprehensive GUI tool that combines a multitude of editing possibilities. Wwise requires that every sound be assigned an object, and that every object be assigned an “actor,” which is an interesting and cool feature. An actor is an object representation within a game. It's an ingenious design, really — the missing link between pro audio and game audio concepts in tool design. You can't simply think of audio objects by themselves anymore. Imagine a “Pro Tools Movie Score” version in which every cue in a project must be linked to a visual or virtual event or object. That's advanced thinking.
Apart from that editing requirement, Wwise's GUI design and functionality are elegant and very user-friendly, just like the DAWs we all know and love. Work is divided into layouts: Designer, Profiler, SoundBank, Mixer and Schematic. Learning these layouts is easy with the provided tutorials. Plus, you get just about every bit of functionality you'd want from propagation, effects, specialization and playback behaviors, so you have everything you'd want with current-gen platforms. This is high tech.
Wwise's Soundcaster is a comprehensive method for achieving results in real time and for simulating an environment. It also has a complete setup for integrating directly into Perforce, the industry's leading version/revision control system. (Perforce allows multiple users to work on the same project using a file-checkout system.)
When loading a control bus into Wwise's Property Editor, you can access a marvelous set of auto-ducking parameters, from fade-in/out to curve and priority. This comes really close to my ideal formatting of ducking groups.
Like ISACT, Wwise has Real-Time Parameter Controls, although Wwise's acronym is RTPC instead of RPC. Going beyond ISACT's capabilities, Wwise lets you use graphic curves to edit these parameters based on user-defined events, states, switches or data objects.
In terms of game-event linking, Wwise uses states, switches and RTPCs to achieve the same goals as the other engines. You create an RTPC in the event that a state change is constant (such as a car engine's RPM during acceleration or deceleration). But for things such as switches, you can simply trigger a sound that is either a one-shot or a loop.
Wwise has a much more open-ended toolset than ISACT. True to form, you can specify preloading (called “prefetching”) or streaming on sounds, and Wwise doesn't lend itself as quickly to adaptive soundtracks, but does provide you the tools to link sounds to game objects. However, Wwise does lack ISACT's tempo subdivision control.
Support with any program is always an issue, but Audiokinetic sales and service manager Genevieve Laberge has provided great help. (I always like to acknowledge the people on the front lines.) Also, Wwise offers documentation that is second to none, with comprehensive PDF user guides and APIs with video (!) tutorials. Certainly, this is a first for any game audio engine.
Wwise was created by experienced game audio engineers, programmers and savvy business folk. Wwise is poised to be the industry leader in game audio engines with its larger suite of pro GUI tools and multiplatform support. On the downside, the company doesn't actually publish its pricing, and Wwise, like any other new system, does have its kinks.
XACT (XBOX AUDIO CREATION TOOL)
The Xbox Audio Creation Tool (XACT, www.xbox.com) from Microsoft is provided free to registered Microsoft game developers as part of XDK, the Xbox Development Kit. XACT supports platforms including Xbox (Version 1), Xbox 360 (V. 2) and PC, with audio files in Microsoft WAV, AIF, AIFF, XMA and up to 5.1 surround for Xbox 360 games. Sounds must be encoded (compressed) using XMAEncode (a command line tool) or XMAEncoder.lib, which lets the developer automatically add XMA encoding to the build process.
XACT uses a fairly straightforward bank editing tool, which comprises a Project window indicating a number of objects such as Wave Banks (a Wave being equivalent to a cue or a sound that can contain one or more actual sound files), Sound Banks (Sounds being the sound files themselves: WAV, AIFF, etc.), Sound Cues (more complex Waves that can be assigned events and variables), Categories (a means of organizing sound groups into places such as ducking, fading, etc.), Variables (a way for programmers to access user-created runtime parameter controls), Compression Presets and DSP Effects.
You can create Events to add markers, set volume, set pitch and so on. Users can also string Events together in a “Track” (similar to the same way that ISACT handles such things), generating a multitrack environment that is controllable within the game.
Essentially, XACT acts like a patch-control center for your synth on steroids and adds a bit of multitrack editing. The layout is well done and user friendly. You can also instantly audition files on the Xbox 360 using the Audio Console tool, which brings up a set of level meters on your TV.
Unfortunately, XACT's middleware-agnostic design requires programmer interaction to achieve real-time control, but then again, all the engines do the same. Xact.lib is a library provided to the programmers that will enable access from any middleware to XACT's real-time parameters, which can be anything from pitch, volume, events, variables and so on. There is no sound matrix functionality in XACT, but similar functionality can be created with a little more effort using Tracks, Events and/or Variables.
Wave banks can be assigned as in-memory or streamed. And as we have learned before, you can't stream everything. A DVD has only so much bandwidth, as does Blu-ray (but we'll get to the PS3 in the next column). In this case, you can specify zero-latency streaming, which, at a given point (specified by the programmer or an audio designer with some good tools within the game world editor), will load the first chunk or a few chunks of a large file. They will stay in memory without having to load the entire file, and when the file is needed, it can instantly begin. This avoids latency when timing is critical, such as in voice-over applications.
The game event sets up everything in XACT via Sound Cues, Transitions and Events, and the code's RTPC libraries do the rest.
The Xbox audio support team, headed by Scott Selfon, has a great history. They offered tutorials at the Game Developers Conference before anyone else, and they created the Audio Boot Camp, a place where developers receive hands-on training for using their tools. This Boot Camp has expanded to cover a number of other tools. Plus, their e-mail response time is 24 hours or less for Xbox developers.
Like Creative Labs' GameCODA and ISACT, XACT is for a single platform. If you then port to the PS3, you'll have to roll another solution. But XACT is the best audio tool for the Xbox 360 because it was written for it from the ground up, as was its predecessor for V. 1. Add to that a great support team and you have a tool that performs brilliantly, combined with some state-of-the-art control of audio through RTPC, actual manipulation of sounds in real time and Events. Want to change a music track while testing a build? You can do that in XACT, too.
XACT's Interactive Audio feature uses a bit of code combined with some of the XACT tool's functionality. When you've created one or more Sound Cues, you can set them to Interactive. At this point, it will read variables set in the sound cue and you can edit transitions based on those variables. The process may seem somewhat confusing, but that's what it takes to create a transparent layer of game behavior.
Everything needs to be pretty abstract to work in a puzzle game, an role-playing game or a sports title. After about three years, you get used to it and it becomes the most fun activity you've ever done with audio.
Next month, I'll round out this series with FMOD, the Miles Sound System and Unreal 3! Stay tuned.
Alexander Brandon is the audio director for Midway Home Entertainment in San Diego, Calif.