Skip to main content

What is a Simfile?

A simfile is a file that contains all the information needed to play a song in StepMania, including:
  • Song metadata - Title, artist, banner, background
  • Audio file - The music to play
  • Timing data - BPM changes, stops, delays
  • Step charts - The actual arrows/notes to play

Supported Formats

StepMania supports multiple simfile formats, each with different capabilities:

.SM Format

The classic StepMania format. Simple, widely supported, single timing data.

.SSC Format

The modern format with per-chart timing, extended features, and more metadata.

Other Formats

Legacy formats: DWI, BMS, KSF, and others.

Course Format

Course files (.CRS) for creating song playlists and marathons.

Simfile Structure

Basic Directory Layout

A typical simfile directory contains:
My Song/
├── mysong.sm          # Simfile
├── mysong.ogg         # Audio file
├── banner.png         # Song banner (256x80)
├── background.png     # Background image
├── cdtitle.png        # CD title graphic (64x40)
└── mysong.lrc         # Optional: Lyrics

File Naming

  • Audio files: MP3, OGG, WAV formats supported
  • Images: PNG, JPG, BMP formats supported
  • Banner dimensions: Typically 256x80 or 418x164 pixels
  • Background dimensions: Any size, typically 640x480 or larger

Format Comparison

Feature.SM.SSCDWIBMSKSF
Per-chart timingNoYesNoNoNo
Multiple difficultiesYesYesYesNoNo
BPM changesYesYesYesYesYes
Stops/FreezesYesYesYesNoNo
DelaysYesYesNoNoNo
WarpsNoYesNoNoNo
Background changesYesYesYesYesNo
KeysoundsYesYesNoYesNo
Speed changesNoYesNoNoNo
Modern featuresLimitedFullNoNoNo

Choosing a Format

Use .SM when:

  • Creating simple charts with standard timing
  • Maximum compatibility is needed
  • Working with older StepMania versions
  • All difficulties share the same timing

Use .SSC when:

  • Different charts need different timing
  • Using advanced features (warps, speed changes, fakes)
  • Creating complex gimmick charts
  • Working with StepMania 5.0+

Use legacy formats when:

  • Converting existing files from other simulators
  • Maintaining compatibility with specific games
  • Working with format-specific features

Converting Between Formats

SM to SSC

StepMania can automatically convert .SM files to .SSC:
  1. Open the song in Edit Mode
  2. Save the chart
  3. StepMania will create a .SSC file with all data

SSC to SM

Limitations when converting:
  • Per-chart timing data is lost
  • Advanced features (warps, speeds, fakes) are lost
  • Only song-level timing is preserved
Converting from .SSC to .SM may result in loss of timing data if charts use per-chart timing. Always keep backups of original files.

MSD Format

Both .SM and .SSC use the MSD (Music Simulation Data) format, which uses tags:
#TAGNAME:value;
  • Tags start with #
  • Tag names are case-insensitive
  • Values end with ;
  • Comments use //

Example:

#TITLE:My Song;
#ARTIST:My Artist;
#BANNER:banner.png;
#MUSIC:mysong.ogg;

Metadata Tags

Common tags used in all formats:
  • #TITLE - Song title
  • #SUBTITLE - Song subtitle/remix name
  • #ARTIST - Song artist
  • #GENRE - Music genre
  • #CREDIT - Chart author/credit
  • #MUSIC - Audio file path
  • #BANNER - Banner image path
  • #BACKGROUND - Background image path
  • #CDTITLE - CD title graphic path
  • #LYRICSPATH - Lyrics file path
  • #OFFSET - Audio offset in seconds
  • #BPMS - BPM changes (beat=bpm,beat=bpm)
  • #STOPS - Freezes (beat=seconds,beat=seconds)
  • #DELAYS - Delays (beat=seconds,beat=seconds)
  • #TIMESIGNATURES - Time signature changes
  • #DISPLAYBPM - BPM to display (actual, range, or *)
  • #SAMPLESTART - Preview start time
  • #SAMPLELENGTH - Preview length
  • #SELECTABLE - Whether song is selectable

Timing Data Format

Timing data uses beat-value pairs separated by commas:
#BPMS:0.000=120.000,64.000=140.000,128.000=120.000;
This means:
  • At beat 0, BPM is 120
  • At beat 64, BPM changes to 140
  • At beat 128, BPM changes back to 120

Beat Numbering

  • Beat 0 is the start of the song (after applying offset)
  • One measure = 4 beats (in 4/4 time)
  • Beats can be decimal (e.g., 64.500 = halfway through beat 64)

Next Steps

Learn .SM Format

Detailed .SM format specification and examples

Learn .SSC Format

Complete .SSC format reference with advanced features

Build docs developers (and LLMs) love