Jump to content

Better Music System - MUSE Version


Recommended Posts

Better Music System - MUSE Version

View File
Better Music System - MUSE Version

This mod consists of custom MUSE config files that (mostly) implement the functionality of BTB's version of Better Music System.
Important Note: Installing this archive by itself will do nothing, because it does not contain any music tracks. You'll need to fill the mod's empty music directories (in music\MS) with tracks in order to hear custom music in-game.
Below you'll find instructions for distributing the music from BTB's soundtrack to the various music directories, if you want to duplicate BTB's plugin as closely as possible. But one of the benefits of MUSE is that it's supremely customizable. You can deviate from those instructions, or use completely different music from any other source.
This mod primarily consists of a bunch of custom MUSE config files (the files in MWSE\config\MS). These config files mostly replicate the functionality of BTB's Better Music System plugin, with a few adjustments. The following custom music is implemented:
Regions: The region (MS_r_) files allow for different music in the game's various regions. Like BTB's plugin, there are three different region categories that can have different music: Red Mountain, Solstheim, and everywhere else. There's also a file for Firemoth Region, so you can have custom music there if you're using Siege at Firemoth.
Towns: The custom town music is implemented by the cell (MS_c_) files. There's separate music for Vivec, Ebonheart, Pelagiad, Molag Mar, Ghostgate and Mournhold.
There's also music for Hlaalu Towns (Balmora, Caldera, Suran), Redoran towns (Ald-ruhn, Gnisis, Maar Gan), Telvanni towns (Sadrith Mora, Tel Aruhn, Tel Branora, Tel Fyr, Tel Mora, Tel Vos, Vos), fishing villages (Seyda Neen, Hla Oad, Gnaar Mok, Ald Velothi, Khuul), Nordic villages (Dagon Fel, Skaal Village, Thirsk, Raven Rock), and Ashlander camps.
Dungeons: Dungeon music is implemented partly by the tileset (MS_t_) files and partly by the cell files. The following dungeon types can have their own custom music: caves, Daedric shrines, Dwemer ruins, Dunmer strongholds, tombs, Solstheim ice caves, barrows, mines, grottoes, Velothi towers, underworks, Sixth House bases, shipwrecks, and Old Mournhold.
You can also have unique music for Sixth House citadels inside the Ghostfence, Dagoth Ur, the Clockwork City (with the Dome of Sotha Sil being separate), Castle Karstaag, Mortrag Glacier (with the maze cells being separate), and the Cavern of the Incarnate. There's also a directory for Firemoth.
In addition you can put music in the Dungeon General directory for any dungeons (really only mod-added ones) not covered.
Other cell types: Many other types of cells can have separate custom music (implemented mostly by cell files, with one tileset file thrown in). These include Imperial forts, Fighters Guilds, Mages Guilds, Morag Tong Guildhalls, temples (with the temple in Mournhold being separate), taverns/inns, smithys, magic-type shops, and other shops.
The Royal Palace and Museum of Artifacts in Mournhold each have their own separate music, and a number of isolated farmhouses and shacks also have their own music category. Even the Imperial Prison Ship can have separate music (though you might want to just put the main Morrowind theme in there).
Battle music: The battle music categories, implemented by the enemy (MS_e_) files, are similar to the implementation in BTB's plugin, with a few additional high-tier enemies added to the "sub-boss" category. However, battle music in this mod is more customizeable.
Dagoth Ur, Almalexia, Hircine and Vivec each have their own boss music.
In addition, there are separate music directories for: Ash Vampires, Dagoth Gares, Divayth Fyr, Helseth, Umbra, the Imperfect, Karstaag, the Udyrfrykte, Gedna Relvel, the Hands of Almalexia, the Grandmaster Writ targets, faction bosses (like Gothren, Eno Hlaalu, Bolvyn Venim, and more), the Black Dart Gang, Daedra bosses, Dark Brotherhood bosses, Goblin bosses, undead bosses, vampire bosses (including the heads of the clans), and werewolves.
Even the ghosts of the failed incarnates in the Cavern of the Incarnate get their own battle music, if you're crazy enough to fight them. There's also a directory for other sub-boss enemies (such as Gaenor, Karrod, Falx Carius, the Dreugh Warlord, and more). Finally, Grurn (from Siege at Firemoth) also has his own music.
Beyond the above high-tier enemies with boss or sub-boss music, every creature and NPC in the game is divided into three tiers based on their health, like in BTB's plugin. There's separate music for enemies with 200+ health, those with 50-199, and those below 50 health.

