SoundpackLoader
Loads custom soundpacks
Screenshots 1 screenshots
About this mod Author’s original text
SoundpackLoader
An early WIP mod for loading custom soundpacks into the game.
For users
Download SoundpackLoader from here
Upon launching the game, a CustomSoundpacks folder should appear in the BepInEx folder. If it didn't, make the folder yourself. Put your soundpacks there and relaunch.
The current interface is a bit rough -- on the "Choose Yer Tromboner" screen, the selected soundpack is written at the top of the screen. Cycle through soundpacks using PageUp and PageDown. You can also cycle through soundpacks while playing a song. The keys can be changed in the config text file in TromboneChamp\BepInEx\config\org.crispykevin.soundpackloader.cfg.
Changelog
v0.2.6
- Don't delete trombone sound if no CustomSoundpacks
- Actually create the CustomSoundpacks folder
v0.2.5
- Serialize json async
v0.2.4
- Load into the game faster
- Default trombone sound if you skip char select
v0.2.3
- Fix for mac
v0.2.2
- Fix so trombone sound can happen if you skip the character select screen
Soundpack structure
Making a soundpack is simple. It's just fifteen audio files of the notes of the C major scale, from C1 to C3. Additionally, some information about the pack is given in a special text format (JSON).
Currently, not much is in the.json file:
| Attribute | Description | Required? |
| ------------- | ------------- | ---------- |
| SoundpackFormatRevision | Indicates which version of the soundpack specification this soundpack was designed for. Right now, always set this to 1. | true |
| Name | Name of the soundpack | true |
| Namespace | Another name/identifier used in case there's two soundpacks with the same name. | true |
| VolumeModifier | Multiplier to adjust the trombone volume while using the soundpack (0.0-1.0) | false, default = 1.0 |
{
"SoundpackFormatRevision": 1,
"Name": "cello-lower",
"Namespace": "crispykevin",
"VolumeModifier": 1.0
}
Other notes:
- A soundpack must have fifteen audio files, each matching "{noteName}." (file glob, not regex) (e.g. "my_cool_C2.wav" is acceptable)
- Currently,.ogg and.wav audio files are supported.
For modders
API Overview
SoundpackLoader provides an API to conveniently control soundpacks in-game. Almost everything you need will be in the SoundpackManager class.
- Get a Soundpack instance using SoundpackManager.FindPack, GetAllPacks, GetVanillaPacks, and GetCustomPacks.
- Inside a song, use SoundpackManager.ChangePack(GameController, Soundpack) to change the currently-selected soundpack and update the sounds used by the GameController instance.
- To change the currently-selected soundpack without updating the sounds used by a GameController instance, use the SoundpackManager.CurrentPack setter property.
- To add/remove/load songs dynamically (besides the ones in CustomSoundpacks folder), use SoundpackManager.AddPack, RemovePack, and LoadPack.
- To do something whenever the soundpack changes, subscribe to SoundpackManager.SoundpackChanged. The event args provide the old and new packs.
Setup
Add a reference to SoundpackLoader's DLL in your project's DLL. To do this, add another `` in your.csproj file:
$(GameFolder)\BepInEx\plugins\SoundpackLoader.dll
Code examples
Change the soundpack before every note (see
[HarmonyPatch(typeof(GameController))]
class GameControllerPatch
{
[HarmonyPrefix]
[HarmonyPatch(nameof(GameController.playNote))]
static void BeforeNote(GameController __instance)
{
if (Plugin.Enabled.Value)
{
var packs = Plugin.IncludeVanilla.Value? SoundpackManager.GetAllPacks(): SoundpackManager.GetCustomPacks();
SoundpackManager.ChangePack(__instance, packs.GetRandom());
}
}
}
Shuffle the notes of each soundpack (see NoteShuffle (TODO upload to github)):
public class Plugin: BaseUnityPlugin {...
private void Awake() {...
SoundpackManager.SoundpackChanged += OnSoundpackChanged;
}
private void OnSoundpackChanged(object sender, SoundpackChangedEventArgs e)
{
if (backup!= null)
{
for (int i = 0; i
Install & use Install: follow the bundled instructions
- Unzip the archive from playbuff and read the bundled readme / instructions first.
- Most mods rely on the game's mod loader — the usual route is a community mod manager (such as r2modman): pick this game, install, and it handles the loader and dependencies.
- For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
- Launch the game to confirm it loaded; mods with listed dependencies need those installed as well.
Install locations vary a lot between mods — the bundled readme is the most reliable guide.
Install these first, or the mod will not work: