The Game Audio Mixing Revolution
Heavenly Sword (2007) PS3
Tom Colvin, audio director, Ninja Theory
“Heavenly Sword also used FMOD. FMOD provides the ability to create a hierarchical bus structure as described in the section above. Each bus can have its own volume and pitch values, which can be modified in real-time. At the time, FMOD had some performance constraints related to the number of sub-buses within the bus structure, so we tried to keep the hierarchy as simple as possible.
The Ninja Theory tools team built our own proprietary GUI, which allowed us to configure mix snapshots, and adjust the mix in real-time. We were able to prevent the game from updating the mix if desired, so we could play with a mix template without the game suddenly changing the mix on us while we were working. We also had an in-game onscreen debug UI that showed us what mix templates were active, their priorities and so on.
Mixer snapshots were largely activated and deactivated by scripted events. This was one of the weaknesses of the mix system — the game scripts were not the easiest things to work with — they obviously couldn’t be changed while the game was running, and reboot times were long, so it was pretty time consuming getting the mix templates to switch on and off in the right places.
We decided to set up a blanket set of empty templates before the mix session, so we wouldn’t have to spend time actually getting the templates to switch on and off whilst mixing. This constrained the scope of the mix somewhat.
NT’s audio coder (Harvey Cotton) devised a snapshot priority system, which simplified implementation a great deal. The priority system made sure that the snapshot with the highest priority was the one you actually hear. Here’s an example of how this would work. You’re in a combat section of the game, and you perform one of the special moves, and then pause the game during this special move — what would happen with the mix system?
A default low priority mix would always be active. When the special move was initiated, a higher priority “special moves” template would be activated (we used scripted events fired from animations to do this.) When the user pressed pause, the pause mix would activate, and having the highest priority, would then take over from the special move mix.
At this point, three different mix templates are “active”, but only one is audible. The game is un-paused, and we move back to the next lowest priority template, the special move ends, and we move back to the default. The priority system is important because it prevents you from needing to store the game’s previous mix state, in order to return to it once any given scenario has finished.
Throughout development we constantly checked the mix on as many setups as possible — a reasonable spec TV, our own dev-monitors, crappy PC speakers, etc. During mastering, we had a week to set up the final mix templates. The mixing environment was a calibrated mix room. Our one week of mixing didn’t really feel like enough. There were all sorts of content changes we wanted to make at the mix stage, which just weren’t possible due to time constraints.”