A plugin for adding custom songs into Beat Saber.
This mod works on both the Steam and Oculus Store versions.
Extract the .zip file into the Oculus Apps\Software\hyperbolic-magnetism-beat-saber
for Oculus Home OR steamapps\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
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
}
]