# carbonengine/audio architecture

> Architecture diagram of the GitHub repository carbonengine/audio, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/carbonengine/audio
- Repository: https://github.com/carbonengine/audio

## Overview

Carbon Audio is a Carbon-engine audio runtime that wraps Wwise, with Python and C++ entry points. Its main workflow configures and initializes the engine, loads event metadata and soundbanks, then manages playback and spatial behavior. The graph also preserves sound prioritization and the separate Wwise-authoring integration. Some subsystem links are documented capabilities rather than inspected call paths; those are represented at subsystem level where the tree supports a path.

Main entry points: [`src/AudManager.cpp`](https://github.com/carbonengine/audio/blob/main/src/AudManager.cpp) (Audio engine manager), [`python/audio2/audiomanager.py`](https://github.com/carbonengine/audio/blob/main/python/audio2/audiomanager.py) (Python AudioManager), [`src/AudManager_Blue.cpp`](https://github.com/carbonengine/audio/blob/main/src/AudManager_Blue.cpp) (Blue API exposure), [`src/WAAPI/WaapiManager.cpp`](https://github.com/carbonengine/audio/blob/main/src/WAAPI/WaapiManager.cpp) (WAAPI manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry and lifecycle"]
  node_py_manager["Python AudioManager<br/>[audiomanager.py]"]
  node_native_manager["Audio engine manager<br/>[AudManager.cpp]"]
  node_blue_api["Blue API exposure"]
  node_settings["Engine settings<br/>[AudSettings.h]"]
  node_banks["Soundbank management<br/>[AudManager.cpp]"]
end

subgraph group_runtime["Playback runtime"]
  node_wwise["Wwise sound engine"]
  node_io["Bank and media IO<br/>[LowLevelIOHook.cpp]"]
  node_paths["Audio path resolver"]
  node_emitters["Audio emitters<br/>[AudEmitter.cpp]"]
  node_listeners["Audio listeners<br/>[AudListener.cpp]"]
  node_music_ui["Music and UI players<br/>[AudMusicPlayer.cpp]"]
  node_parameters["Audio parameters<br/>[AudParameter.cpp]"]
end

subgraph group_spatial["Spatial audio"]
  node_spatial_settings["Spatial configuration"]
  node_geometry["Spatial geometry<br/>[AudGeometry.cpp]"]
  node_occlusion["Obstruction and occlusion"]
end

subgraph group_metadata["Metadata and prioritization"]
  node_metadata_input["Event metadata"]
  node_static_data[("Static data repository")]
  node_prioritization["Sound prioritization"]
end

subgraph group_authoring["Authoring integration"]
  node_waapi_python["Python WAAPI manager<br/>[waapimanager.py]"]
  node_waapi_native["WAAPI manager<br/>[WaapiManager.cpp]"]
end

node_game(("Game client"))
node_authoring_tool(("Wwise Authoring Tool"))

node_game -->|"configures"| node_py_manager
node_game -->|"calls"| node_blue_api
node_py_manager -->|"wraps APIs"| node_blue_api
node_py_manager -->|"initializes metadata"| node_static_data
node_blue_api -->|"dispatches"| node_native_manager
node_native_manager -->|"uses settings"| node_settings
node_native_manager -->|"initializes"| node_wwise
node_native_manager -->|"manages banks"| node_banks
node_banks -->|"loads banks"| node_wwise
node_wwise -->|"requests files"| node_io
node_io -->|"resolves paths"| node_paths
node_native_manager -->|"manages emitters"| node_emitters
node_native_manager -->|"manages listeners"| node_listeners
node_native_manager -->|"exposes playback"| node_music_ui
node_native_manager -->|"manages parameters"| node_parameters
node_emitters -->|"posts events"| node_wwise
node_listeners -->|"sets listener"| node_wwise
node_native_manager -->|"configures spatial audio"| node_spatial_settings
node_native_manager -->|"controls geometry"| node_geometry
node_native_manager -->|"updates occlusion"| node_occlusion
node_game -->|"provides metadata"| node_metadata_input
node_metadata_input -->|"initializes"| node_static_data
node_native_manager -->|"queries event data"| node_static_data
node_native_manager -->|"applies prioritization"| node_prioritization
node_py_manager -.->|"wraps authoring APIs"| node_waapi_native
node_waapi_python -->|"dispatches"| node_waapi_native
node_waapi_native -->|"queries and edits"| node_authoring_tool

click node_py_manager "https://github.com/carbonengine/audio/blob/main/python/audio2/audiomanager.py"
click node_native_manager "https://github.com/carbonengine/audio/blob/main/src/AudManager.cpp"
click node_blue_api "https://github.com/carbonengine/audio/blob/main/src/AudManager_Blue.cpp"
click node_settings "https://github.com/carbonengine/audio/blob/main/src/AudSettings.h"
click node_banks "https://github.com/carbonengine/audio/blob/main/src/AudManager.cpp"
click node_io "https://github.com/carbonengine/audio/blob/main/src/LowLevelIO/LowLevelIOHook.cpp"
click node_paths "https://github.com/carbonengine/audio/blob/main/src/LowLevelIO/AudPathResolver.cpp"
click node_emitters "https://github.com/carbonengine/audio/blob/main/src/AudEmitter.cpp"
click node_listeners "https://github.com/carbonengine/audio/blob/main/src/AudListener.cpp"
click node_music_ui "https://github.com/carbonengine/audio/blob/main/src/AudMusicPlayer.cpp"
click node_parameters "https://github.com/carbonengine/audio/blob/main/src/AudParameter.cpp"
click node_spatial_settings "https://github.com/carbonengine/audio/blob/main/src/SpatialAudioSettings.cpp"
click node_geometry "https://github.com/carbonengine/audio/blob/main/src/AudGeometry.cpp"
click node_occlusion "https://github.com/carbonengine/audio/blob/main/src/AudObstructionOcclusion.cpp"
click node_static_data "https://github.com/carbonengine/audio/blob/main/src/AudStaticDataRepository.cpp"
click node_prioritization "https://github.com/carbonengine/audio/blob/main/src/SoundPrioritization.cpp"
click node_waapi_python "https://github.com/carbonengine/audio/blob/main/python/audio2/waapimanager.py"
click node_waapi_native "https://github.com/carbonengine/audio/blob/main/src/WAAPI/WaapiManager.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_py_manager,node_native_manager,node_blue_api,node_settings,node_banks,node_game toneBlue
class node_wwise,node_io,node_paths,node_emitters,node_listeners,node_music_ui,node_parameters toneAmber
class node_spatial_settings,node_geometry,node_occlusion toneMint
class node_metadata_input,node_static_data,node_prioritization toneRose
class node_waapi_python,node_waapi_native,node_authoring_tool toneIndigo
```

## Components

### Entry and lifecycle

- [Python AudioManager](https://github.com/carbonengine/audio/blob/main/python/audio2/audiomanager.py): `python/audio2/audiomanager.py`
- [Audio engine manager](https://github.com/carbonengine/audio/blob/main/src/AudManager.cpp): `src/AudManager.cpp`
- [Blue API exposure](https://github.com/carbonengine/audio/blob/main/src/AudManager_Blue.cpp): `src/AudManager_Blue.cpp`
- [Engine settings](https://github.com/carbonengine/audio/blob/main/src/AudSettings.h): `src/AudSettings.h`
- [Soundbank management](https://github.com/carbonengine/audio/blob/main/src/AudManager.cpp): `src/AudManager.cpp`

### Playback runtime

- **Wwise sound engine**
- [Bank and media IO](https://github.com/carbonengine/audio/blob/main/src/LowLevelIO/LowLevelIOHook.cpp): `src/LowLevelIO/LowLevelIOHook.cpp`
- [Audio path resolver](https://github.com/carbonengine/audio/blob/main/src/LowLevelIO/AudPathResolver.cpp): `src/LowLevelIO/AudPathResolver.cpp`
- [Audio emitters](https://github.com/carbonengine/audio/blob/main/src/AudEmitter.cpp): `src/AudEmitter.cpp`
- [Audio listeners](https://github.com/carbonengine/audio/blob/main/src/AudListener.cpp): `src/AudListener.cpp`
- [Music and UI players](https://github.com/carbonengine/audio/blob/main/src/AudMusicPlayer.cpp): `src/AudMusicPlayer.cpp`
- [Audio parameters](https://github.com/carbonengine/audio/blob/main/src/AudParameter.cpp): `src/AudParameter.cpp`

### Spatial audio

- [Spatial configuration](https://github.com/carbonengine/audio/blob/main/src/SpatialAudioSettings.cpp): `src/SpatialAudioSettings.cpp`
- [Spatial geometry](https://github.com/carbonengine/audio/blob/main/src/AudGeometry.cpp): `src/AudGeometry.cpp`
- [Obstruction and occlusion](https://github.com/carbonengine/audio/blob/main/src/AudObstructionOcclusion.cpp): `src/AudObstructionOcclusion.cpp`

### Metadata and prioritization

- **Event metadata**
- [Static data repository](https://github.com/carbonengine/audio/blob/main/src/AudStaticDataRepository.cpp): `src/AudStaticDataRepository.cpp`
- [Sound prioritization](https://github.com/carbonengine/audio/blob/main/src/SoundPrioritization.cpp): `src/SoundPrioritization.cpp`

### Authoring integration

- [Python WAAPI manager](https://github.com/carbonengine/audio/blob/main/python/audio2/waapimanager.py): `python/audio2/waapimanager.py`
- [WAAPI manager](https://github.com/carbonengine/audio/blob/main/src/WAAPI/WaapiManager.cpp): `src/WAAPI/WaapiManager.cpp`

### Other components

- **Game client**
- **Wwise Authoring Tool**

## Connections

- Game client → Python AudioManager: configures
- Game client → Blue API exposure: calls
- Python AudioManager → Blue API exposure: wraps APIs
- Python AudioManager → Static data repository: initializes metadata
- Blue API exposure → Audio engine manager: dispatches
- Audio engine manager → Engine settings: uses settings
- Audio engine manager → Wwise sound engine: initializes
- Audio engine manager → Soundbank management: manages banks
- Soundbank management → Wwise sound engine: loads banks
- Wwise sound engine → Bank and media IO: requests files
- Bank and media IO → Audio path resolver: resolves paths
- Audio engine manager → Audio emitters: manages emitters
- Audio engine manager → Audio listeners: manages listeners
- Audio engine manager → Music and UI players: exposes playback
- Audio engine manager → Audio parameters: manages parameters
- Audio emitters → Wwise sound engine: posts events
- Audio listeners → Wwise sound engine: sets listener
- Audio engine manager → Spatial configuration: configures spatial audio
- Audio engine manager → Spatial geometry: controls geometry
- Audio engine manager → Obstruction and occlusion: updates occlusion
- Game client → Event metadata: provides metadata
- Event metadata → Static data repository: initializes
- Audio engine manager → Static data repository: queries event data
- Audio engine manager → Sound prioritization: applies prioritization
- Python AudioManager → WAAPI manager: wraps authoring APIs
- Python WAAPI manager → WAAPI manager: dispatches
- WAAPI manager → Wwise Authoring Tool: queries and edits
