The Audio Manager is the master audio controller for every GS_Play project. It extends GS_ManagerComponent and participates in the standard two-stage initialization managed by the Game Manager. On startup it initializes the MiniAudio engine, creates the named mixing bus graph, and coordinates score track playback.
Like all GS_Play managers, the Audio Manager responds to standby mode automatically — muting or pausing audio output when the game enters a blocking operation such as a stage change.
For usage guides and setup examples, see The Basics: GS_Audio.

Contents
How It Works
Engine Lifecycle
When the Audio Manager activates, it initializes a MiniAudio engine instance and builds the mixing bus graph from its configured bus list.
Mixing Bus Routing
All audio output flows through named mixing buses. Each bus is a GS_MixingBus node in the MiniAudio graph with its own volume level and optional effects chain. The Audio Manager owns the top-level routing and exposes volume control per bus through the request bus.
Audio Event Graph Pooling
The Audio Manager maintains a template cache and instance pool for Audio Event Graphs. When a graph is played:
- First request for a path loads and caches the
GraphDocumentAsset - A
GraphInstanceis created from the cached asset - On release, idle instances are pooled for reuse (default pool size: 8)
- Each instance is fully independent — variables, phase, and state do not bleed between instances
Score Playback
The Audio Manager coordinates playback of ScoreArrangementTrack assets — multi-layer musical scores with configurable tempo, time signature, and layer selection.
Inspector Properties
| Property | Type | Description |
|---|---|---|
| Mixing Buses | AZStd::vector<BusEffectsPair> | Named mixing buses with optional effects chains. |
| Default Master Volume | float | Initial master volume (0.0 to 1.0). |
API Reference
GS_AudioManagerComponent
| Field | Value |
|---|---|
| TypeId | {F28721FD-B9FD-4C04-8CD1-6344BD8A3B78} |
| Extends | GS_Core::GS_ManagerComponent |
| Header | GS_Audio/GS_AudioManagerBus.h |
Audio Event Graph
Instanced, visual-graph-based sound events with full lifecycle control, variable injection, and 3D spatialization.
Playback Control
| Method | Parameters | Returns | Description |
|---|---|---|---|
PlayAudioGraph | const AZStd::string& assetPath | AZ::u32 instanceId | Fire-and-forget graph playback. Auto-cleaned up when finished. Returns an instance ID. |
AcquireAudioGraph | const AZStd::string& assetPath | AZ::u32 instanceId | Acquires a graph instance for manual control. Caller is responsible for release. |
FireAudioGraph | AZ::u32 instanceId | void | Starts or restarts playback on an acquired instance. |
StopAudioGraph | AZ::u32 instanceId | void | Stops playback cleanly and returns the instance to the pool. |
StopAllAudioGraphs | — | void | Emergency stops all playing graph instances. |
ReleaseAudioGraph | AZ::u32 instanceId | void | Releases a manually acquired instance back to the pool. |
StopAudioGraphFade | AZ::u32 instanceId, float fadeTime | void | Fades out and stops over the specified duration (seconds). |
Lifecycle
| Method | Parameters | Returns | Description |
|---|---|---|---|
SetAudioGraphLooping | AZ::u32 instanceId, bool looping | void | Enables or disables the Loop phase. |
FinishAudioGraph | AZ::u32 instanceId | void | Transitions to the Finish phase after current sounds complete. |
Variable Control
Set graph variables at runtime to drive filter parameters, routing, and source selection.
| Method | Parameters | Returns | Description |
|---|---|---|---|
SetAudioGraphVariable | AZ::u32 instanceId, const AZStd::string& name, float value | void | Sets a float variable on the instance. |
SetAudioGraphVariableInt | AZ::u32 instanceId, const AZStd::string& name, int value | void | Sets an int variable. |
SetAudioGraphVariableBool | AZ::u32 instanceId, const AZStd::string& name, bool value | void | Sets a bool variable. |
SetAudioGraphVariableString | AZ::u32 instanceId, const AZStd::string& name, const AZStd::string& value | void | Sets a string variable. |
Setting a variable marks dependent nodes dirty and re-evaluates only the affected portion of the graph on the next tick.
3D Spatialization
| Method | Parameters | Returns | Description |
|---|---|---|---|
SetAudioGraphEntity | AZ::u32 instanceId, const AZ::EntityId& entityId | void | Tracks entity position for 3D audio. Updated each tick. |
SetAudioGraphPosition | AZ::u32 instanceId, const AZ::Vector3& position | void | Fixed world position for 3D audio. |
ClearAudioGraphSpatialization | AZ::u32 instanceId | void | Disables 3D spatialization (plays as 2D). |
Usage Pattern
// Fire-and-forget
AudioManagerRequestBus::Broadcast(&AudioManagerRequests::PlayAudioGraph,
"Assets/Audio/Footstep_Stone.audiograph");
// Manual control with variable injection
AZ::u32 instanceId = 0;
AudioManagerRequestBus::BroadcastResult(instanceId,
&AudioManagerRequests::AcquireAudioGraph,
"Assets/Audio/Ambience_Forest.audiograph");
AudioManagerRequestBus::Broadcast(&AudioManagerRequests::SetAudioGraphLooping, instanceId, true);
AudioManagerRequestBus::Broadcast(&AudioManagerRequests::SetAudioGraphEntity, instanceId, entityId);
AudioManagerRequestBus::Broadcast(&AudioManagerRequests::FireAudioGraph, instanceId);
// Later: set a variable to mute underwater
AudioManagerRequestBus::Broadcast(&AudioManagerRequests::SetAudioGraphVariable,
instanceId, "underwater", 0.8f);
// Stop when done
AudioManagerRequestBus::Broadcast(&AudioManagerRequests::StopAudioGraph, instanceId);
AudioManagerRequestBus::Broadcast(&AudioManagerRequests::ReleaseAudioGraph, instanceId);
Mixing
| Method | Parameters | Returns | Description |
|---|---|---|---|
SetMixerVolume | const AZStd::string& busName, float volume | void | Sets the volume of a named mixing bus (0.0 – 1.0). |
GetMixerVolume | const AZStd::string& busName | float | Returns the current volume of a named mixing bus. |
SetMasterVolume | float volume | void | Sets master output volume (0.0 – 1.0). |
GetMasterVolume | — | float | Returns current master output volume. |
Score
| Method | Parameters | Returns | Description |
|---|---|---|---|
PlayScoreTrack | const AZ::Data::Asset<ScoreArrangementTrack>& track | void | Begins playback of a score arrangement track. |
StopScoreTrack | — | void | Stops the currently playing score track. |
Notification Bus: AudioManagerNotificationBus
Events broadcast by the Audio Manager. Multiple handler bus — any number of components can subscribe.
| Event | Parameters | Description |
|---|---|---|
OnScoreTrackStarted | — | Fired when a score track begins. |
OnScoreTrackStopped | — | Fired when a score track stops. |
OnMixerVolumeChanged | const AZStd::string& busName, float volume | Fired when a mixing bus volume changes. |
See Also
- Audio Event Graph — Visual graph editor for sound events
- Mixing & Effects — Mixing buses and effects chains
- Score Arrangement — Multi-layer music scoring
- Manager Base Class — The base class pattern for all managers
Get GS_Audio
GS_Audio — Explore this gem on the product page and add it to your project.