# 134 — Audio Settings Data Asset (`DA_AudioSettings`)

## Purpose
Central configuration Data Asset for the MetaSounds Audio System. Holds all default bus configurations, volume defaults, pooling limits, ducking amounts, and accessibility settings. Loaded by `SS_AudioManager` on initialization to configure all 4 MetaSound buses.

## Dependencies
- **Requires:** `SS_AudioManager` (132 — loads this DA on init), MetaSound sources (`MS_MasterBus`, `MS_SFXBus`, `MS_AmbientBus`, `MS_MusicBus`, `MS_DialogueBus`)
- **Required By:** `SS_AudioManager` (132 — direct consumer), Sound Design Team (primary editor target)
- **Engine/Plugin Requirements:** MetaSounds plugin, GameplayTags plugin

## Class Info
| Property | Value |
|----------|-------|
| **Parent Class** | `PrimaryDataAsset` |
| **Class Type** | Data Asset |
| **Asset Path** | `Content/Framework/Audio/DA_AudioSettings.uasset` |
| **Implements Interfaces** | *(none)* |

---

## 1. Enums

*Uses E_AudioBusCategory from `SS_AudioManager` (132).*

---

## 2. Structs

*Uses `S_AudioBusConfig` and `S_RoomAcousticProfile` from `SS_AudioManager` (132).*

---

## 3. Variables

### Bus Configuration (Instance Editable)

| Variable | Type | Default | Category | Description |
|----------|------|---------|----------|-------------|
| `SFXBusConfig` | `S_AudioBusConfig` | *(see defaults below)* | `Bus Config` | SFX bus configuration |
| `AmbienceBusConfig` | `S_AudioBusConfig` | *(see defaults below)* | `Bus Config` | Ambience bus configuration |
| `MusicBusConfig` | `S_AudioBusConfig` | *(see defaults below)* | `Bus Config` | Music bus configuration |
| `DialogueBusConfig` | `S_AudioBusConfig` | *(see defaults below)* | `Bus Config` | Dialogue bus configuration |

### Volume Defaults (Instance Editable)

| Variable | Type | Default | Category | Description |
|----------|------|---------|----------|-------------|
| `DefaultMasterVolume` | `Float` | `1.0` | `Volume` | Default master volume (0–1) |
| `DefaultSFXVolume` | `Float` | `0.85` | `Volume` | Default SFX volume (0–1) |
| `DefaultMusicVolume` | `Float` | `0.80` | `Volume` | Default music volume (0–1) |
| `DefaultAmbientVolume` | `Float` | `0.75` | `Volume` | Default ambient volume (0–1) |
| `DefaultDialogueVolume` | `Float` | `1.0` | `Volume` | Default dialogue volume (0–1) |

### Pool & Limits (Instance Editable)

| Variable | Type | Default | Category | Description |
|----------|------|---------|----------|-------------|
| `SFXPoolSize` | `Integer` | `32` | `Pool` | Max concurrent SFX audio components |
| `MaxConcurrentDialogue` | `Integer` | `2` | `Dialogue` | Max simultaneous dialogue lines |
| `MaxWeaponFireVoices` | `Integer` | `8` | `SFX Sub-mix` | Max concurrent weapon fire sounds |
| `MaxFootstepVoices` | `Integer` | `4` | `SFX Sub-mix` | Max concurrent footstep sounds |
| `MaxImpactVoices` | `Integer` | `8` | `SFX Sub-mix` | Max concurrent impact sounds |

### Ducking Configuration (Instance Editable)

| Variable | Type | Default | Category | Description |
|----------|------|---------|----------|-------------|
| `DialogueDuckSFX` | `Float` | `0.5` | `Ducking` | SFX volume multiplier during dialogue (1.0 = no duck, 0.5 = -6dB) |
| `DialogueDuckAmbience` | `Float` | `0.25` | `Ducking` | Ambience volume multiplier during dialogue (-12dB) |
| `DialogueDuckMusic` | `Float` | `0.125` | `Ducking` | Music volume multiplier during dialogue (-18dB) |
| `DuckTransitionTime` | `Float` | `0.3` | `Ducking` | Ducking fade-in/out time (seconds) |

