3D Transceiver (Part 1)
It is always challenging to accurately simulate sound sources placed in a complex level geometry, such as buildings with many rooms and openings (doors, windows etc.). Thankfully, the 3D Transceiver feature – available in the CRIWARE plug-ins for Unity and Unreal Engine – provides an easy way to achieve this. In this post, we will examine how this feature works, and in the next post, we will see how to implement the 3D Transceiver in an Unreal Engine project.
Without using complex (and CPU-intensive) raytracing-based audio positioning, the rendering of sound sources within a room does not take the walls into account, and it is still possible to clearly locate their positions from outside the room. The 3D Transceiver feature solves this issue.
After placing a 3D Transceiver on doors or windows, all the 3D sources inside a room will be routed to the Transceiver which will serve as a relay for the 3D positioning outside the room. Indeed, when the listener is outside the room, the 3D sources will be heard as coming from the 3D Transceiver, i.e., from a single source point.
Three sets of parameters are provided to adjust the audio properties between the 3D Transceiver and the listener, in order to create a smooth and natural transition when the listener goes through a door for instance.
- Attenuation Distance: set the Maximum and Minimum attenuation distances around the 3D Transceiver.
- Input Crossfade: set the Direct Audio Radius and the Crossfade Distance to mix between the direct sound from the 3D source and the attenuated sound from the 3D Transceiver.
- Output Interior Pan: set the Source radius and the Internal Distance to change the panoramic spread across the speakers.
While the 3D Transceiver acts as a bridge between the listener and the 3D sound sources, it still behaves as a standard 3D sound: it can therefore be controlled from an AISAC or Global AISAC. Like for any 3D sound source the following controls are also available: Distance Attenuation, Listener-relative azimuth, Listener-relative elevation, Sound Source-relative azimuth, and Sound Source-relative elevation.
This makes it possible to apply effects to the audio output and to change its level according to the positional relationship with the listener. For example, by applying a low-pass filter to the sounds coming from inside a room, it is possible to simulate occlusion. Since all sounds are premixed by the 3D Transceiver, only one filter is required, saving CPU compared to a more direct approach.
In order to distinguish between inside and outside sound sources, 3D Regions must be used to group them together and detect if the listener is currently in the same Region or not. The sound sources within a same 3D Region are submixed by the 3D Transceiver and output to the listener within another 3D Region. Of course, if the source and listener belong to the same region, the sound will come directly from the source.
If you wish to implement the Transceiver 3D feature in your Unreal Engine project, do not miss the second part of this tutorial!