Upmixing with the Surrounder
Upmixing is used when porting a game that was previously mixed in stereo, or when time and budget constraints do not allow to produce multichannel content. In this post, we will see how ADX can help with the upmixing process by using the Surrounder effect.
Introduction
Upmixing refers to the process of converting a stereo sound to multichannel audio (quad, 5.1…). Different methods exist to enhance the spatial information of a sound. They usually include gain reduction, filtering, delay, and phase shifting.
If a game is in stereo, the first step to make a multichannel mix is to set up the Atom Sound Renderer (ASR). The number of ASR output channels can be specified via the CriAtomAsrConfig::output_channels property. All the 3D sounds will be automatically spatialized according to the new speaker configuration.
The Surrounder
For the remaining 2D sounds, such as ambience and music to some extent, the Surrounder can be used. This DSP Bus Effect converts a stereo signal into a 4ch surround signal by sending the L and R inputs to Ls and Rs, and processing the audio to adjust the sense of space. Thanks to the Surrounder, no extra content needs to be produced and added to the game, thus preserving the memory footprint.
Note that since upmixing plays with the phase of the signals, it is recommended to use this effect on dry sounds (i.e., without reverb) to avoid any smearing or artefacts. For the same reason, if the 4ch generated by the Surrounder is downmixed, significant degradation of the sound quality is to be expected. Therefore, it is better to bypass the effect programmatically by calling the criAtomExAsr_SetEffectBypass method, making it possible to easily switch between stereo and 5.1ch configurations.
To use the Surrounder:
- Go to the Mixer tab and create a new bus, named Upmix
- Click on the + icon near Effects and insert the Surrounder
- Route any bus (using Send) or Cue (using BusMap) to upmix your content
While it is simple and cost-effective to create a unique bus that will upmix all the sounds in the same way, if CPU load is not a concern, better results can be achieved by having several Surrounder upmixing the different types of content. For instance, interior and exterior ambiences or music could be processed differently.
The Surrounder provides several modes that differ in the way the Front channels (L and R) are sent to the Rear channels (Ls and Rs):
- Straight: L is sent to Ls, and R is sent to Rs.
- Cross: L is sent to Rs, and R is sent to Ls. Left and right signals are reversed, which is good to simulate sound reflections like in an arena.
- Matrix: L-R is sent to Ls, and R-L is sent to Rs. It will suppress the central component and spread the rest of the signal to the rear. It is recommended to set the delay time to 0 and adjust the balance using the gain only.
Gain, delay, and a separate 3-band EQ for Front and Rear can be used to adjust the surround effect further. The EQs will be useful to achieve a more natural upmixing, especially on ambience sounds. For instance, one could lower the high-frequencies in the surround channels to simulate sound absorption. The EQs can also be used to reduce any comb-filtering effect that could happen when using the delay.
Download the project below to try the Surrounder!