### Accessibility (Instance Editable)

| Variable | Type | Default | Category | Description |
|----------|------|---------|----------|-------------|
| `bMonoAudioDefault` | `Boolean` | `false` | `Accessibility` | Default mono audio state |
| `DefaultBalance` | `Float` | `0.0` | `Accessibility` | Default L/R balance (-1.0 = left, 0.0 = center, 1.0 = right) |
| `bAudioCuesForUI` | `Boolean` | `false` | `Accessibility` | Play confirmation SFX on UI button presses |

### MetaSound Source References (Instance Editable)

| Variable | Type | Default | Category | Description |
|----------|------|---------|----------|-------------|
| `MasterBusSource` | `UMetaSoundSource` | `None` | `MetaSound Ref` | `MS_MasterBus` MetaSound patch |
| `SFXBusSource` | `UMetaSoundSource` | `None` | `MetaSound Ref` | `MS_SFXBus` MetaSound patch |
| `AmbientBusSource` | `UMetaSoundSource` | `None` | `MetaSound Ref` | `MS_AmbientBus` MetaSound patch |
| `MusicBusSource` | `UMetaSoundSource` | `None` | `MetaSound Ref` | `MS_MusicBus` MetaSound patch |
| `DialogueBusSource` | `UMetaSoundSource` | `None` | `MetaSound Ref` | `MS_DialogueBus` MetaSound patch |

### Room Defaults (Instance Editable)

| Variable | Type | Default | Category | Description |
|----------|------|---------|----------|-------------|
| `DefaultRoomPreset` | `DA_RoomAcousticPreset` | `DA_RP_Outdoor` | `Room` | Fallback room preset when no zone is active |
| `RoomPresetList` | `Array<DA_RoomAcousticPreset>` | *(all presets)* | `Room` | All available room presets (populates SS_AudioManager.RoomPresets) |

---

## 4. Default Bus Configurations

### SFX Bus Default Config
| Field | Value |
|-------|-------|
| `BusCategory` | `SFX` |
| `DefaultVolume` | `0.85` |
| `MetaSoundSource` | `MS_SFXBus` |
| `bSpatialized` | `true` |
| `AttenuationSettings` | `ATT_DefaultSFX` |
| `MaxConcurrentSounds` | `32` |
| `DuckingPriority` | `10` |
| `DuckAmount` | `0.5` |
| `SettingsBindingTag` | `Settings.Audio.SFXVolume` |

### Ambience Bus Default Config
| Field | Value |
|-------|-------|
| `BusCategory` | `Ambience` |
| `DefaultVolume` | `0.75` |
| `MetaSoundSource` | `MS_AmbientBus` |
| `bSpatialized` | `false` |
| `AttenuationSettings` | *(none — stereo)* |
| `MaxConcurrentSounds` | `1` |
| `DuckingPriority` | `5` |
| `DuckAmount` | `0.25` |
| `SettingsBindingTag` | `Settings.Audio.AmbientVolume` |

### Music Bus Default Config
| Field | Value |
|-------|-------|
| `BusCategory` | `Music` |
| `DefaultVolume` | `0.80` |
| `MetaSoundSource` | `MS_MusicBus` |
| `bSpatialized` | `false` |
| `AttenuationSettings` | *(none — stereo)* |
| `MaxConcurrentSounds` | `4` (layers) |
| `DuckingPriority` | `20` |
| `DuckAmount` | `0.125` |
| `SettingsBindingTag` | `Settings.Audio.MusicVolume` |

### Dialogue Bus Default Config
| Field | Value |
|-------|-------|
| `BusCategory` | `Dialogue` |
| `DefaultVolume` | `1.0` |
| `MetaSoundSource` | `MS_DialogueBus` |
| `bSpatialized` | `true` |
| `AttenuationSettings` | `ATT_Dialogue` |
| `MaxConcurrentSounds` | `2` |
| `DuckingPriority` | `100` |
| `DuckAmount` | `1.0` (ducks all other buses) |
| `SettingsBindingTag` | `Settings.Audio.DialogueVolume` |

---

## 5. Functions

### Public Functions

#### `GetDefaultBusConfig` → `S_AudioBusConfig`
- **Description:** Returns the bus config for a given category.
- **Parameters:**
  | Param | Type | Description |
  |-------|------|-------------|
  | `Bus` | `E_AudioBusCategory` | Which bus to get config for |
- **Blueprint Authority:** Any (Pure)

#### `GetDefaultVolume` → `Float`
- **Description:** Returns the default volume for a bus category.
- **Parameters:**
  | Param | Type | Description |
  |-------|------|-------------|
  | `Bus` | `E_AudioBusCategory` | Which bus |
- **Blueprint Authority:** Any (Pure)

---

## 6. Data Asset Edibility Notes

### Sound Designer Workflow
1. Open `DA_AudioSettings` in the Content Browser
2. Assign MetaSound source references to each bus
3. Adjust default volumes per bus
4. Configure ducking amounts for dialogue priority
5. Set SFX pool size and sub-mix voice limits
6. Assign default room preset
7. Changes take effect on next game launch (no recompile needed)

### Platform-Specific Variants
- Maintain separate `DA_AudioSettings` Data Assets per platform if needed:
  - `DA_AudioSettings_PC` — Higher pool size (32), full spatialization
  - `DA_AudioSettings_Console` — Reduced pool (24), optimized attenuation
  - `DA_AudioSettings_Mobile` — Minimal pool (16), simplified reverb

---

## 7. Communication Matrix

| Who Talks | How | What Is Sent |
|-----------|-----|-------------|
| `SS_AudioManager` (132) | `Direct: Load Data Asset` on Initialize | Reads all bus configs, volumes, pool settings |
| `SS_AudioManager` (132) | `Function Call: GetDefaultBusConfig` | Queries `S_AudioBusConfig` per category |
| Sound Design Team | Data Asset Editor | Edits bus configs, MetaSound refs, ducking params |

---

## 8. Validation / Testing Checklist

- [ ] All 4 `BusConfig` structs have non-null `MetaSoundSource` references
- [ ] SFX `bSpatialized = true`, Ambience/Music `bSpatialized = false`
- [ ] Dialogue `DuckingPriority = 100` (highest)
- [ ] Dialogue ducking multipliers: SFX > Ambience > Music (more duck for music)
- [ ] `SFXPoolSize` between 16–64 (reasonable range)
- [ ] `MaxConcurrentDialogue <= 2` (prevents overlapping VO chaos)
- [ ] Volume defaults between 0.0 and 1.0
- [ ] `DialogueDuck*` multipliers between 0.0 and 1.0
- [ ] `DefaultRoomPreset` not null
- [ ] `RoomPresetList` contains all expected room presets
- [ ] Platform variants have appropriate pool sizes for target hardware
- [ ] Edge case: Null MetaSound source → SS_AudioManager logs warning and disables that bus

---

## 9. Reuse Notes

- This Data Asset is the **sound designer's control panel** for the entire audio system.
- `S_AudioBusConfig` fields are exposed directly — no blueprint access required to tune bus behavior.
- The `SettingsBindingTag` on each bus config maps to the persistent settings key, enabling the settings UI to discover available audio sliders automatically.
- Ducking amounts use multiplicative volume (not additive dB) for simplicity — a value of 0.5 means "reduce to 50% volume when dialogue is active."
- Voice limiting per sub-mix (WeaponFire=8, Footsteps=4, Impacts=8) prevents a single audio category from drowning out others.

---

*Blueprint Spec: DA_AudioSettings — Central configuration for MetaSounds audio buses. Architecture document: [`metasounds-audio-system.md`](../../architecture/metasounds-audio-system.md)*
