Skip to content
cabalex edited this page Jan 13, 2023 · 7 revisions

Welcome to the fnf-song-converter wiki!

Here, you'll find relatively in-depth information about how to mod Cabalex's Scratch remake of Friday Night Funkin', and any other remixes that derive from it.

If you don't have the project already, you can remix the original project or download the .sb3 from the website.

Custom Stages (coming soon)


Errors

"No beatmap loaded"

This means the engine didn't detect any notes in your song. This is usually because:

  • Your song list is completely blank: You probably didn't load your beatmap in. Try again from step 3.
  • You didn't configure the song properly: Try redoing Step 4 and try again. Ensure the loadSong block is taking your own song list.
  • There just aren't any notes in your song: the game is pretty boring without notes, after all.

If you're still stuck, please try asking on my profile. If your downloaded TXT file from the converter is completely empty (or you believe it is an issue with the converter), please open an issue.

"Beatmap is invalid"

This means the engine couldn't parse your beatmap properly. This usually means you didn't convert it to the format the Scratch project supports, or you put invalid data into the list.

"2P not set"

This means you didn't set 2P properly for your song. Ensure you did Step 4 properly and try again.

FAQ

Why won't you respond to my issue/help request/etc?

  • Unfortunately, I've pretty much moved on from this project at this point, so help from me will be limited. However, don't be afraid to ask the community for help! They're actually more experienced with my engine than I am (lol).

I will close any issues on this repository not related to the converter, so please do not ask for help here (you won't get it).

Custom note types (e.g. Tricky mod?)

  • I'm not implementing these, nor will I show you how to do it- it's outside the scope of the project due to how inconsistent extra note types can be. You'll have to make them yourself or get it from a project that already has it.

What about hurt notes?

  • See above (it's not built into the original game, mods handle it inconsistently). If you're building these into your project (or using someone that has already built this feature in), make sure you set the "Extended note handling" to "allow all notes" to prevent truncation.

What is the format of the converted Scratch beatmaps?

  • ? = notes ?_<timing>_<note type 0-7>_<length> (Note that the sides are constant, 0-3 will always go to one side and 4-7 the other, regardless of mustHitSection)
  • # = sections #<mustHitSection true/false>_<timing>

What do the "Extended Note Handling" options mean?

The converter offers plenty of ways to convert FNF charts into Scratch compatible formats. Due to the unstandardized nature of FNF charts, there are many different methods to convert your song.

Some terminology:

  • "Modified notes" are notes that contain more than the usual 3 fields of data (note timing, type, length). Usually, mods that make modified notes such as hurt notes will use this.
  • "Outside 0-7 notes" are notes that are not the traditional 1P and 2P notes (left, right, up, down on both). Mods that have extra keys to press such as the Shaggy mod will use this.
supported natively by the Scratch project? name description
Ignore unexpected notes (default) Notes that are not vanilla (outside 0-7 or modified notes) will be ignored completely, and won't show up in the Scratch beatmap.
Limit to default range (0-7) Limits the notes to 0-7. Modded notes will be converted to be hittable notes by looping back to the vanilla range (using the modulo, or %, operator). This may not be what you want in all cases (e.g. Shaggy mod, where the "8th" middle note will just be the left arrow). This ignores modified notes (e.g. hurt notes).
note types 0-7 only Allow all notes, truncate extra data (EXPERIMENTAL) Allows all notes as they are. If there are modified notes, the converter will truncate them so they can be used in the base Scratch project (limiting data to timing, type, length).
note types 0-7 only Allow all notes without modifications, truncate extra data (EXPERIMENTAL) Allows all notes without adapting their positions to 1P or 2P, truncating data to [timing, type, length] so they work with the base Scratch project. Generally, you would want to check this if the mod does not add a multiple of 8 notes (4 for 1P, 4 for 2P).
Allow all notes (EXPERIMENTAL), include extra data Allows all notes as they are. This includes extra note data, meaning that the Scratch project will not handle these notes by itself. You must implement it manually, or use a remix that has this built in. Modified note data will be placed at the end, separated by underscores.
Allow all notes without modifications (EXPERIMENTAL) See the "without modifications" option above- it's the same, but this one includes extra data.

How can I get the assets for my character from the game files? I'm making a mod.

  • You can use my XML Unpacker. You'll need Python with os, PIL, BeautifulSoup, lxml, and re installed. Install these with pip after installing Python with pip install os pillow bs4 lxml re (or you can use Google Colab).

Need help and can't find a clear answer in any guide? Ask on my profile. Found a bug with the converter? Report it!