A plugin for adding custom songs into Beat Saber.
This mod works on both the Steam and Oculus Store versions.
-
Download the latest release from here: https://github.com/xyonico/BeatSaberSongLoader/releases
-
Extract the .zip file into the
Oculus Apps\Software\hyperbolic-magnetism-beat-saber
for Oculus Home ORsteamapps\common\Beat Saber
for Steam. (The one with Beat Saber.exe)The Beat Saber folder should look something like this:
Beat Saber_Data
CustomSongs
IPA
Plugins
Beat Saber (Patch & Launch)
Beat Saber.exe
IPA.exe
Mono.Cecil.dll
UnityPlayer.dll
-
Done!
- Launch Beat Saber through the platform you purchased it on.
- Go to 'Solo' -> 'Standard' and your custom song will be available to play at the bottom of the list.
The following files must be placed within their own folder inside the "CustomSongs" folder.
Required files:
1. cover.jpg (Size 256x256)
-This is the picture shown next to song in the selection screen.
-The name can be whatever you want, make sure its the same as the one found in info.json
-Only supported image types are jpg and png
2. song.wav / song.ogg
-This is your song you would like to load
-Name must be the same as in info.json
-Only supported audio types are wav and ogg
3. easy.json / normal.json / hard.json / expert.json
-This is the note chart for each difficulty
-Names must match the "jsonPath" in info.json
-Use a Beat Saber editor to make your own note chart for the song
4. info.json
-Contains the info for the song
The following is a template for you to use:
{
"songName":"YourSongName",
"songSubName":"ft. Name",
"songAuthorName":"AuthorName",
"beatsPerMinute":179.0,
"previewStartTime":12.0,
"previewDuration":10.0,
"audioPath":"YourSong.ogg",
"coverImagePath":"cover.jpg",
"environmentName":"DefaultEnvironment",
"songTimeOffset":-2,
"shuffle":1,
"shufflePeriod":0.2,
"oneSaber":true,
"difficultyLevels": [
{ "difficulty":"Expert", "difficultyRank":4, "jsonPath":"expert.json" },
{ "difficulty":"Easy", "difficultyRank":0, "jsonPath":"easy.json" }
]
}
"songName" - Name of your song
"songSubName" - Text rendered in smaller letters next to song name. (ft. Artist)
"beatsPerMinute" - BPM of the song you are using
"previewStartTime" - How many seconds into the song the preview should start
"previewDuration" - Time in seconds the song will be previewed in selection screen
"coverImagePath" - Cover image name
"environmentName" - Game environment to be used
"songTimeOffset" - Time in seconds of how early a song should start. Negative numbers for starting the song later
"shuffle" - Time in number of beats how much a note should shift
"shufflePeriod" - Time in number of beats how often a note should shift. Don't ask me why this is a feature, I don't know
"oneSaber" - true or false if it should appear in the one saber list
All possible environmentNames:
-DefaultEnvironment
-BigMirrorEnvironment
-TriangleEnvironment
-NiceEnvironment
"difficultyLevels": [
{
"difficulty": This can only be set to Easy, Normal, Hard, Expert or ExpertPlus,
"difficultyRank": Currently unused whole number for ranking difficulty,
"jsonPath": The name of the json file for this specific difficulty
}
]
- Press Ctrl+R when in the main menu to do a full refresh. (This means removing deleted songs and updating existing songs)
- Press R when in main menu to do a quick refresh (This will only add new songs in the CustomSongs folder)