# Phase 3: FMOD Bank Modifications Guide ## Overview This phase covers extracting and modifying FMOD audio banks using FMOD Studio and AssetRipper. **Prerequisites:** - FMOD Studio 2.02.x installed (free from fmod.com) - AssetRipper installed - Game installed at: `C:\apps\steam\steamapps\common\Homura Hime\` --- ## Step 1: Extract FMOD Banks with AssetRipper ### 1.1 Launch AssetRipper ``` Location: C:\projects\HomuraHime-Mods\tools\AssetRipper\AssetRipper.exe ``` ### 1.2 Load HomuraHime 1. Click **File** → **Load** (or drag folder) 2. Navigate to: `C:\apps\steam\steamapps\common\Homura Hime\HomuraHime_Data\` 3. Select the folder and click **Open** ### 1.3 Export Settings 1. Click **File** → **Export** 2. Choose **Resources** (not Asset Directories) 3. Set output path: `C:\projects\HomuraHime-Mods\extracted_assets\` ### 1.4 Locate FMOD Banks After export, find banks at: ``` C:\projects\HomuraHime-Mods\extracted_assets\StreamingAssets\FMOD\Desktop\ ``` --- ## Step 2: Open Banks in FMOD Studio ### 2.1 Launch FMOD Studio ``` Location: C:\Program Files\FMOD Studio\FMOD Studio.exe ``` ### 2.2 Open Project (or Banks Directly) **Option A:** If you have the original FMOD project (unlikely for commercial game): - File → Open Project → Select `.fprojekt` file **Option B:** Open bank files directly: - File → Open Bank → Select `Master.bank` from the extracted folder - FMOD will automatically load related banks ### 2.3 Bank Organization In FMOD Studio, you'll see: - **Events**: Sound events (grouped by banks: SFX, Ambience, BGM, Voice) - **Audio Tables**: Banks, VCA groups, snapshots - **Mixer**: Master output with routing --- ## Step 3: Voice Limit Improvements ### 3.1 Find Problematic Events Search for events with high polyphony: 1. In FMOD Studio, select **SFX.bank** in the Banks panel 2. Look at event properties in the Inspector 3. Check **Maximum Instances** ( polyphony) ### 3.2 Adjust Voice Aging For events that cause glitches: 1. Right-click event → **Properties** 2. Go to **Voices** tab 3. Settings to adjust: ``` Max Instances: 16 (from default 32) Voice Stealing: Steal Oldest Voice Aging: 1.0 seconds (faster cleanup) ``` ### 3.3 Key Events to Check In `SFX.bank`: - Attack impact sounds (often triggered rapidly) - Footstep/landing sounds (PreLoad banks) - Enemy alert/warning sounds - UI feedback sounds --- ## Step 4: Audio Ducking Improvements ### 4.1 Access Mixer 1. Click **Mixer** tab in FMOD Studio 2. You'll see VCA groups and the Master bus ### 4.2 Configure Ducking Groups Look for: - **Speech** (Voice channel) - **SFX** (Sound effects) - **Music** (BGM) ### 4.3 Adjust Ducking Parameters For the Master or speech bus: 1. Right-click → **Add Effect** → **Duck** 2. Configure: ``` Threshold: -20 dB (triggers at this volume) Rate: 100% (fade speed) Attack: 10 ms (fast attack) Release: 200 ms (slower release) ``` ### 4.4 Create/Modify Snapshots Snapshots control ducking behavior: 1. In the **Audio Tables** panel, select **Snapshots** 2. Find existing battle/start snapshots 3. Modify duck amounts: ``` Music Duck Amount: -12 dB (not too aggressive) SFX Duck Amount: -6 dB ``` --- ## Step 5: Enemy Behavior Indicator Improvements ### 5.1 Locate Enemy Audio Events **In `Ambience.bank`:** - `enemy_idle_loop` - Enemy ambient when not engaged - `enemy_alert` - Enemy noticing player - `enemy_chase` - Enemy pursuing **In `SFX.bank`:** - Attack indicator sounds - Danger/warning cues ### 5.2 Increase Volume on Behavior Sounds 1. Find enemy-related events 2. Select the event → Inspector 3. **Volume** slider: Increase by 3-6 dB ``` Before: 0.0 dB After: +3.0 dB to +6.0 dB ``` ### 5.3 Add Pitch Variation For more distinct enemy states: 1. Select enemy event (e.g., alert) 2. Add **Pitch** automation or randomizer 3. Set variation: ``` Center: 0 semitones Range: ±2 semitones random ``` ### 5.4 Add 3D Positioning For directional audio: 1. Select event → **3D** checkbox 2. Configure: ``` Min Distance: 1.0 m Max Distance: 20.0 m Rolloff: Linear ``` 3. This makes enemy sounds come from their position ### 5.5 Create State Layers For distinct enemy behavior indicators, add parameters: 1. Right-click event → **Add Parameter** 2. Name: `EnemyState` 3. Values: `0=Idle, 1=Alert, 2=Attacking` 4. Add automation for volume/effect per state --- ## Step 6: Reimport Modified Banks ### 6.1 Save Changes 1. In FMOD Studio: **File** → **Save** 2. Banks will auto-update in the project folder ### 6.2 Export Banks 1. **File** → **Export** → **banks** 2. Choose the extracted `Desktop\` folder 3. Confirm overwrite ### 6.3 Verify Export Check that modified `.bank` files have new timestamps. --- ## Step 7: Backup Original Banks **CRITICAL - Before testing:** ``` mkdir "C:\projects\HomuraHime-Mods\backup_banks_original" copy "C:\projects\HomuraHime-Mods\extracted_assets\StreamingAssets\FMOD\Desktop\*.bank" "C:\projects\HomuraHime-Mods\backup_banks_original\" ``` --- ## File Locations Reference ### Game Banks (Read-Only Backup) ``` C:\apps\steam\steamapps\common\Homura Hime\HomuraHime_Data\StreamingAssets\FMOD\Desktop\ ``` ### Extracted for Editing ``` C:\projects\HomuraHime-Mods\extracted_assets\StreamingAssets\FMOD\Desktop\ ``` ### Modified Banks (Copy to Game) ``` C:\projects\HomuraHime-Mods\modified_banks\FMOD\Desktop\ ``` ### Backup Original ``` C:\projects\HomuraHime-Mods\backup_banks_original\ ``` --- ## Banks to Prioritize | Priority | Bank | Reason | |----------|------|--------| | HIGH | `SFX.bank` | Contains attack/impact sounds that glitch | | HIGH | `Ambience.bank` | Enemy behavior indicators | | MEDIUM | `Master.bank` | Contains mixer and routing | | MEDIUM | `Voice.bank` | May need voice limit adjustments | | LOW | `BGM*.bank` | Background music - less critical | --- ## Verification Checklist After modifications: - [ ] Banks export successfully from FMOD Studio - [ ] New bank files are in `modified_banks\` - [ ] Original banks backed up - [ ] Test game loads without FMOD errors - [ ] Audio glitches reduced in combat - [ ] Enemy indicators more audible --- ## Next Steps After completing FMOD modifications: - Phase 4: BepInEx plugin deployment - Phase 5: Testing and iteration - Phase 6: Distribution