ADX

Distance-based effects for voices [Part 1]

In this 2-part tutorial, we will learn how to implement distance-based effects on character voices, using Unreal Engine 5 and ADX for UE.

There are many situations in games where character voices must be processed to sound more realistic (NPC dialog, broadcasted announcements, radio chat in multiplayer mode, etc…). In all these cases:
• The voice can be heard normally at close range
• As the distance increases, the voice becomes muffled and difficult to hear.
• For longer distances, communication devices may be used, such as walkie-talkies, radios, etc… lowering the quality of the transmission.

In this first post, we will prepare the interactive audio data in Atom Craft, ADX’s authoring tool. In the next post, we will handle the implementation in Unreal Engine 5.5, using only Blueprints (no code).

We will use the ADX LE UE SDK (version 2.01.00). If you are not familiar with it yet, ADX LE is the light edition of ADX, and the SDK can be downloaded for free here: https://game.criware.jp/en/products/adx-le_en/

Importing the audio files

First, we need to import the wave files corresponding to the dialog and the noise in AtomCraft as Materials. The Materials folder of your Work Unit should look something like this:

Here we have 2 dialog lines and a noise file.

Creating the Cues

The next step is to create the Cues that will play these sounds. To do so, simply drag and drop each one of the Materials onto the Cue Sheet. The Cues will be automatically created with their default settings.

If needed, you can organize the Cues in different Cue Sheets. However, if you put them in the same Cue Sheet, you should have a structure like this:

To ensure the noise plays continuously during the transmission, select its material in the Inspector, set Overwrite Loop Information to “True”, and set the Loop Type to “Loop”.

Creating the Categories

Since later we will want to apply the muffled effect only to character voices in the game, we will assign them to a Category.

First, we need to create that Category. Expand “Categories” in the project tree, right-click on any Category Group and select “New Object -> Create Category”.

Let’s create a Category called “Voice”.

Then, select the character voice Cue and press the Category Edit button in the Inspector.

As shown below, check the “Voice” Category and press the OK button.
Do this for all the character voice Cues.

Setting up the AISAC Control

We will use ADX’s “Aisac Control” feature to apply effects. First, let’s create a “Global AISAC”, so that we can apply the same Aisac Control to multiple Cues at once.
Right-click “Global AISAC” in the project tree and select “New Object” -> “Create AISAC”.

Select the AISAC graph type as “Bandpass – Cutoff High”. This will allow us to progressively cut off the high frequencies and muffle the sound.

We can create a simple linear graph. Ensure that the AISAC value is set to at least 0.1.
If you set it to a value closer to 0.0, the effect will be too strong and you will barely be able to hear it.

A Global AISAC can be attached to Cues by dragging and dropping it onto these Cues. Let’s do it for all the Cues corresponding to character voices. Once this is done, we will be able to preview the Global AISAC effect.

Once the Global AISAC is attached, you can play a Cue and operate the AISAC control slider to apply the effect, which, in this case, should make the sound muffled.

Finally, check the “Default control value” box of the AISAC control. This will set the default value to 0.0.

Building the Cue Sheet

We are now ready to export the Cue Sheet! Fo to the Build menu and select “Build Atom CueSheet Binary”.

Select the options as shown below and press Build. A new ACB file will be generated.

In the second post of this tutorial, we will import the binary Cue Sheet we prepared in Unreal Engine and use Blueprints to implement distance-based effects on character voices!