Dynamic Music and Sounds Wiki
When multiple mods change the same music type, music track, or sound descriptor, Skyrim only keeps the last mod's version. Every other mod's added tracks and sound files are silently thrown away. This plugin fixes that. It finds what was lost and adds it back. Install it, forget about it.
Quick Start: Install with your mod manager, launch the game. That's it. Check Data/SKSE/Plugins/DynamicMusicAndSounds.log if you want to see what it did.
Requirements
- Skyrim SE (1.5.97+), AE (1.6.x), or VR
- SKSE64 (matching your game version)
- Address Library for SKSE Plugins
What Does This Fix?
This plugin handles three types of records that share the same conflict problem:
Music Types (MUSC)
A music type controls which tracks can play in a situation, like exploring, combat, or visiting a town. Mods add new tracks to these lists so their music plays in the right context. When two mods edit the same music type, one mod's tracks get lost.
Music Tracks (MUST)
A music track can be a "palette" that holds multiple sub-tracks organized into layers. When two mods add different sub-tracks to the same palette, only the last mod's additions survive.
Sound Descriptors (SNDR)
A sound descriptor holds the list of audio files that play when a sound event fires. For example, a footstep sound might have 5 different audio files so it doesn't sound identical every time. When a mod adds new sound variants and another mod also edits that descriptor, one set of variants is lost.
The Fix
Dynamic Music and Sounds looks at every mod that touched each record, figures out what each one added or removed, and restores the missing entries at startup. The result is the same as if you had manually built a compatibility patch for every music and sound conflict in your load order.
How It Works
- Runs once when the game starts, before you reach the main menu
- Finds every music type, music track, and sound descriptor that more than one mod tried to change
- Reads each mod's version to see what they added or removed
- Restores missing tracks and sound files so nothing gets lost
- Respects intentional removals. If a mod specifically removed a track, it stays removed.
- Done. You play the game normally.
Features
INI Settings
The config file is at Data/SKSE/Plugins/DynamicMusicAndSounds.ini. If it doesn't exist, it gets created automatically the first time you launch the game.
General
[General] ;Write detailed per-record info to the log file. Useful for troubleshooting. enablelogs = false ;Toggle conflict resolution for each record type independently. mergemusictypes = true mergemusictracks = true mergesounddescriptors = true
Exclusions
[Exclusions] ;Comma-separated list of plugin filenames to skip entirely. ;Example: skipMods = SomePlugin.esp, AnotherMod.esp skipMods = ;Comma-separated list of EditorIDs to skip, per record type. ;Example: skipMusicTypes = MUSExploreCity skipMusicTypes = skipMusicTracks = skipSoundDescriptors =
Settings Reference
enablelogs
Default: false
Logs every record that was checked and every track or sound file that was added or restored. Helpful if you want to see exactly what changed, but makes startup slower. Leave it off unless you're curious or troubleshooting.
mergemusictypes
Default: true
Toggle for music type (MUSC) conflict resolution. These are the records that control which tracks play during exploration, combat, towns, etc.
mergemusictracks
Default: true
Toggle for music track (MUST) conflict resolution. Only palette-type tracks are processed, since they are the only type with mergeable sub-track lists.
mergesounddescriptors
Default: true
Toggle for sound descriptor (SNDR) conflict resolution. Only standard sound definitions are processed, since they are the only type with mergeable sound file lists.
skipMods
Default: (empty)
Comma-separated list of plugin filenames (e.g. SomePlugin.esp). Any mod in this list will be completely ignored. Its additions won't be restored and its removals won't be tracked.
skipMusicTypes / skipMusicTracks / skipSoundDescriptors
Default: (empty)
Comma-separated EditorIDs. Records matching these IDs won't be touched, regardless of how many mods edit them.
xEdit Companion Script
The plugin comes with an xEdit (SSEEdit) script called ST - Dynamic Music and Sounds.pas. It has two modes:
- Info Mode: Scans your load order for music and sound problems. Finds broken references, null entries, duplicate tracks, and empty lists across music types, music tracks, and sound descriptors. Run this to check your load order for issues before playing.
- Patch Mode: Creates a patch ESP that resolves music and sound conflicts the same way the SKSE plugin does at runtime. You can toggle which record types to process (music types, music tracks, sound descriptors) and exclude specific mods via a blacklist file.
Tip: You can use the xEdit script and the SKSE plugin together. The script builds a patch file, and the plugin catches anything the patch missed. They don't conflict.
Compatibility
- Wrye Bash / Mator Smash: Works fine alongside them. They patch things ahead of time, this catches whatever they missed at startup.
- Dynamic Leveled Lists / Dynamic Container Loot / Dynamic Form Lists / Dynamic NPCs: Companion mods. Each one handles a different record type. They do not interfere with each other.
- Load order: Doesn't matter. Safe with any load order. It reads your mods, it doesn't change them on disk.
- Other SKSE plugins: No conflicts. This plugin doesn't hook into any game functions.
Credits
- CommonLibSSE-NG for making SKSE plugins possible across SE, AE, and VR
- SKSE Team for the Script Extender that none of this works without
- powerof3 for CLib utility library
- herumi for xbyak (JIT assembler)
- brofield for SimpleINI (config file parsing)
Link to This Page
Copy a link to share this wiki from your Nexus description or documentation:
