SongData module defines the structure for song information, charts, and metadata in Friday Night Funkin’.
Core Classes
SongMetadata
Contains information about a song for display in Freeplay and loading chart assets.Semantic versioning string for the song data format
Display name of the song
Artist who created the song
Person who charted the song
Grid divisions for charting
Whether the song should loop
Instrumental and vocal offsets relative to the chart
Data relating to the song’s gameplay
Tool or editor that generated the file
Time format used in the chart:
"ticks", "float", or "ms"Array of tempo and time signature changes
SongPlayData
Defines gameplay-specific song data.Available variations of the song (e.g.,
"erect", "pico")Available difficulties for this song
Characters used in the song
Stage ID to use for this song
Note skin to use
Difficulty ratings as displayed in Freeplay (key is difficulty ID)
Album ID to display in Freeplay
Sticker pack for transitions
Audio preview start time in milliseconds
Audio preview end time in milliseconds
SongCharacterData
Information about characters used in a song variation.Player character ID (usually Boyfriend)
Girlfriend/spectator character ID
Opponent character ID
Instrumental variant to use
Alternative instrumental variants available
Character IDs for opponent vocals
Character IDs for player vocals
SongChartData
Contains chart data for notes and events.Semantic versioning string for chart data format
Scroll speeds per difficulty
Song events (camera focuses, animations, etc.)
Note data per difficulty
Tool that generated the chart
SongNoteData
Represents a single note in the chart.Timestamp in the song’s time format
Note data index.
0-3 for directions (left, down, up, right). floor(d / 4) determines strumline (0 = player, 1 = opponent)Length for hold notes (0 for tap notes)
Note kind for custom behavior (e.g.,
"mine", "ghost")Custom parameters for note kinds
SongEventData
Represents a song event.Timestamp in the song’s time format
Event kind (e.g.,
"FocusCamera", "PlayAnimation")Event value/data (structure depends on event kind)
SongTimeChange
Defines tempo and time signature changes.Timestamp of the time change
Quarter notes per minute
Time signature numerator
Time signature denominator (should be power of 2)
Beat time for linear calculation
Beat tuplets defining step divisions per beat
SongOffsets
Offsets to correct timing relative to the chart.Instrumental offset in milliseconds. Negative values start earlier, positive values add silence
Offsets for alternate instrumentals
Vocal offsets per character, applied on top of instrumental offset
Vocal offsets per character for alternate instrumentals
