Advanced MMR Music Configuration - isghj5/mm-rando GitHub Wiki
Majora's Mask Randomizer's randomized music is fairly configurable, it just doesn't have a good user interface.
Adding and removing available music from the pool of songs is as simple as dropping, or deleting, new music into MMR/Resources/music folder. You do NOT need to modify your SEQS.txt for new music files: MMRS and ZSEQ music files you want to add, those files are automatically detected outside of SEQS.txt.
As of 1.11.0.7 there are more available options, however. MMR will read a custom SEQS.txt file from the Resources/music folder and use that instead of the internal version if it finds it when you randomize a seed.
The SEQS.txt file contains metadata for every song slot the rando modifies, and contains metadata for songs that come with the randomizer. This data is in text format, one piece of data per line, 3-5 lines of text per song/songslot.
link to the latest SEQS.txt file, download this to start: https://raw.githubusercontent.com/ZoeyZolotova/mm-rando/master/MMR.Randomizer/Resources/SEQS.txt (if it shows you the file instead of downloading it, right click the page and "save page as")
Instrument set defines what the song needs to play with, but the slot will use whatever instrument set is required by the replacement song once randomized.
example: MMR's current piratefortress entry
mm-piratefortress
2,0
3
14
The name is "mm-piratefortress" because it's background music in the pirate's fortress. The categories are 0 and 2, being outdoor music and dungeon music. The instrument set is 0x3, the main orchestra set of instruments used by much of MM, and needed for this one song. The song slot 0x14 is where this song exists in the list of songs.
Changing a category of a songslot
Changing the category of a song is easy, just add/remove or categories on the categories line of a songslot entry
example: you want to cave music to be randomized with indoor music instead of dungeon music
mm-caves
2 <--- change this to 3 which is indoor music, or add ",3" (if you want both)
1a
3b
Categories MMR uses:
0 = Field
1 = Town
2 = Dungeon
3 = Indoor
4 = Minigame
5 = Action Cutscenes (Aliens, Sharp)
6 = Calm Cutscenes, Character Themes (Keaton, File Select)
7 = Boss Fight
8 = Item Get, Minigame Win, Soaring
9 = Game Over
10 = Area Clear
16 = Special (Title Screen, Ending)
WARNING: do NOT miscategorize a looping BGM as a fanfare, it will cause doggy race track to soft lock, and several other spots in the game might softlock.
Changing categories of a third party song
zseq files need to have the metadata in the filename itself, it's the list of numbers separated by dashes at the end of the filename.
example:
oos-dancingdragon_24_1-2-3-4-6.zseq
---------------------^ ^ ^ ^ ^
1,2,3,4,6 are the categories of this file, changing the numbers in the filename changes the categories used by MMR.
MMRS files are just zip files, inside of each of them is a categories.txt file that contains a list of categories, simply open the MMRS as a zip file (7z can do this automatically, other software might need you to rename the file first), extract the categories.txt, change categories in the file, and re-inject the next categories.txt to match what you want the song to have.
Removing a songslot from randomization
To stop a songslot from being randomized by rando, simply remove the entry from your SEQS.txt file, leaving no whitespace gap between entries, the parser is handcoded and old and requires entries to be right next to each other.
WARNING: removing the songslot will also stop that music from being re-randomized into the pool, the entry data is used for both.
example: you want to stop Majora's Mask final fight music from being randomized:
find the three boss fight song slot entries and remove them from the file:
mm-mask
7
11
6b
mm-incarnation
7
11
6a
mm-wrath
7
11
69
Randomizing a song slot without keeping the song itself (removing vanilla MM music from the pool)
Removing extra MMR music from the pool of music that can be used is as easy as removing the file, but what about vanilla MM music? Those files exist in the rom you supply and are not in the folder to remove. Instead you must mark the song slot they use as "no-recycle", which keeps the song slot for randomizing but the vanilla music is not recycled into the available song pool.
To do this add "no-recycle" as the last line of data to a song slot. It can only be the last line due to parser design.
NOTE: no-recycle is only for vanilla songs, if you add no-recycle to a non-mm song the randomizer will error. If you don't want a non-vanilla song that comes with MMR to be used, remove the file itself or remove the whole data for that song from the SEQS.txt
Music plando: Forcing a specific song into a specific slot for all seeds
A songslot will only be populated by songs with the same category, with the exception of the luck roll, that puts slightly out of category songs in one slot or another, but only rarely, and music luck roll only happens for categories 0-16. Every songslot in MMR comes with it's own unique category (which is just 100 + the song slot ID) and they are shown in the SEQS.txt
If you set your song to the slot unique category then your song will only go into one slot; the slot you want. You can add a no-recycle to the slot in the SEQS.txt file, that vanilla song is removed from the pool of replacement music. This leaves you with only the one song you want in that slot. You can also add songforce to the filename to force MMR to prioritize the song (moves the song to the front of the list), which encourages it to get placed first in front of other songs using the slot or the vanilla song (with songforce you can skip modifying the SEQS.txt for basic plando.
[Example 1]: you want [SM64 Wingcap ~romani version~] to always play in the [Aliens Theme] slot
change the filename from
sm64-wingcap-romani_24_4.zseq
to
songforce-sm64-wingcap-romani_24_10D.zseq
where the two changes above are adding songforce to the filename and changing the category from 4 (generic minigame) to (0x10D the aliens unique slot category)
[Example 2]: you always want [Rainbow Road] in the [Aliens theme] slot
mm-aliens
5,6,10D <- this is the aliens unique category
16
d
and then change mk64-rr to have the same category:
mk64-rr
10D <- change this to a unique category that hasn't already been set and matches the replacement song
24
For the song to only be randomized into the aliens category.
MMRS files have categories too, the categories are inside of the file. MMRS files are really zip archives that contain all the details of the song, if you open the MMRS as a zip, inside should be a categories.txt file, that file should have 1-10 bytes of the categories, change that file and make sure the MMRS file saved your changes.
Adding more songsequences
There aren't that many sequences not already in rando, but you can add more by looking up their sequence number in the song list, finding their instrument set, and adding them as entries in the SEQS.txt file. Make sure you name them starting with "mm-" as the parser is old and dumb and only checks for songslot and no-recycle if the songslot name starts with those characters.
example: if you want to randomize piano practice, the music Evan the band leader plays in his room
mm-pianopractice
16e
13
6e
Or the sometimes requested: final hours, the song plays as the moon falls on final night:
mm-finalhours
5,7
17
57
I want OOTR style music rando without categories, only BGM and Fanfare distinction
Just change every song categories to 0-1-2-3-4-5-6-7-16 (BGM) or 8-9-10(Fanfare), depending on bgm or fanfare, and MMR should behave like OOTR. You shouldn't need to do it to all the songs only the songslots. You could separate out 4-5-7 as an action/high energy slot to prevent mellow/ambient/quiet music being placed on bosses, and loud/anxiety music being placed in places where nothing is happening.