ADX Beginner’s Guide #7 – AISAC
Until now, in this beginner’s guide, we have mostly focused on creating Cues and mixing them together. We will now add a new dimension and learn how to control their properties in real-time from a game, thanks to the AISAC system.
What is AISAC?
AISAC is the system in CRI ADX that allows you to control the audio parameters with values that are either coming from the game, or are generated by CRI ADX itself. This type of feature is sometimes called Real-Time Parameter Control (RTPC). This can be useful in various scenarios, such as progressively changing the sound of a vehicle engine or adjusting the volume of a crowd’s cheer. It can also be used to blend multiple sounds or modify the sound based on the listener’s position relative to the emitter. AISAC is essential for making your audio truly react to what’s happening in-game.
AISAC can be used on Cues, Tracks, DSP Bus, and Categories. In practice, this works as follows:
- In the game engine, we link a game parameter to an AISAC Control. The AISAC Control is simply a named identifier that allows the programmer to pass a value from the game to CRI ADX.
- This AISAC Control is then assigned to an AISAC on a Cue (or any other compatible object).
- The AISAC will drive the selected audio properties of the Cue (volume, pitch, send level, etc.).
- The range and evolution of each property are then defined using an AISAC graph – or mapping curve.
This diagram summarizes the types of values that can be passed to an AISAC, and some typical parameters that can be controlled:
- One AISAC Control can drive several AISAC.
- One AISAC can drive several properties.
- Several AISAC Controls can affect different AISACs within the same Cue.
- An AISAC affects itself or the objects that are lower in the project hierarchy.
Configuring an AISAC
Here is how to use an AISAC in Atom Craft:
- In the Project Tree, create or rename an AISAC Control.
- Select a Cue or a Track in the WorkUnits Tree, or a DSP Bus Setting or a Category in the Project Tree.
- Once the object is selected, click on Create an AISAC.
- A new window will appear: change the name of the AISAC, select the AISAC-Control used to drive the AISAC, then select the first property for which an AISAC graph is to be created.
- The AISAC will appear under the selected object. Double-click on it to open the AISAC view.
- In this view, you can edit the graph by creating or deleting points and changing the curve type of the segments.
- The view also lists all the AISAC created in this hierarchy. Right-click an AISAC and select Create Graph to add a new AISAC graph.
In the AISAC view, you can also change the Control Type for each AISAC. Each mode allows you to create different effects:
- Off (default) – The control value can be set manually. This is the mode to use when you need the AISAC to change based on the value of a game parameter. By moving the cursors at the top of the AISAC view, you can simulate the change of the AISAC-Controls.
- Auto Modulation – The control value is automatically changed over the specified time. The modulation can be set to Loop (it will be repeated until the playback is stopped) or Oneshot (it will stop when the control reaches the final value). When you play the Cue, you will see the cursor of the control value move automatically.
- Random – A control value is selected randomly when a playback request occurs. The Random Range can be changed and is represented by the green overlay around the cursor of the control value.
Global and Reference AISACs
Sometimes several objects will need to be controlled in the same way, using the same AISAC with the same curves. In these cases, it is recommended to use a Global AISAC.
A Global AISAC is an AISAC that is shared across the project and can be referenced by multiple Cues, Tracks, Categories, etc. The advantage of using a Global AISAC is that you only need to edit a unique AISAC while adjusting your curves. Once modified, the changes are propagated to all objects using this Global AISAC.
To create and configure a Global AISAC:
- In the Project Tree, create a Global AISAC in its dedicated folder.
- Add all the AISAC graphs you want to control.
- Drag and drop the Global AISAC on a Cue, a Track, etc. to assign it to the objects.
- This will create an AISAC Link which is the object representing the link to the Global AISAC.
A standard AISAC can be converted to a Global AISAC in case you realize later that it needs to be used by more than one object.
- Simply right-click on an AISAC and select Change to Global AISAC.
The objects called Reference AISAC are used in the same way (with AISAC Links) and they offer the same benefits as Global AISAC, except that they are shared only within a Work Unit instead of the entire project.
- Reference AISAC can be created in the Work Unit Tree under the References\AISAC folder.
- Reference AISAC and Global AISAC can be converted either way if needed. Right-click on these objects and select Change to Global/Reference AISAC.
Thanks to the AISAC system, we can now create interactive sounds that will react to game parameters. In the next blog post, we will explore how spatialization works in CRI ADX and how AISAC can be useful in that context.