MUSE Config Details

For those seeking to further customize my config files (or to start from scratch with the files provided by MUSE), I've made some observations regarding the functionality of MUSE config files that might be useful. I'm placing this in a spoiler tag because it's quite long.


The general priority of music with MUSE is as follows:

1. Custom battle music. If you're in battle, and combined enemy health meets or exceeds the current threshold, and at least one enemy you're fighting is listed in one of the enemy override (MS_e_) files, custom battle music will play. (Note that, for all of MUSE's custom music types, if a music directory is empty or missing, it will be skipped and the mod will continue looking for music to play.)

In the enemy config files, the "Folder" line is a subdirectory in music\MS\combat where the custom music for these enemies can be found. Note that, for all of these override file types, you can use subdirectories. For example, if you put "Bosses/Dagoth Ur" (note the forward slash, not a backslash) in the Folder line, that will point to the music\MS\combat\Bosses\Dagoth Ur directory for custom music.

The "instant", "boss" and "tresholdMod" lines aren't used for anything, but don't delete the tresholdMod line, because the mod expects it to be there and might throw a fit otherwise.

The "enemyNames" section contains the names of all enemies (creatures and/or NPCs, and you can have both in the same override file) which this file applies to. The names list should look like this:

"name 1",
"name 2",
"name 3"

with a comma after every line except the last. Any errors in formatting, no matter how small, will cause the mod to mess itself.

The enemy name must be the name (not the editor ID) of the creature/NPC. This means that it's not possible to distinguish between different creatures with the same name. It also means that if you use a mod like No Disease Labels which changes the names of creatures/NPCs, that will have implications for battle music.

In addition, the name listed must be the full name of the creature/NPC. The mod doesn't do partial string matching here. This means that, for example, the default "Dagoth" enemy config file doesn't work, since there's no enemy with that exact name. However, the enemy names are not case-sensitive, so capitalization doesn't matter.

In the unlikely event the creature/NPC has the double quote character in its name (the only one in the vanilla game is Edd "Fast Eddie" Theman), you'll need to escape the quotes with a backslash, like "Edd \"Fast Eddie\" Theman".

If you're fighting multiple enemies that are found in different enemy config files, the file with the highest "priority" wins, so it's useful to give bosses or higher-tier enemies higher priorities.

The fact that each creature/NPC must be specifically listed by name means that implementing general combat music that plays for everything is challenging, because every creature/NPC in the game must be listed.

2. Vanilla battle music. If you're in battle, and enemy health at least meets the threshold, but none of the enemies you're fighting is listed in the enemy override files, vanilla battle music will play.

3. Air/underwater music. The highest out-of-battle priority is air/underwater music, assuming the Air and Underwater directories have music in them. (Obviously, you can't meet both conditions at once.) Underwater music works anywhere, but air music does not work in interiors, only exteriors (assuming you fixed the code to make it work at all). Underwater music plays when you're more than just a tiny bit underwater. Air music requires you be at least 5000 Morrowind distance units above the ground, which is pretty high.

4. Cell music. Next up is the music specified in the cell override (MS_c_) files. If the cell you're in is in one of the cell override files, custom cell music will play.

The "Folder" line is a subdirectory in music\MS\cell. The "queued" line determines whether the music will wait for the previous track to finish playing or start immediately. I find it's generally better for this to be false.

"cellNamePart" is the list of cell names. Unlike enemies, this can be a part of the cell name instead of the full name. For example, "Vivec" will include any cell containing that string. It's also not case-sensitive.

Being able to list partial cell names like this is very convenient, but it can cause problems. For example, I have a cell override file for Velothi towers, listing the names of all the Velothi towers in the game. One of these towers is called "Mawia", so it's on the list. This includes the desired tower, but it also includes any other cell containing that string, such as the Daedric ruin "Ashalmawia", which should have different music.

There are two ways of addressing this: either use cell exclusions, or have multiple cell config files with different priorities.

In this case, I just put "Ashalmawia" in the "cellNameExclude" list (which can also have partial names). One thing to keep in mind with the exclusion list: If the highest priority cell override file a cell is found in contains that cell in the exclusion list, it doesn't just skip that file. It skips all the cell overrides, which means this particular cell will have no custom cell music at all.

In this particular case, this is okay, since Ashalmawia is covered by my Daedric tileset override. But in some cases, this will not be desirable.

For example, I have a Redoran cell override file including all the Redoran towns, including Gnisis. But one cell in Gnisis, "Gnisis, Arvs-Drelen", is a Velothi tower which should play the Velothi tower music. I can't just exclude Arvs-Drelen, because I need to use it in another cell override. This means I need to make sure my Velothi tower override file has a higher priority than my Redoran file.

But wait, there's more. Another one of the Velothi towers is called "Shara", and there are a number of other cells in the game that contain that string. The Sixth House base Sharapli is an example, so my Sixth House cell override has to have a higher priority than the Velothi tower one. (I can't just exclude it and use tileset overrides, because there is no common tileset for Sixth House bases.)

One other cell that has "shara" in it is "Gnisis, Shishara Hut". The Velothi tower file has to be higher priority than Gnisis, because of Arvs-Drelen, which means I need yet another file at a yet higher priority, containing "Shishara Hut" (and a few others, such as "Abelmawia Hut") and pointing to the Redoran music folder.

In other words, if you're using cell overrides, you'll need to be careful about overlapping cell names, and arrange the priorities of your cell override files correctly.

Another thing to be mindful of: If you put "Tureynulal" in a cell override, for example, that will include the interior cells of that citadel, but it will also include the exterior cell "Tureynulal", which might not be what you want. If you want to only include the interior cells, you can list it as "Tureynulal,", with a comma inside the quotes, which will cover the interior cells but not the exterior one.

Also, don't include names like "Bitter Coast Region" in the cell overrides. Those cells don't actually have names. Use the region overrides for that instead.

5. Tileset music. If the cell you're in is not found in any of the cell override files (or is first found in an exclusion list in those files), the mod will next check the tileset (MS_t_) files. Note that tileset files only apply to interior cells; tileset music will never play in exteriors.

These files contain a list of editor IDs for static objects, the kind of things the game uses for rooms and walls and corridors and the like. The "Folder" is a subdirectory of music\MS\interior. "tilesetPart" contains the list of static editor IDs, which can be partial IDs (for example "in_pycave" covers a great many statics used in a certain type of cave). These partial IDs are case-sensitive, so they must be capitalized exactly like they are in the Construction Set (for example, "BM_IC" for Solstheim ice caves).

The mod gets a list of all the statics in your current cell, and compares it to the static lists in all the tileset override files. Generally, whichever file has the highest static count in your cell will win. For example, if the cell you're in has 37 statics that match the list in the caves tileset file, and 25 statics that match the list in the Dwemer file, the caves file will win.

However, this is modified by the priority, which works differently than it does for cell and enemy files. For each matching static found, the priority value is added to that tileset type's total. To continue the example above, if the caves file has a priority of 0, and the Dwemer file has a priority of 1, the caves total will be 37, but the Dwemer total will now be 50, since an extra 1 point is added for each Dwemer static (i.e. Dwemer statics count double). This means the Dwemer file will now win. A priority of 2 for the Dwemer tileset file would result in a Dwemer count of 75 for this cell, and so on.

There's one more line in the tileset files, the "requireHostiles" line. If true, this means that there must be hostile NPCs or creatures in the cell, otherwise this tileset file will not be checked at all. The default tombs tileset file requires hostiles, because otherwise it would apply to temples and many Vivec cells, among others. In my case, all those other cells are covered by cell overrides, so I can change requireHostiles to false to include any cells that don't contain hostiles.

Unfortunately, there's no way to limit the tileset override to only cells that do not contain hostiles. For example, I have an Imperial fort tileset override, which should really only apply to friendly locations, but I can't actually limit it to friendly locations. My solution is to give all my other tileset override files (which are mostly for dungeons) a priority of 1, while my Imperial fort tileset override has a priority of 0. This means that, for example, Tel Vos, Dungeon will use the cave tileset music rather than the Imperial fort music (this particular cell is excluded from my Telvanni towns cell override).

6. General dungeon music. If none of the tileset files apply, the mod will play general dungeon music (from the music\MS\General\Dungeon General directory), but only in an interior cell, and only if that cell contains hostiles (and only if there's music in the dungeon directory, of course). This covers dungeons that don't contain any statics matching your tileset overrides and aren't on any of your cell overrides.

This can result in anomalies. For example, if not covered by any cell or tileset overrides, the cell "Indarys Manor" will play dungeon music, because there's a hostile NPC inside. If you're Redoran, that hostile NPC is disabled, but he's still technically there, so dungeon music will still play in your manor unless you include that cell in a cell override (or tileset override).

7. Region music. If the mod hasn't found music to play yet, it will next check the region override (MS_r_) files. The "Folder" is a subdirectory of music\MS\region.

Region music will only play in exterior cells. Interior cells don't have a region. (Note that the Mournhold "exterior" cells are technically interior cells. While these cells "behave" as exterior cells for certain purposes, and do have a region, region music still won't play in them. So don't include "Mournhold Region" in the region files. Use cell overrides for Mournhold instead.)

"regionName" includes the list of regions covered by this file. (You don't have to have one music directory per region; you can include multiple regions in a single file.) The name of the region must be listed, not its editor ID. In most cases, the name and ID are the same, but not always. (For example, Sheogorad's ID is "Sheogorad" while its name is "Sheogorad Region".)

The full name of each region must be listed - no partial string matching here. Any mod-added regions (like those from Tamriel Rebuilt) must be listed specifically in order to have region music. The region list is also case-sensitive, so must be capitalized as in the Construction Set.

The default region config files that come with MUSE are inadequate (and in the case of Solstheim incorrect in a couple places), so you'll probably want to create your own. (I've done that for you with this mod.)

There's a setting in the MCM that affects region music. By default, when you enter a new region, the current track will finish playing before the new region music plays. You can change this by turning off region music queueing in the MCM. This will cause the new region music to start immediately. I generally prefer this, though occasionally it will switch back and forth between cell and region music, such as when you're traveling right on the border of a town cell.

There's one other type of override files: general override (MS_o_) files. These files only apply to regions, and adjust how music is handled for listed regions. They include a list of regions like the regular region overrides, though they don't have to match up with a specific region override file.

These files allow you to specify different directories for air, underwater, dungeon and combat music within the listed regions. So you can, for example, have different dungeon music in different regions. You can also disable dungeon and tileset music, as well as combat music, when you're in the listed regions. However, in my experience disabling combat music in a region is buggy, and I don't recommend it.

8. Vanilla explore music. If none of the above apply, vanilla explore music will play, so you won't be without music entirely.

Version History
Version 1.0 - 2020-08-07
   - Initial release.
Feel free to contact me on the Nexus or Moddinghall with any comments or suggestions. You can also find me on Discord as Necrolesian#9692.


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...