Atlas Audio: FMOD Studio Extractor
The FMOD Studio extractor analyzes FMOD project metadata to discover audio asset references, event-to-audio relationships, and compiled bank outputs. It’s part of the Atlas Audio extractor pack.
Extensions: .xml, .fspro
Format Detection
FMOD Studio stores project metadata as individual UUID-named XML files under a Metadata/ directory tree. Since .xml is a broad extension, the extractor fast-bails on non-FMOD files by checking for serializationModel="Studio in the first 200 bytes. Non-FMOD XMLs are skipped with zero overhead.
The .fspro project file is also registered but contains only a serialization header — no extractable references. It’s tracked by Atlas for hash identity only.
FMOD Project Structure
A typical FMOD Studio project has this layout:
MyProject/
├── MyProject.fspro # Project root (minimal XML)
├── Assets/ # Actual audio files (.wav, .mp3)
│ ├── Ambience/
│ ├── SFX/
│ └── Music/
├── Metadata/ # UUID-named XML metadata files
│ ├── AudioFile/ # Maps UUIDs → audio file paths
│ ├── Event/ # Sound event definitions
│ ├── Bank/ # Compiled bank definitions
│ ├── EventFolder/ # Folder hierarchy (ignored)
│ └── Group/ # Mixer groups (ignored)
├── Build/Desktop/ # Compiled output
│ ├── Master.bank
│ └── Master.strings.bank
├── .user/ # Workspace state (ignored by Atlas)
├── .unsaved/ # Pending changes (ignored by Atlas)
└── .cache/ # Build cache (ignored by Atlas)
Atlas ignores .user, .unsaved, .cache, .fobj, and .fsb by default — these are FMOD workspace state and build artifacts, not project data.
What It Finds
The extractor handles three FMOD metadata classes. Other classes (EventFolder, Group, MixerView, etc.) are skipped — they define hierarchy and mixer routing, not file lineage.
AudioFile Metadata → Audio Source
AudioFile XMLs (Metadata/AudioFile/{uuid}.xml) map FMOD’s internal UUID to the actual audio file on disk via the assetPath property.
Edge type: input
The assetPath is relative to the project’s Assets/ directory. The extractor resolves it to an absolute path: ../../Assets/{assetPath} relative to the metadata file’s location.
Traits extracted:
| Trait | Description |
|---|---|
frequency_khz | Audio sample rate in kHz |
channels | Channel count |
length_seconds | Duration in seconds |
Event Metadata → Audio References + Bank References
Event XMLs (Metadata/Event/{uuid}.xml) define sound events — the playable sounds in the game. Each event contains SingleSound objects that reference AudioFile UUIDs, and a banks relationship pointing to the Bank that compiles this event.
Edge type: input (both audio and bank references)
The extractor finds all SingleSound → audioFile destinations across the XML, including sounds nested inside MultiSound containers (FMOD’s randomization/layering mechanism). Each UUID is resolved to the corresponding AudioFile metadata XML: ../AudioFile/{uuid}.xml relative to the event file’s location.
Bank references are similarly resolved: ../Bank/{uuid}.xml.
Traits extracted:
| Trait | Description |
|---|---|
fmod_event_name | Human-readable event name (e.g., “Footstep”, “Explosion”) |
Bank Metadata → Compiled Output
Bank XMLs (Metadata/Bank/{uuid}.xml) define compiled sound banks — the .bank files loaded at runtime. The extractor resolves the bank name to the compiled output file.
Edge type: output
The bank name is resolved to ../../Build/Desktop/{name}.bank relative to the metadata file’s location.
Traits extracted:
| Trait | Description |
|---|---|
fmod_bank_name | Bank name (e.g., “Master”, “SFX”, “Music”) |
Lineage Chain
The three metadata classes chain together to form a complete provenance path:
Event XML ──input──► AudioFile XML ──input──► .wav/.mp3 file
│
└──input──► Bank XML ──output──► .bank file
This means you can:
- Start from a
.wavfile and trace forward to discover which FMOD events use it - Start from an event and trace backward to find every audio source it depends on
- Start from a
.bankfile and trace backward to the events and audio files compiled into it
Example Usage
# Scan an FMOD project
atlas scan ~/projects/MyGame/FMOD/MyProject/
# View what an event needs
atlas inputs ~/projects/MyGame/FMOD/MyProject/Metadata/Event/{uuid}.xml
# View what a bank produces
atlas outputs ~/projects/MyGame/FMOD/MyProject/Metadata/Bank/{uuid}.xml
# Find which events use a specific audio file
atlas dependents ~/projects/MyGame/FMOD/MyProject/Assets/SFX/explosion.wav
# Check for broken references (missing audio files)
atlas broken ~/projects/MyGame/FMOD/MyProject/
Use Cases
- Audio asset auditing — See every audio file used across all events in an FMOD project
- Missing asset detection — Run
atlas brokento find audio files referenced by events that have been moved or deleted - Build tracing — Trace from compiled
.bankfiles back to the source audio that went into them - Asset impact analysis — Before modifying or removing an audio file, check which events depend on it
- Cross-project tracking — When the same
.wavfile is used in both FMOD and a DAW project (Reaper, etc.), Atlas connects them through content identity - Sound design provenance — Track the full chain from original recording through FMOD event to compiled game build