Codename Logo Codename Logo

Editors - Chart Editor

APIWikiTools

Creating Songs

In Codename Engine, there's two ways to add a song to your mod: directly adding the files, and using the editor.

This tutorial will focus on the in-game way of adding songs to your mod.

Creating the song

When you first open the chart editor on a mod with no songs, you will see this:

Initial screen of the chart editor

To create your own song, select New Song at the top of the list. Doing so will make a popup appear, prompting you to insert some info about your song.

Song Info popup menu

This is the main data of your song:

If you're porting the song from a different engine, you may instead click the Import from... button. Otherwise, press Next >.

📥 Importing from other engines

Codename Engine supports importing charts from other engines, notably:

  • Psych/Legacy FNF - charts from engines that use the chart format from before the V-Slice update (Week 7 and prior).
  • V-Slice - JSON charts from the latest version of the base Friday Night Funkin' (Weekend 1 onwards).
  • V-Slice Project (.fnfc) - V-Slice "Friday Night Funkin'" project files.
Import Source

Next, you have to import the audio files. This step can be skipped if you selected V-Slice Project.

Add Audios

Finally, you need to import the song's data.

Add Data
  • Song File Name - the same as the Song Name previously mentioned. Not needed when importing with V-Slice Project.
  • Data/Chart File - The actual chart file. Place the .fnfc file if it's a V-Slice Project, otherwise place the .json.
  • Meta File - The metadata of the song. Only needed when importing with V-Slice.

After inserting the song info, you move to the Menus Data menu, which is where you insert the song's metadata.

Menus Data popup menu

Once you're finished, click "Save & Close" and the song will appear on the song list. Don't worry about getting it right on the first try, you can change all of these later.

Initial screen of the chart editor, now with the added song

(Disclaimer: once you create a song, all the base game songs will be hidden, both from the chart editor as well as the freeplay menu. You can make them reappear by changing the SONGS_LIST_MOD_MODE flag from override to append or prepend.)

Adding difficulties and variations

Once you click your song, you'll need to add a difficulty to begin charting. Select the New Difficulty option to create a new difficulty. Once you do, this menu will appear:

New Chart menu

It looks complicated, but for now you only need to worry about the top boxes:

The Strumlines can be edited here, but it's easier to do it when already editing the chart. What each of the parameters do will be explained later.

Once done, press Save & Close. The game will create your files.

If you want, you may also add variants (ex. pico mixes) to songs. Select the Add Variation option:

New Variation menu

It's the exact same as the song creation process, but instead of Song Name, you write the Song Variation name.

The Charter

Once you select a difficulty, you will be sent to the charter.

Chart Editor

Each character in the song is given a strumline. By default, you get one for the opponent (Dad), one for the player (Bf), and one additional strumline (Gf), which is hidden (as seen by the more transparent background). The opponent's strumline will also be highlighted. This indicates that they're currently focused by the camera.

Charting the song

You can now start charting. The most important controls are:

Other controls can be found on the top bar's menus.

Adding Events

You may have noticed the two Local Events (Only this Difficulty) and Global Events (All Difficulties) texts to the left and right of the charter. This is because in Codename Engine you can have two types of events: Local and Global Events. Like it says in the two texts, the difference is that local events are saved with the chart and only run for the current difficulty, while global events are saved separately in events.json and show up for all difficulties of the current variation.

To add an event, hover your mouse over whichever type's side you want your event to be.

Add Local Event

Once Add Event shows up, click it to add an event marker at its position.

Initially, this event marker will have no events.

No Event

To add an event, click the +.

Once you do, this menu will show up:

No Event

These are all the default events of the engine. If you previously added any custom events (in data/events/), they will show up below these.

If you're confused as to how to use any of these, they're all explained this section. You may skip this otherwise.

📸 Default Codename Engine Events

