Skip to content

Making and Importing New Songs

cabalex edited this page Sep 12, 2021 · 5 revisions

Step 1 | Making the actual beatmap

If you are importing a beatmap from somewhere else and already have the JSON file, skip this step.

The Scratch project doesn't really have a clean way of making songs [yet], and the lists are a bit tedious to work with! Don't worry, it's not as bad as it seems. The easiest way to create song maps is through the official Friday Night Funkin' song editor, built into the game.

Head to the official game and load it up. Go to Free Play mode and enter any song you prefer.

Once you're in the song, hit 7 on your keyboard. Bam! It's a song editor!

Now there's a lot of stuff in here, and I wouldn't do it justice by explaining everything about it. But here's a good guide on how to get started with it.

When you're done, hit "Save" in the Song tab. It should download a JSON file, like this.

Now, what do we do with this JSON? Well...

Step 2 | Converting your song map

Visit the converter again. You'll see a dropdown next to the upload button for "expanded note handling":

  • If you're converting a normal song beatmap, ignore the dropdown- it doesn't matter.
  • If you're converting a mod beatmap that uses notes outside of the normal range (e.g. Tricky Mod's halo notes), you have three options:
    • Limit to default range (0-7) - Limits the notes to 0-7. This means that unexpected notes will be converted to be hittable notes by looping back to the vanilla range. 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).
    • Ignore unexpected notes - Notes outside of the vanilla range (0-7) will be ignored completely, and won't show up in the Scratch beatmap.
    • Allow all notes (EXPERIMENTAL) - Allows all notes as they are. Due to differences between how mods handle notes outside the vanilla range, the Scratch project will not handle these notes by itself! You must implement it manually, or use a remix that has this built in.
    • Allow all notes without modifications (EXPERIMENTAL) - Allows all notes without adapting their positions to 1P or 2P. Generally, you would want to check this if the mod does not add a multiple of 8 notes (4 for 1P, 4 for 2P).

Click "Upload your file...". Select your beatmap JSON. If everything went smoothly, it should look something like this:

Click "Download". Take note of the BPM! It'll be important later.

Now, you'll have a text file downloaded. Don't worry, we're like halfway there!

Step 3 | Importing your song map

Go to your remixed version of the Friday Night Funkin' Scratch project. Scroll down to variables and click "Make a List". You guessed it, this'll be where your song beatmap will be imported!

Enter a name, make sure it's "For all sprites", and click OK.

Here's the interesting part. Right click on your list in the stage and hit "Import". Then, select the text file you got from my website.

If everything worked out, you should have a respectable looking beatmap in the game! Good job.

Step 4 | Configuring the rest

Show the "_songlist" list, and then add your song name to it. Your song must be all lowercase and consist of letters/numbers/spaces only! It also must be different from the other songs in the list, or else you'll have problems. Other characters won't show up.

If you hit play, it'll show up in the menu! It's like a real song!

Now, the... finnicky part. Go to the "songHandler" sprite, and scroll all the way to the bottom-left. You should be looking at a super long script with a lot of "if currentSongName = ..." blocks. Copy the below script, and change them to your specific song:

  • song name - what you called your song in the _songlist.
  • song bpm - the BPM of your song, shown in the converter (I said to remember it!)
  • multiplier - the note speed. It's not what you'd think! Lower is faster, while higher is slower. I find that a range of 9-12 is best for most songs, but experiment and see which fits your song best.
  • beats before ending - how many beats are between the last note in the beat map and the song actually being over. For example, if the last note is about 4 beats before the end of the song, you'd set this to 4.
  • 1P - your player character. Possible values are bf, bf_pixel, bf_holding_gf. Note that setting 1P to bf_pixel will also set the notes to be pixelated as well.
  • 2P - the opponent. Possible values are gf, dad, spookykids, pico, mom, momdad, monster_christmas (v7 AND OLDER), senpai_1, senpai_2, senpai_3, tankman
  • currSongStage - the stage your song will be performed on. Possible values are stage, spookystage, picostage, momcarstage, christmasstage, schoolstage, newgroundsstage
    • NOTE: Although it is fixed on newer versions of the project, many old versions do not check for the currSongStage properly; you may need to go to the individual stage's sprite and add an exception manually (search for the script that says something along the lines of "if currSongName == ...".

That's mostly the complicated parts over with! All you just have to do is import your songs. Go to the Sounds tab of the songHandler sprite and import your song (Note: if you have a vocal track, do not import it here!). The song must be named <song name>_Inst and is case sensitive. For example, if your song was mysong in the menu, it would be named mysong_Inst.

If you have a vocal track, go to the vocalHandler and add it there in the same way, just now with your vocal track instead of your instrumental track. In this example, it would be mysong_Voices.

Step 5 | Testing your map / you're done!

Start the game, and try your map out! It should be exactly as you've set it up. Share it with the world, and have everyone gasp at your amazingness! You have my approval- you sat through this guide, after all.

Note that this is the basics; I didn't go over how to make multiple difficulties, or other complex stuff, but this should get you started in the world of modding a Scratch recreation of the game. Good luck!

Footnote for momdad characters

For momdad (Week 5), there's one more step to fully making your song beatmap, and that is the song "events". In both the mom and dad sprites, you'll find a "checkCurrentEvent" custom block. Under this, add this to the bottom (replacing your_song_name with your song name, your_song_name_events with the list of your song's events, and replacing the "set tmp to 1" with this script)

image

How do I make this events list? Each "event" in the events list dictates a switch between the mom singing and the dad singing. For example, in cocoa, the dad sings at TIME 0, the mom sings at TIME 19000, then the dad sings at TIME 38000... etc. Play around with it to see how it fits your song!