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.
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.
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.
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.
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.
4 – Panning
For a 2D sound, it is also possible to add a random surround panning to each audio clip, Track and Cue.
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.
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.
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.
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.
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:
[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.
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.
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.
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.
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.
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.
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.
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!