ADXTutorials

AtomCraft’s Randomization Features

This post explains how to avoid the repetitive nature of game audio using AtomCraft’s randomization features.

Unlike the real world, games offer a limited number of interactions, which results in repetitiveness. As the audio follows visual cues and gameplay, sounds are played again and again, becoming annoying for the listener and breaking the sense of immersion. Therefore, avoiding audio repetitiveness is a significant part of the sound designer’s job.

Sound designers and audio integrators on a project must maximize the audio experience while dealing with a limited amount of memory. This is why the extensive randomization options of AtomCraft are critical to a successful game audio implementation. Thanks to these options, ADX2 can generate an almost infinite number of variations out of a single audio file and this post will show you how to use AtomCraft’s randomization features in your game.

 

The audio randomization in AtomCraft

AtomCraft allows for considerable audio randomization. From volume to pitch, EQ to panning and even AISAC real-time control, all parameters can be randomized. Moreover, this can be done at any level in the Cue’s hierarchy. For instance, it is possible to define different randomization settings for each sound of a track and have Track and Cue randomization applied at the same time, as depicted below.
Blog Picture02_Randomization in AtomCraft_Structure
Thanks to all those randomization parameters, the audio engine can produce countless variations while using a very small pool of sound effects. AtomCraft also allows for nesting of Cues, which opens the door to even more randomization possibilities. Let’s take a closer look!

 

Five types of Randomization available in AtomCraft

1 – Pitch

AtomCraft allows for simultaneous pitch randomization to each audio clip, Track and Cue of the project.

Blog Picture03_Randomization - Pitch_param

In the example above we have selected the first audio clip and applied a random range to the pitch parameter. We could also have applied different randomization settings on the second audio clip (called “glass.wav”).

Setting the pitch random range is very easy and intuitive: click on the slider and move the mouse up and down. That’s all! The random range will be displayed as a green region on the slider.

2 – Volume

Just like pitch randomization, we can add volume randomization to each element of a Cue.

Blog Picture04_Randomization - Vol_param

3 – EQ

It’s also possible to apply a random EQ variation each time a track or a sound clip is played by the engine.

Blog Picture05_Randomization - EQ_param

In the example above we have applied a random range to the frequency cutoff and the Q factor of a Track. This means that each time an audio clip from this Track plays, the EQ will be slightly different. This is a very effective way to add a lot of variety to your game audio implementation.

The EQ randomization can be applied to the Track itself or directly to each audio clip. To add a random EQ to an audio clip: go to the FX2 tab, uncheck the “Refer to Track Settings” box, select the type of filter you need and finally adjust the settings.

Blog Picture06_Randomization - EQ_param_2

4 – Panning

For a 2D sound, it is also possible to add a random surround panning to each audio clip, Track and Cue.

Blog Picture07_Randomization - Pan_param

In the example above we have added a random surround panning to an audio clip. It will now play at a different position in the surround field each time a playback request occurs.

5 – AISAC with random & auto modulation control types

Finally, we can use the two different AISAC auto-control types to add another layer of randomization on each element of a Cue.

Blog Picture08_Randomization - Automod_param

In the example above we have added an AISAC of the “Random” control type to a Track. As you can see, an AISAC can be used to assign a new random value, from the mapping curve, each time the sound is played. For instance, it can be very useful if you want to create random variations that are still constrained by specific values.

To use this function: select a Track, add an AISAC, specify “Random” for the AISAC control type and edit the curve.

The second available control type is “Auto Modulation”. When you select this control type, the value of the AISAC is automatically changed following the curve and over the specified time.

To use this function: select a Track and an AISAC, indicate if the curve should loop or if it is a one- shot, then draw your curve and tell the engine over what time period (in ms) you want the parameter change to occur.

Blog Picture09_Randomization - Automod_param_2

 

AtomCraft’s nesting features

The nesting of Cues and Subsequences in AtomCraft allows for advanced randomization logic. In addition, since Cues can reference other Cues, when these Cues are of type “Random” or “Random no Repeat”, a lot of variations become possible.

Blog Picture10_Randomization in AtomCraft_Nested cues_01

A Subsequence offers the same features than a Cue. It is essentially a whole Cue within a Track, so Tracks and Waveforms can be added, edited and heavily randomized directly in the Subsequence. Like Cues, Subsequences can also be nested. Each Subsequence can contain the sound effects we want to randomize and we can also randomize between Subsequences as shown below.

Blog Picture11_Randomization in AtomCraft_Nested cues_02

The example project

If you want hear some examples of how the randomization can be used to avoid audio repetition in your game project, we have created a small project that you can download below:

Blog-Picture12_Randomization-zip-file.png

[Note: this project requires the version 2.24 of AtomCraft or higher.]

In this project we provide examples for the five types of randomization available in AtomCraft. We also demonstrate how the nesting of Cues and Subsequence can help to minimize the audio repetitiveness.

Blog Picture13_Randomization - Project_WorkUnit

The project is divided in 3 CueFolders. The first folder – called “Randomization_Functions” – is used to demonstrate some of the parameter randomization features available. The 2 other folders are used to show the nesting features.

Randomization Functions

The first 4 Cues show the basic randomization methods we have explained earlier, which are: Volume, Pitch, EQ and Panning.

The “Auto-AISAC” Cue demonstrates how to use the “Random” AISAC Control Type to create random variations constrained to specific values. In that case, we force the random values onto a musical scale.

Blog Picture14_Randomization - Project_AISAC

Cue Nesting

In this example we show how to use the Cue nesting function to randomize a simple shotgun Sequential Cue. [If you want to learn more about the Cue types in AtomCraft, we recommend that you watch this tutorial video].

“Main_Cue” is the only Cue that will actually be used by the programmer. It defines the gunshot sequence: Fire, Pump and Shell Drop.

Blog Picture15_Randomization - Project_Cue_Nesting_1

Each referenced Cue is inserted on a different Track on the timeline. The sample used, as well as the pitch, volume and EQ have all been randomized.

Blog Picture16_Randomization - Project_Cue_Nesting_2

Subsequences Nesting

In this example we show how to use the Subsequence nesting function to randomize the previous shotgun sequence. In this case, we only need to create a single Cue.

Blog Picture17_Randomization - Project_Sub_Nesting_1

Each referenced Subsequence is inserted on a different Track on the timeline. The sample used, as well as the pitch, volume and EQ have all been randomized.

Blog Picture18_Randomization - Project_Sub_Nesting_2

 

This concludes our post about AtomCraft’s powerful randomization features.

Many thanks to Watson Wu (http://www.watsonwu.com) for generously providing the audio assets used in the demo project!

As always, let us know if you want to learn more about a specific ADX2 function!