Wwise 2017.2 is out, and amidst a lot of great improvements and under-the-hood optimizations, an exciting new feature is the expansion of Wwise’s State-based mixing options, providing greater flexibility and power in controlling your mix. In the 2017.1 release, you may have noticed a few new options in the States tab, such as the ability to control Aux Send Volumes and even the Duration of Transitions within a Random/Sequence Container with a Contnuous Play Mode. This has been expanded even further in 2017.2. Also introduced was the ability to tweak many Effect parameters in States. Let’s take an in-depth look at these features and some examples of how to use them.
Previous to 2017.1, the States tab gave you access to relatively few parameters to tweak within your States, namely volume, pitch, low-pass filter, high-pass filter, and make-up gain.
As of 2017.2, almost any tweakable parameter can be controlled via States. To access these parameters, click on the Properties button in the States tab of the Property Editor to bring up the State Properties dialog. From here, click on any properties you wish to control within your States. As you can see, the list has grown substantially!
Once you add a property by checking the box, it will appear in the States tab for that structure. Because there are so many properties available, it’s a good idea to try to do your mixing at the highest possible level in your mixer hierarchies that makes sense for your project layout, and only select the parameters you’re looking to tweak in your States. In the interest of keeping things sane and readable, each State tab will save its own set of properties; so, if you have Aux Send Volume 2 as a tweakable property in one structure, it won’t show up in the States tab of others structures unless you manually select it in each one.
Perhaps even more exciting is that States can also now control Effect parameters. Most Effect parameters can be tweaked and tweened between States of various State Groups!
So, let’s look at a practical example of how to use these new features in a meaningful way. For example, let’s say we want to make some mix changes tied to the player state. In the past, we could tweak volume, pitch, and filters, and possibly trigger Effects or other actions via additional events. Now, however, we can expose a ton of detail just using States. Let’s explore some of these techniques given the expanded State mixing features in Wwise.
One thing we can do with States now, beyond just playing with filters, is adjusting send volumes from our structures to our various sends. Let’s say we have a couple of aux busses that we want to send some sounds to when the player state changes. We have one called “injured,” which adds a distortion effect, and another called “hallucination,” which has an EQ and a flanger. So let’s say we want these two sends on our Ambience bus so we can affect the ambient sounds when the player state changes. To do so we’ll just add the aux busses to the parent bus as we normally do, and turn their volumes down all the way so they’re not present in the mix:
Then we’ll click on the States tab in our Bus Property Editor, add the state group we wish to affect our aux sends, and click the Properties button to bring up the State Properties window. Select User-defined Aux Send Volume 0 and User-defined Aux Send Volume 1 and they’ll show up in the States tab (note: you may need to expand the columns a bit to be able to see the 0 and 1). Now set the amount you want to send to each bus within any appropriate States. Just remember, since we don’t want these sends to always be audible on this bus, we have them set to -96 so the values you set will be relative to that. In the example below, we’re sending the Ambience bus to the aux send “aux_injured” when in the injured player state at a volume of -24 (-96 + 72) and sending to the aux bus “aux_hallucinating” when in the hallucination player state at 28 (-96+68).
The State features aren’t just relegated to aux sends either. For example, let’s say we have a heartbeat sound on the player which is just a looping Sequence Container, and we want to affect the trigger rate of the sound based on player state. The setup would look something like this:
Now, we’ll click on the States tab, add the player_state State Group, click Properties, and add Duration as a parameter we want to tweak within our States. Maybe we want the heartbeat to get faster when hallucinating or tired, and slower as the player is injured or dying. Since our trigger rate is set to 1 second, we can make adjustments relative to our starting place of 1.
So now our heartbeats will normally play ever second, play every .75 seconds when tired, every half-second when hallucinating, every 1.5 seconds when injured, and every 2 seconds when dying. Easy!
To add a bit more flavor to the heartbeat, let’s say we want to have a delay that comes in on the various states and changes the mix and feedback of the delay effect accordingly based on the player_state State Group. We’ll start by creating a new delay ShareSet. When you open an Effect ShareSet, you’ll notice there’s a new States tab after the RTPC tab.
Click the States tab in the Effect Editor, press the Properties button to bring up the State Properties window, and select the properties you wish to tweak in your States. The Properties window will only show the parameters you can tweak within each specific Effect. As you can see below, delay will let you tweak feedback amount, toggle feedback enable on/off, and also change output level and wet/dry mix.
Next we’ll add our player_state State Group and adjust values within each State accordingly. In the example below, the delay on our the ch_hero_heartbeat_loop sound would barely be audible when tired, it would be slightly more present when injured with a little feedback, when hallucinating we would have very strong feedback and presence in the mix, and finally a slightly more subtle effect when dying.
Now we’ve got a nice delay effect going but in auditioning our new mix setup in game, we realize the delay effect is always playing on the heartbeat sound. We forgot to disable the effect in the normal player_state! Easy enough to fix: just go back to the ch_hero_heartbeat_loop container, go to the States tab, click Properties, add the Bypass Effect for the proper effect slot, and toggle that in the normal State to bypass the effect.
You’ll also notice that there’s a new icon next to the RTPC icon, which will turn blue when a parameter is listed in the States tab. This can be invaluable for being able to quickly see which parameters are being affected by various State Groups. It’s worth understanding that any property selected in the State Properties window will have its icon ticked blue, which means it’s somewhat important to manage your properties and try to ensure that only the ones you’re tweaking in at least one State are visible to make the icon coloration meaningful across your structures.
And those are the basics for using the new mix capabilities inside Wwise. But, this is really just scratching the surface. The ability to use State-based mixing across nearly any property in our projects opens up a level of detail to our mixes that we’ve only dreamed of before and makes previously complex tasks and events possible with just a few mouse clicks.
There are a few minor caveats to bear in mind when using these new capabilities:
Similar to other uses of States in Wwise, there are a handful of parameter values that are additive, capping at the max value for that parameter (for example, feedback and wet/dry mix). So, in the example above, if the feedback of the delay were set to 15, then in the hallucinating State it would be 60 (15 + 45). It’s critical to keep that in mind, especially if you have the potential for multiple States to be affecting a single parameter concurrently.
Also, ShareSets effectively have become both a preset for Effect parameters AND their State-mixing parameters. If you have one Effect ShareSet where you want to affect a single State Group differently on two different structures, you’ll need two separate ShareSets for each instance of that Effect + State setup. This means you’ll need to be judicious in setting up Effects, their parameters, and States in such a way where you’ll always be able to access the proper Effect/State relationships in your mix.
Lastly, not all parameters are available due to custom behavior, the fact that some could cause problems at run-time and others just don’t really make sense with the UI (there’s currently no means to express control over 2D or 3D panning position across States). But, nearly every Effect property and most other properties within Wwise are now accessible and tweakable via States.
The only question left then is how will you use it?