This mod allows you to add custom songs to the stages, menus, and victory themes in the game!
- Get the BepInEx zip pinned in the NASB discord #modding channel. It has BepInEx 5 and the unstripped Unity libraries.
- Extract the BepInEx zip into your game's install directory
- Download the latest release zip such as
NASB2CustomMusicMod-9.9.9.zip
- Extract this zip into your BepInEx folder, and the mod should be installed!
Your BepInEx folder should now have a CustomSongs
folder, and you should have the plugins in your plugins
folder
BepInEx
↳ CustomSongs
↳ plugins
↳ Steven-Slime_Modding_Utilities
NASB2CustomMusicMod.dll
...
...
If you're updating from a previous version, just extract the latest release zip into your BepInEx
folder like before, and let it overwrite any files. Any custom songs should be preserved.
For basic usage see the simple format shown below.
For more advanced usage, see Song Packs.
BepInEx
↳ CustomSongs
↳ Menus
↳ MainMenu
↳ OnlineMenu
...
↳ Stages
↳ Angry Beavers Dam
↳ Bun Wrestling Ring
...
↳ Victory Themes
↳ Aang
↳ AngryBeavers
...
Place .wav
, .ogg
, or .mp3
files into the folder corresponding to the stage or menu you want to change.
For example, if you want to use a different song for the Jellyfish Fields stage, place the audio file in BepInEx\CustomSongs\Stages\Jellyfish Fields
If multiple audio files are in the same folder, one is randomly selected each time that stage / menu / victory theme is loaded!
To define a loop start and end point, create a JSON file in the same folder as your audio file, and give it the same name as your audio file.
A JSON file is just a regular text file, but instead of .txt
it is .json
You may need to turn on file extensions on Windows to be able to see and edit the .json
extension.
File structure example
Stages
↳ Jellyfish Fields
↳ Song1.wav
↳ Song1.json
JSON file contents
Samples are more precise than seconds, but the NASB1 version of this mod used seconds, so this mod allows both for backwards compatibility.
Using samples
{
"loopPoints": { "start": 199665, "end": 21977555 }
}
When 21,977,555
samples have elapsed in the song, it will loop back to 199,665
samples!
Using Seconds
{
"loopStartPointSec": "4.462",
"loopEndPointSec": "49.803"
}
When 49.803
seconds have elapsed in the song, it will loop back to 4.462
seconds!
To find loop points in your song, you can use some free audio software like Audacity.
I would recommend using a DAW with more precise BPM / looping support, such as Reaper, Ableton Live, FL Studio, etc.
If both samples and seconds are present in a file, samples take priority because they are more precise.
A Song Pack is a more efficient way to reuse songs across multiple stages / menus / victory themes!
Song Packs should be placed in the folder BepInEx/CustomSongs/_Song Packs/
Example Song Pack file structure:
↳ SongPack1
↳ _Music Bank
↳ song1.mp3
↳ different-song.ogg
↳ looped-song.mp3
↳ looped-song.json
↳ 4th-song.ogg
...
↳ Menus
↳ MainMenu.txt
↳ OnlineMenu.txt
...
↳ Stages
↳ Angry Beavers Dam.txt
↳ Bun Wrestling Ring.txt
...
↳ Victory Themes
↳ Aang.txt
↳ AngryBeavers.txt
...
- Navigate into the
BepInEx/CustomSongs/_Song Packs/
folder. - Duplicate the
_Template
folder, and rename it. Something likeAbsolute Jammers
. - Place all of the songs you want to use in this song pack into the
Absolute Jammers/_Music Bank
folder. - Open the text file for the menu / stage / victory theme you want to add music to. For example, the main menu is
Absolute Jammers/Menus/MainMenu.txt
- In this text file, enter a list of song file names from the
_Music Bank
folder that you want to play on this menu / stage / victory theme. The order doesn't matter, but you must put each song on it's own line!
Example MainMenu.txt
:
song1.mp3
looped-song.mp3
different-song.ogg
You can then reuse these songs in other menus / stages / victory themes!
Example Jellyfish Fields.txt
song1.mp3
looped-song.mp3
4th-song.ogg
That's it! When you launch the game it should load all song packs and any songs placed in the regular folders.
You can check the log file for errors, BepInEx/LogOutput.log
. If you have issues loading songs, check your spelling! Files are case sensitive!
Note: If you want the songs to loop at specific points, you will need to place corresponding json files in the _Music Bank
folder as well. See Loop Points.
I've had multiple people unable to load certain mp3 files.
If you've downloaded a file from a youtube downloader, such as ytmp3.cc
, your file might actually be an .m4a
disguised as a .mp3
Unity cannot load these (it seems).
Use a different converter, or convert to .ogg
instead! Thanks.
The mod will randomly select a song to play each time that stage / menu / victory is loaded.
Yes. You must enable the option in the config file. The config file is generated the first time you run the mod and is in BepInEx/config/megalon.nasb2_custom_music_mod.cfg
Make sure you have all of the required files from the installation section
But to clarify, you need:
- BepInEx 5
- Unstripped core Unity library (explained below)
- SlimeModdingUtilities
Unstripped Core Library:
NASB2 ships without all of the dlls that typically ship with Unity games. For BepInEx to work, you need the "unstripped core Unity library". This can be found included in the BepInEx version in the NASB discord as unstripped_corlib
.
If BepInEx doesn't load, check that your doorstop_config.ini
points to the unstripped core library folder. Something like this:
dllSearchPathOverride=unstripped_corlib
Clone the project, then create a file in the root of the project directory named:
NickCustomMusicMod.csproj.user
Here you need to set the GameDir
property to match your install directory.
Example:
<?xml version="1.0" encoding="utf-8"?>
<Project>
<PropertyGroup>
<GameDir>D:\SteamLibrary\steamapps\common\Nickelodeon All-Star Brawl 2</GameDir>
</PropertyGroup>
</Project>
Now when you build the mod, it should resolve your references automatically, and the build event will copy the plugin into your BepInEx\plugins
folder!