IconNameFunctionParameters
Hscript CallCalls a function from loaded scripts.Function Name: The name of the function.
Function Parameters (String split with commas): The parameters of the called function.
Camera MovementMoves the camera to a specified character.Camera Target: Which character the camera should move to
Tween Movement?: If unchecked, movement will be instant.
Tween Time (Steps, IF NOT CLASSIC): How long the movement should last.
Tween Ease (ex: circ, quad, cube): The movement's ease. If set to CLASSIC, the camera will instead "lerp" to the character (like most other engines), ignoring the time and tween type.
Tween Type (excluded if CLASSIC or linear, ex. InOut): The type of the selected ease. In speeds up at the start, Out slows down at the end, and InOut does both.
Camera PositionMoves the camera to a specified position.X: The X position on the stage.
Y: The Y position on the stage.
Tween Movement?: If unchecked, movement will be instant.
Tween Time (Steps, IF NOT CLASSIC): How long the movement should last.
Tween Ease (ex: circ, quad, cube): The movement's ease. If set to CLASSIC, the camera will instead "lerp" to the position, ignoring the time and tween type.
Tween Type (excluded if CLASSIC or linear, ex. InOut): The type of the selected ease. In speeds up at the start, Out slows down at the end, and InOut does both.
Is Offset?: If checked, the X and Y parameters will instead be relative to the current position of the camera.
Add Camera ZoomAdds a set amount of "zoom" to a camera, but does not set the camera's zoom.Amount: How much zoom is added.
Camera: Which camera is affected.
Camera Bopcauses a camera bop.Amount: How much the camera bops by.
Camera ZoomZooms the camera.Tween Zoom?: If unchecked, the zoom will be instant.
New Zoom: The desired zoom.
Camera: Which camera gets zoomed.
Tween Time (Steps): How long the zoom should last.
Tween Ease (ex: circ, quad, cube): The zoom's ease.
Tween Type (excluded if linear, ex. InOut): The type of the selected ease. In speeds up at the start, Out slows down at the end, and InOut does both.
Mode: direct uses a base zoom of 1 as the reference point. stage uses the stage's default zoom as the reference point instead.
Multiplicative?: If checked, the new zoom is multiplied on top of the camera's current zoom rather than replacing it.
Camera Modulo ChangeChanges the interval and strength of the camera bops.Modulo Interval: How frequently the camera will bop. Counts depending on Every beat type. For example, 2 with BEAT type will make it bop every 2 beats.
Bump Strength: How strong these bops are.
Every Beat Type: Defines what the interval will count between bops.
Beat Offset: The offset at which these bops happen.
Camera FlashFlashes a camera.Reversed?: If checked, the flash will fade in instead of out
Color: The flash's color.
Time (Steps): How long the flash lasts.
Camera: Which camera the flash happens on.
BPM ChangeChanges the Beats Per Second of the song.Target BPM: The desired BPM.
Continuous BPM ChangeSame as BPM Change, but over a set time.Target BPM: The desired BPM.
Time (steps): How long the BPM change will last.
Time Signature ChangeChanges the time signature of the song.Target Numerator: How many beats are in a measure.
Target Denominator: What note value (quarter note, eighth note, etc.) defines a "beat".
Denominator is Steps Per Beat: If checked, the denominator is instead how many steps are in a beat.
Scroll Speed ChangeChanges the scroll speed of the song.Tween Speed?: If unchecked, the change will be instant.
New Speed: The desired scroll speed.
Tween Time (Steps): How long the change should last.
Tween Ease (ex: circ, quad, cube): The change's ease.
Tween Type (excluded if linear, ex. InOut): The type of the selected ease. In speeds up at the start, Out slows down at the end, and InOut does both.
Multiplicative?: If checked, the new speed is multiplied on top of the current scroll speed rather than replacing it.
Alt Animation ToggleChanges the suffix of every character in a strumline's animations to -alt.Enable On Sing Poses: Adds the suffix to the characters' sing poses.
Enable On Idle: Adds the suffix to the characters' Idle.
Strumline: The target strumline.
Play AnimationPlays a character's animation.Character: The target strumline. The animation will play for every character in the selected strumline.
Animation: The animation you want the character(s) to play.
Is forced? If unchecked, the animation will not play if the character is already playing it.
Animation Context: Changes how the animation interacts with the character's idle. NONE will disable the idle until the animation is over, SING and MISS will disable it for as long as the character's sing animation length, DANCE won't disable it, and LOCK will disable it until another animation that allows idling is played.

Once you've picked an event, it will show up where you placed it.

For example: this is what the Camera Movement event will look like.

Top Bar

Change the properties to your liking, and click off the event to save those changes.

In the case of some events, they will visually change to reflect what they will do once activated. These changes are explained in the Default Codename Engine Events section.

You can also add multiple events in one marker. Simply press the + again and add another event. Note that events in the same marker run bottom to top, so if you encounter any issues, try to reorder the events by dragging them around.

Top Bar - All Menus

At the top of the screen, there is a bar:

Top Bar
Directly on it, there are multiple menus, which will be explained in their own sections. They are:

On the right, it also has:

For any of the options, you can also use them by hitting the keybinds written on the right in gray. If using a Mac, replace Ctrl with Command.

File

Top Bar - File

(any As... option does the same as its normal counterpart, only letting you choose where it gets saved to)

You can also export for the FNF Legacy and Psych Engine formats, to then import to those engines (Legacy/V-slice and Psych Engine, respectively).

Edit

Top Bar - Edit

Most options here are self-explanatory, as they work the exact same as they do on most software.

However, Delete Stacked Notes is special: it checks the current selection (or chart, if nothing is selected) and removes any notes that overlap another (ex. two left notes placed at the same step).

Chart

Top Bar - Chart

View

Top Bar - View

Song

Top Bar - Song

Note

Top Bar - Song

Finally, Edit Note Types List is where you add your custom note types. If your song doesn't need custom notes, you can skip the next section.

Custom Note Types

(If you don't have a note type already in your mod's files, either get one from the Codename Engine Server's Scripts channel, or learn how to make one in the Custom Notetypes page.)

Notetypes submenu

Once you have your custom note type in data/notes, to use it in your song, add an index by pressing the + on the note types list. Once you do, a new note type with the name Note Type X will be created (X will be a different number depending on how many note types already exist in your song).

To make it your note type, rename it to exactly your note type's name. This is almost always case-sensitive (hurt note is NOT the same as Hurt Note when scripting).

if your note has a custom note skin with that exact name (inside images/game/notes), it will show that skin here.

You can delete change the order of the notes, but know that the charter will not automatically change every note to be the correct index. If you swap two notes in the list, those two notes will be swapped throughout the entire chart, so make sure you have the order you like before adding note types.

The base engine already comes with two common note types.

The two note types that already come with the game

Adding/Editing Strumlines

You can unlock the strumlines' positions by pressing the Lock/Unlock icon next to them.

The two note types that already come with the game

You can then drag them to change their order.

You can also add new strumlines by pressing the Create New button.

The two note types that already come with the game

What each parameter does is explained later.

To edit a strumline, open the Options menu.

The two note types that already come with the game

Once you click Create New or Edit, a menu like this will appear:

The two note types that already come with the game

(It'll say "Create New Strumline" if you're making a new strumline, otherwise it's the same)

On the left side is where each of the characters associated with this strumline are shown. You can delete, add, and change which characters make up a strumline.

On the right side are the properties of the strumline, which are all previewable:

Written by: Bitto1070
Last updated: 2026-03-30