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

Return to the regular view of this page.

Audio Pro

GS_AudioPro — the premium audio gem. Visual sound authoring, adaptive music, generated speech and real acoustics, added on top of everything the free gem does.

GS_AudioPro is the premium audio gem. It sits on top of GS_Audio — everything in the free gem keeps working exactly as it did, and Pro adds four things of its own.

Added by ProWhat it gives you
Audio Event GraphBuild a sound on a canvas instead of a component list.
Score ArrangementMusic that adds and drops layers as the game changes.
Klatt VoiceGenerated character speech with no recordings.
Geometric AcousticsSounds actually blocked by walls, and reverb from the real room.

 

Contents


Adding Pro to a Project

  1. Enable the GS_AudioPro gem alongside GS_Audio.
  2. Open your Audio Manager prefab and use the Pro Audio Manager component in place of the base one.
  3. Assign your graph libraries and score tracks on it, and save.

The Pro manager does everything the base one does — volume channels, event libraries, listener, project settings are all still there, with Pro’s geometry settings added alongside them.

You cannot run both managers at once. A project uses the base manager or the Pro one.


Where Each Feature Lives

Pro’s features each have their own bus, separate from the Audio Manager’s. Playing sounds, volume and mixing stay exactly where they are on AudioManagerRequestBus.

FeatureBus
Score arrangementsAudioScoreRequestBus
Audio event graphsAudioGraphRequestBus
A graph playing on one entityAudioGraphPlayerRequestBus
VoicesThe Klatt voice buses

Features

Audio Event Graph

Author a sound as a graph. Drop in sources, filters and effects, wire them together, and route the result — with a Start / Loop / Finish lifecycle and variables your game can drive while the sound is playing.

Audio Event Graph

Score Arrangement

Multi-layer music. One arrangement holds several layers with a shared tempo and time signature, and you bring them in and out as the game changes — add percussion for combat, drop it when it ends.

Score Arrangement

Klatt Voice

Speech generated from parameters rather than recordings. Give every character a distinct voice without a recording session, and use inline tags to change pitch or speed partway through a line.

Klatt Voice

Geometric Acoustics

Mark up your level with acoustic volumes and materials, and sounds start being genuinely blocked by what is between them and the player — with reverb that comes from the room they are standing in.

Geometric Acoustics


See Also

For the free gem this builds on:

For the full API:


Get GS_Audio

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

1 - 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 controlAcquireAudioGraph → FireAudioGraph → ReleaseAudioGraph
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.

2 - Geometric Acoustics

How to make sounds get blocked by walls and pick up the reverb of the room they are in — acoustic volumes, materials, occlusion and reflections.

The free gem places sounds by direction and distance — a sound behind a wall is quieter because it is further away, not because the wall is there.

Geometric acoustics makes the wall matter. Mark up your level and sounds get occluded by what is between them and the player, and pick up reverb from the room the player is actually standing in.

For settings and behaviour detail, see the Framework API reference.

 

Contents


Setting It Up

Geometric acoustics is off until you turn it on.

  1. Select your Pro Audio Manager.
  2. Tick Geometry Enabled.
  3. Leave Occlusion and Reflections on unless you specifically want one without the other.

Nothing happens yet — the simulation has no geometry to work with until you mark some up.


Marking Up a Level

You do not hand the system your level meshes. You mark up the parts that matter acoustically — walls, floors, doorways, the big surfaces that shape a room.

Two components do it:

ComponentUse it when
Audio Shape GeometryYou already have a Shape component on the entity. Quads become planes, Boxes become boxes. Usually the easier option.
Audio GeometryYou want to author a box volume directly.

A practical starting point: block out the room a player will spend the most time in, tag its walls and floor, and listen. You will hear the difference immediately, and you can decide from there how much of the rest of the level is worth marking up.


Choosing Materials

Every piece of geometry carries a material preset. Fifteen ship, in three useful groups:

GroupPresetsWhat they do
HardGeneric, Brick, Concrete, Ceramic, Glass, Plaster, Wood, Metal, RockBounce sound. Bright, long reverb — stone corridors, tiled bathrooms.
AbsorptiveGravel, CarpetSoak sound up. Short, dull reverb — carpeted rooms, soft ground.
Soft barriersCurtain, Blanket, Door, DrapeLet sound through, muffled.

The soft-barrier group is worth knowing about. A curtain across a doorway does not silence what is behind it, it dulls it — the effect people usually fake with a low-pass filter. Here you get it by picking the right material.

If none of the presets fit, Custom exposes all seven coefficients directly.


Tuning Occlusion

Two modes:

  • Raycast — one ray. A sound is occluded or it is not. Cheap.
  • Volumetric — samples a sphere around the source, so sound leaks partially around edges. Costs more.

If occlusion sounds like a switch flicking as the player walks past a doorframe, use Volumetric. That partial-occlusion behaviour at edges is exactly what it exists for. Occlusion Radius controls how wide the sampled sphere is.


Tuning Reverb

Reverb comes from the geometry around the player, and updates as they move.

Two behaviours that are deliberate, so you do not go hunting for a bug:

  • It eases between rooms. Walking through a doorway blends the reverb rather than snapping it. Reflection Smooth Time controls how long that takes — set it to 0 if you want an instant change.
  • It does not get quieter as you walk away from a sound. The room sounds like the same room wherever you stand in it, while the dry sound still falls off with distance. That is correct, and it is what makes a large space feel large.

