This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Audio Event Graph

How to author complex sound events visually using the Audio Event Graph editor — nodes, phase lifecycle, variables, and runtime control.

The Audio Event Graph is a visual node-based editor for authoring complex sound events. Instead of a single clip pool, you connect sources, filters, effects, and routing nodes into a graph that evaluates as a data-flow pipeline. Each .audiograph file is one sound event. At runtime, the graph maps directly to a live audio processing chain.

For component properties and C++ extension, see the Framework API reference.

Audio Event Graph Editor in O3DE Editor

 

Contents


How It Works

Nodes in an Audio Event Graph evaluate left to right in topological order. Connections carry AudioRoute values — handles to a point in the audio processing chain. The signal flows through:

  1. An Entry node gates which phase is active
  2. Source nodes create and output audio
  3. Filter and effect nodes process the signal
  4. Routing nodes (If/Switch) direct the signal based on variables
  5. The Output node wires everything to a mixing bus

Only nodes affected by a change re-evaluate — the rest are skipped. This makes variable-driven sound modification cheap even for complex graphs.


Phase Lifecycle

Audio Event Graph Lifecycle Nodes

Every Audio Event Graph supports up to three phases:

PhaseEntry NodeUse For
StartAud_StartNodeOne-shot intro sounds, attack transient
LoopAud_LoopNodeSustained loops, ambient audio
FinishAud_FinishNodeFade-outs, release tails

Phases transition automatically: Start fires once, Loop repeats while looping is enabled, Finish plays when FinishAudioGraph() is called. Not all phases are required — a simple one-shot only needs Start.

Entry nodes share routing freely. A source wired to both Start and Loop phases produces sound in both.


Nodes

Source Nodes

Source Nodes in the Audio Event Graph Editor

NodeWhat It Does
Aud_SoundNodeSingle audio asset playback
Aud_AudioPoolNodeRandom clip selection from a pool

Both support volume, pitch, delay, looping, and 3D spatialization.

Filter Nodes

Filter Nodes in the Audio Event Graph Editor

LowPass, HighPass, BandPass, Notch, PeakingEQ, LowShelf, HighShelf — all take audio_in and output audio_out. Parameters (cutoff, Q, gain) can be set per-node or bound to graph variables.

Effect Nodes

Echo / Delay Effect Node

NodeWhat It Does
Aud_EchoNodeEcho / reverb tail
Aud_DelayNodeDelay effect

Routing Nodes

IfNode and SwitchNode route AudioRoute values based on conditions or a selector variable. Use these for conditional audio paths — different sounds based on surface type, weather, or character state.

Output Node

Aud_OutputNode wires the final signal to a named mixing bus. Every graph needs exactly one Output node.


Using Variables

Declare variables in the Variable Panel. Bind them to filter parameter slots (right-click > Convert to Reference) or use If/Switch nodes to route based on them.

At runtime, setting a variable re-evaluates only the nodes that depend on it — the rest of the graph is untouched.

Common patterns:

VariableTypeUse
underwaterFloatBind to LowPass cutoff — muffles audio when > 0
surfaceTypeIntDrive a SwitchNode to select different footstep sources
intensityFloatBlend between effect parameters for emotional scoring

Variables are set from gameplay code via the Audio Manager:

SetAudioGraphVariable(instanceId, "underwater", 0.8)
SetAudioGraphVariableBool(instanceId, "isSprinting", true)

Playing at Runtime

All Audio Event Graph playback goes through the Audio Manager.

Fire-and-Forget

For one-shot sounds with no runtime modification needed:

PlayAudioGraph("Assets/Audio/Explosion.audiograph")

Manual Control

For sounds that loop, need variable updates, or need explicit stopping:

  1. AcquireAudioGraph(assetPath) — get an instance ID
  2. SetAudioGraphLooping(id, true) — if it loops
  3. SetAudioGraphEntity(id, entityId) — for 3D tracking
  4. FireAudioGraph(id) — start playback
  5. SetAudioGraphVariable(id, name, value) — update variables any time
  6. StopAudioGraph(id) or FinishAudioGraph(id) — stop cleanly
  7. ReleaseAudioGraph(id) — return the instance to the pool

Quick Reference

TaskHow
Create a new graphFile > New in the Audio Event Graph Editor
Add a phase entry nodeDrag Start / Loop / Finish node from the palette
Add a sourceDrag Aud_SoundNode or Aud_AudioPoolNode
Chain a filterConnect source audio_out → filter audio_in
Wire to outputConnect final node’s audio_out → Aud_OutputNode audio_in
Bind a variable to a slotRight-click the slot > Convert to Reference
Play fire-and-forgetAudioManagerRequestBus::PlayAudioGraph(path)
Play with controlAcquireAudioGraphFireAudioGraphReleaseAudioGraph
Update a variableSetAudioGraphVariable(id, name, value)

Glossary

TermMeaning
Audio Event GraphA .audiograph file defining a sound event as a data-flow node graph
AudioRouteThe value type flowing between nodes — a handle to a point in the miniaudio processing chain
PhaseOne of three lifecycle stages (Start / Loop / Finish) gated by entry nodes
Graph InstanceAn independent runtime copy of a graph, pooled and managed by the Audio Manager
Dirty PropagationThe evaluation model — only nodes downstream of a changed variable re-run

For full definitions, see the Glossary.


See Also


Get GS_Audio

GS_Audio — Explore this gem on the product page and add it to your project.