StepMania 5.1 Beta 1

Roadmap notes

A decision was made to delay some of the more signifigant changes originally intended for 5.1 to a future release, which will be known as StepMania 5.2 (see here for more details), and is in continued development on the master branch. At the same time, a new iteration of 5.1 was forked from the branch of 5.0, which features enhancements and other internal improvements, whilst aiming to be "almost entirely compatible" with content designed for 5.0.x, such as themes.

In other words, the previous preview release made under the version number 5.1, "5.1 -3", is actually an alpha build of what is now known as StepMania 5.2 on the Master branch. This is the first preview release based on the 5.1-new branch, created as a result of the aforementioned fork.


Wiki page

Notes when upgrading

The user data directory has been changed to reflect the new version number;

  • Windows: %APPDATA%/StepMania 5.1/
  • Linux: ~/.stepmania-5.1/
  • macOS: ~/Library/Application Support/StepMania 5.1/

The Alternate folder preferences can be used to share content such as songs between multiple versions of StepMania.

Player-visible changes:

New default theme

A new high-resolution default theme known as Lambda has been introduced. It features a cleaner visual design with a bold color scheme, a more streamlined layout, and is optimized for high definition resolutions. A new noteskin of the same name is also bundled, which is inspired by the visual design of the theme.

While most themes (including the previous default theme) render at an internal resolution of 480p for positioning actors, Lambda uses 720p. Some content, particularly songs utilizing internal BGAnimations and other scripting, may require adaptations in order to render correctly when using high-resolution themes; although this issue is not exclusive to 5.1, it has greater prominence because of its use of a high-resolution theme by default.

The previous default theme is still included as part of the base StepMania package under the name "Legacy", but it will be removed on a future release. As mentioned earlier, 5.1 remains compatible with themes and noteskins that are compatible with 5.0.12.

Controller support