What It Does Not Do

  • Reverb cannot tell your room from the one next door. It is computed around the player, so a sound sealed in an adjacent room still feeds the same reverb.
  • An occluded sound still feeds the reverb. Occlusion muffles the direct sound; it does not stop the source exciting the room.
  • It only knows about geometry you marked up. Render meshes and physics colliders are not consulted.
  • There is no baking. Everything is computed at runtime.

See Also

For settings and behaviour detail:

For related systems:


Get GS_Audio

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

3 - Score Arrangement

How to work with GS_Play score arrangements — multi-layer dynamic music with configurable time signatures and layer control.

Score Arrangement Tracks are multi-layer music assets for dynamic, adaptive game music. Each arrangement defines a time signature, tempo, fade behavior, and a set of independently controllable Score Layers. This enables music that responds to gameplay — adding percussion during combat, muting melody during dialogue, or transitioning between intensity levels.

For asset structure and playback API, see the Framework API reference.

Score Arrangement asset in the O3DE Asset Editor

 

Contents


How It Works

A Score Arrangement Track is a data asset containing:

FieldWhat It Controls
Time SignatureMusical timing (4/4, 3/4, 6/8, etc.).
BPMTempo in beats per minute.
Fade ControlHow layers fade in and out.
Score LayersIndividual audio tracks that play simultaneously.

Each Score Layer is an independent audio stream within the arrangement. Layers can be enabled or disabled at runtime, creating dynamic music that evolves based on game state.


Supported Time Signatures

4/4, 4/2, 12/8, 2/2, 2/4, 6/8, 3/4, 3/2, 9/8


Glossary

TermMeaning
Score Arrangement TrackA multi-layer music data asset with time signature, tempo, and controllable layers
Score LayerAn individual audio stream within an arrangement that can be enabled or disabled at runtime
BPMBeats per minute — the tempo of the arrangement

For full definitions, see the Glossary.


See Also

For the full API, component properties, and C++ extension guide:

For related systems:


Get GS_Audio

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

4 - Klatt Voice Synthesis

How to work with GS_Play Klatt voice synthesis — text-to-speech with 3D spatial audio, voice profiles, and inline parameter control.

GS_Play includes a built-in text-to-speech system based on Klatt formant synthesis. The KlattVoiceComponent converts text to speech in real time with configurable voice parameters. Voices are positioned in 3D space and attenuate with distance, making synthesized speech feel like it comes from the character speaking.

For component properties, voice parameter details, and the phoneme mapping system, see the Framework API reference.

Klatt Voice Profile asset in the O3DE Asset Editor

 

Contents


How It Works

  1. Configure a voice using a KlattVoiceProfile — set frequency, speed, waveform, formants, and pitch variance.
  2. Assign a KlattPhonemeMap — maps text characters to ARPABET phonemes for pronunciation.
  3. Speak text from ScriptCanvas or C++ — the system converts text to phonemes and synthesizes audio in real time.
  4. Position in 3D — the voice component uses KlattSpatialConfig for 3D audio positioning relative to the entity.

Voice Configuration

ParameterWhat It Controls
FrequencyBase voice pitch.
SpeedSpeech rate.
WaveformVoice quality — Saw, Triangle, Sin, Square, Pulse, Noise, Warble.
FormantsVocal tract resonance characteristics.
Pitch VarianceRandom pitch variation for natural-sounding speech.
DeclinationPitch drop over the course of a sentence.

KTT Tags

KTT (Klatt Text Tags) allow inline parameter changes within speech text for expressive delivery:

"Hello <speed=0.5>world</speed>, how are <pitch=1.2>you</pitch>?"

The KlattCommandParser processes these tags during speech synthesis, enabling mid-sentence changes to speed, pitch, and other voice parameters.

For the complete tag reference — all attributes, value ranges, and reset behavior — see the Framework API: KTT Voice Tags.


Phoneme Maps

Two base phoneme maps are available:

MapDescription
SoLoud_DefaultSimple default mapping.
CMU_FullFull CMU pronunciation dictionary mapping.

Custom phoneme overrides allow project-specific word pronunciations (character names, fantasy terms) without modifying the base map.


3D Spatial Audio

The KlattSpatialConfig controls how synthesized speech is positioned in 3D:

  • Voices attenuate with distance from the listener.
  • The KlattVoiceSystemComponent tracks the listener position and updates all active voices.
  • Multiple characters can speak simultaneously with correct spatial positioning.

Quick Reference

NeedBusMethod
Control a voiceKlattVoiceRequestBusVoice synthesis methods (entity-addressed)
System-level voice controlKlattVoiceSystemRequestBusListener tracking, engine management

Glossary

TermMeaning
Klatt SynthesisA formant-based speech synthesis method that generates voice from frequency parameters
KTT TagsInline text tags that modify voice parameters mid-sentence during synthesis
Phoneme MapA mapping from text characters to ARPABET phonemes for pronunciation
KlattSpatialConfigConfiguration for 3D audio positioning and distance attenuation of synthesized speech

For full definitions, see the Glossary.


See Also

For the full API, component properties, and C++ extension guide:

For related systems:


Get GS_Audio

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