Valve has released a new software development kit to its community, titled simply Steam Audio.
The new, free SDK is available now and it’s supported across PC, Mac, Linux, and even Android. Valve is poising the new SDK as a physics-based audio solution that is targeting a much more realistic approach to sounds in games. The SDK has plugins already made for major engines like Unity, Unreal, and more.
Designed primarily for virtual reality-based games and experiences, the new SDK can be used by any developer. An example is given where Steam Audio will factor in the number and type of objects in a room, their location, and whether or not sound should reverberate in that room.
Here’s a list of key features for the tools:
The simplest thing that any spatial audio technology must do is HRTF-based binaural rendering. This refers to a way of recreating how a sound is affected by a listener’s head, ears, and torso, resulting in subtle cues that allow you to pinpoint where a sound is coming from.
Steam Audio’s implementation of HRTF-based binaural rendering has a very low CPU overhead; you can handle hundreds, even thousands of sources using a single CPU core. It also minimizes the frequency coloration of audio clips, while maintaining good localization.
Steam Audio simulates how objects occlude sound sources. In addition to the typical raycast occlusion that many game engines already support, Steam Audio supports partial occlusion: if you can see part of a sound source, Steam Audio will only partly occlude the sound. Steam Audio uses your existing scene geometry to occlude sounds, so you don’t need to create special occlusion geometry just for sounds.
Reflections and reverb can add a lot to spatial audio. Steam Audio uses the actual scene geometry to simulate reverb. This lets users sense the scene around them through subtle sound cues, an important addition to VR audio. This physics-based reverb can handle many important scenarios that don’t easily fit within a simple box-model.
Steam Audio applies physics-based reverb by simulating how sound bounces off of the different objects in the scene, based on their acoustic material properties (a carpet doesn’t reflect as much sound as a large pane of glass, for example). Simulations can run in real-time, so the reverb can respond easily to design changes. Add furniture to a room, or change a wall from brick to drywall, and you can hear the difference.
Real-Time Sound Propagation
In reality, sound is emitted from a source, after which it bounces around through the environment, interacting with and reflecting off of various objects before it reaches the listener. Developers have wanted to model this effect, and tend to manually (and painstakingly!) approximate sound propagation using hand-tuned filters and scripts. Steam Audio automatically models these sound propagation effects.
Steam Audio simulates sound propagation in real time, so the effects can change automatically as sources move around the scene. Sounds interact with the actual geometry of the scene, so they feel integrated with the scene.
Baked Reverb & Propagation
Just like light probes can accelerate high-quality lighting calculations by precomputing lighting in static scenes, Steam Audio can bake sound propagation and reverb effects in a static scene. For largely static scenes, baking can significantly reduce CPU load while allowing you to improve the quality of sound propagation and reverb effects.
If your geometry is mostly static, you can bake reverb during design. If a sound source is fixed in place, you can bake sound propagation effects during design. For VR experiences where you have only a few listener positions, but multiple moving sources, you can bake sound propagation effects during design too.
Putting It All Together
Steam Audio can apply binaural rendering to occlusion, reverb, and sound propagation effects, so you can get a strong sense of space and direction, even from reflected sounds, reverb entering a room through a doorway, and more.
Steam Audio is royalty-free, and can be used for any virtual reality headset. What’s more, you can even use it outside of the Steam client.