The DirectInput handler for Windows now supports XInput. (#1443)

"The XBox360 controller driver for windows has a flaw where the DirectInput backwards-compatible driver registers dance pad arrows as a hat and will not allow opposite arrows to be pressed at the same time. This is not a problem in the XInput interface since the arrows are registered as a DPad and each arrow is a button."

Custom songs

Songs can be loaded from profiles on USB drives. Preferences are avaliable to specify caps on song file size, the number of songs that can be loaded, and loading timeout length. On Linux, StepMania must run as root to save USB profile scores. (#1470)


  • The ScreenEdit notefield now scales on themes with internal resolutions higher than 480p. (#1357)
  • Bug fixed where player difficulty meter and/or color inside MusicWheelItem don't update when switching between difficulties (#1361)
  • Exclusive and borderless fullscreen modes avaliable on X11 (#1485), and issues with fullscreen fixed on macOS (#1523)
  • Coin count is now saved to a file in the /Save folder. (#1405)
  • Unselectable trails are pruned from course selection when AutoSetStyle is active. (#1619)
  • Installer build script fixes. (#1625)

Creator-visible changes:

New modifiers

A large number of new ArrowEffects have been added, primarily originating from the OpenITG fork "NotITG". They include new modifiers that can be applied to individual notefield columns, versions of selected modifiers that act upon different axes, offset and speed controls for selected modifiers, versions of selected modifiers that utilize tangent waves, as well as other new effects.

  • Column specific modifiers; right now, this supports the maximum number of columns, 16. Note that unlike NotITG, numbering for column specific modifiers starts at 1 instead of 0.
    • Bumpy
    • Dark
    • ConfusionOffset
    • ConfusionXOffset
    • ConfusionYOffset
    • Move note columns (Usage: 100% MoveX1 moves the first column left by ARROW_SIZE.)
      • MoveX (moves a column in the x direction)
      • MoveY (moves a column in the y direction)
      • MoveZ (moves a column in the z direction)
    • Reverse
    • Tiny
  • Tangent-based modifiers
    • tanBumpy
    • tanBumpyX
    • tanDigital
    • tanDigitalZ
    • tanDrunk
    • tanDrunkZ
    • tanExpand
    • tanTipsy
    • tanTornado
    • tanTornadoZ
  • Cosecant (When set to true, all tan mods use a cosecant wave instead of a tangent wave. This is to recreate the tangent modifier behavior from nITG V1)
  • Attenuate
    • AttenuateX - attenuates on the x position.
    • AttenuateY - attenuates on the y position.
    • AttenuateZ - attenuates on the z position.
  • Beat
    • BeatOffset (50% = beat effect happens on 8th notes)
    • BeatPeriod (waveform length of the beat mod at peak wave amplitude)
    • BeatMult (multiplies the bpm of the beat effect)
    • BeatY (Beat's effect applied to the y position)
    • BeatYOffset
    • BeatYPeriod
    • BeatYMult
    • BeatZ (Beat's effect applied to the z position)
    • BeatZOffset
    • BeatZPeriod
    • BeatZMult
  • Bounce
    • Bounce - uses absolute value of a sine function
    • BouncePeriod
    • BounceOffset
    • BounceZ - Bounce's effect on the z position
    • BounceZPeriod
    • BounceZOffset
  • Bumpy
    • BumpyOffset
    • BumpyPeriod
    • BumpyX (Bumpy's effect applied to the x position)
    • BumpyXPeriod
    • BumpyXOffset
  • Confusion
    • ConfusionOffset (Rotates both notes and receptors by a given amount on the z axis, and keeps them there)
    • ConfusionX (Acts like Confusion, but on the x axis instead of the z axis)
    • ConfusionXOffset (ConfusionOffset on the x axis instead of the z axis)
    • ConfusionY (Uses the y axis instead of the z axis)
    • ConfusionYOffset: (Uses the y axis instead of the z axis.)
  • Digital (Arrow path takes the form of a digital sine wave)
    • DigitalSteps (more steps means a smoother wave)
    • DigitalPeriod
    • DigitalOffset
    • DigitalZ (Digital's effect applied to the z position)
    • DigitalZSteps
    • DigitalZPeriod
    • DigitalZOffset
  • DizzyHolds (When set to true, hold heads become affected by dizzy. Replaces the DizzyHoldHeads metric)
  • DrawSize (affects how far down the notefield renders the notes; 100% = double, -50% = half)
  • DrawSizeBack (affects how far the notefield renders notes after the receptors; 100% = double, -50% = half)
  • Drunk
    • DrunkSpeed
    • DrunkOffset
    • DrunkPeriod (change the period of the oscillations of drunk)
    • DrunkZ (Drunk's effect applied to the z position)
    • DrunkZSpeed
    • DrunkZOffset
    • DrunkZPeriod
  • Expand
    • ExpandPeriod
  • Parabola
    • ParabolaX (Arrow path takes the form of a parabola in the x position)
    • ParabolaY (Arrow path takes the form of a parabola in the y position)
    • ParabolaX (Arrow path takes the form of a parabola in the z position)
  • PulseInner
  • PulseOuter
  • PulsePeriod
  • PulseOffset
  • Sawtooth (Arrow path takes the form of a sawtooth wave)
    • SawtoothPeriod
    • SawtoothZ (Sawtooth's effect applied to the z position)
    • SawtoothZPeriod
  • ShrinkLinear
  • ShrinkMult
  • Square (Arrow path takes the form of a square wave)
    • SquarePeriod
    • SquareOffset
    • SquareZ (Square's effect applied to the z position)
    • SquareZPeriod
    • SquareZOffset
  • StealthPastReceptors (When set to true, Stealth and similar effects persist for notes that go past the receptors. Replaces the DrawHiddenNotesAfterReceptor metric)
  • StealthType (When set to true, Stealth and similar effects are based off of YOffset instead of YPosWithoutReverse. Mainly affects modifiers like BeatY and other similar mods that work on the y position)
  • Tipsy
    • TipsySpeed
    • TipsyOffset
  • Tornado
    • TornadoPeriod (control the helix length)
    • TornadoOffset (control how far into the tornado the receptors are) (100% = +1)
    • TornadoY
    • TornadoZ
    • TornadoZ (Tornado's effect applied to the z position)
    • TornadoZPeriod
    • TornadoZOffset
  • WavePeriod (Control the wave length)
  • Zigzag (Arrow path takes the form of a triangle wave)
    • ZigzagPeriod
    • ZigzagOffset
    • ZigzagZ (Zigzag's effect applied to the z position)
    • ZigzagZPeriod
    • ZigzagZOffset
  • ZBuffer (When set to true, turns on the zbuffer. Useful for when zbuffer is wanted without needing to turn on effects like 0.5% bumpy.)

Theming changes

  • A new system known as ImageCache is avaliable for caching the various types of images bundled with a simfile, such as jackets and CDTitle images among others. This expands upon the previous system used for only banners and backgrounds. (#1532)
  • StepMania now supports distance field effects and fonts. (#1546, #1547)
  • Sprite:Load function can set additional texture hints by setting a second argument (#1426)

Noteskin changes

  • New bundled noteskin, Lambda, which is designed to compliment the new default theme.
  • New NoteColorType ProgressAlternate; notes on a frame boundary (for example, if there are 4 frames, notes at 0, 0.25, 0.5, and 0.75 beats) use the previous frame instead. A modification of the midi-solo noteskin called midi-rainbow is included to demonstrate this behavior. (#1621)


  • Additional functions and Lua bindings for online mode, including song file and chart hashing, keyboard scrolling for chat, ability to implement basic mouse navigation, etc. (#1393, #1394)
  • Ability to reload preferences from the debug menu. Some preferences are only checked at startup and are unaffected by the reload. (#1471)
  • New SetActualDancePoints and SetPossibleDancePoints functions (#1527)
  • Noteskin names may contain spaces. (#1493)
  • GetNumCourseEntries function. (#1497)

Known issues

  • Styles are not displayed on Lambda's course selection screen. (#1617)