Skip to content
 
 

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Slopsmith Phase Shift Converter

A small utility for converting Phase Shift drum chart folders into Slopsmith-compatible .sloppak packages.

Features

  • Reads song.ini metadata from a Phase Shift chart directory
  • Parses MIDI drum chart data from notes.mid (or any .mid/.midi file in the folder)
  • Selects the drum track automatically by name or by drum-note content
  • Converts MIDI drum events into Slopsmith drum hits with timing, instrument mapping, and velocity
  • Includes optional chart cover art and audio if present
  • Generates a manifest.yaml, drum_tab.json, and empty arrangement JSON files inside the .sloppak

Supported input

The converter expects a Phase Shift chart folder containing:

  • song.ini with song metadata
  • a MIDI file with drum note events (notes.mid preferred)
  • optional cover image: cover.png, cover.jpg, cover.jpeg, album.png, album.jpg, album.jpeg, banner.png, banner.jpg, banner.jpeg
  • optional audio file: .ogg, .wav, or .mp3

How it works

  1. Loads metadata from song.ini.
  2. Finds a MIDI file in the chart folder and parses MIDI tracks.
  3. Chooses the drum track automatically.
  4. Builds a tempo map and converts MIDI ticks to seconds.
  5. Maps Phase Shift drum note numbers to Slopsmith drum parts.
  6. Packages the output into a .sloppak ZIP file.

Usage

python converter.py <chart_folder> [-o <output_path>]

Examples

Convert a chart folder and write output next to the source folder:

python converter.py "C:\path\to\chart_folder"

Convert a chart folder and write to a specific output file:

python converter.py "C:\path\to\chart_folder" -o "C:\path\to\output.sloppak"

Notes

  • If no output path is provided, the converter names the package after the chart folder and adds .sloppak.
  • If the audio file is missing, the .sloppak is still created without stems.
  • The converter uses the song length from song.ini when available, otherwise it derives duration from the last drum hit.

Requirements

  • Python 3.10+ (tested with Python 3.14 but I see no reason it's not backwards compatible...)

License

I made this with the intent that the slopsmith devs might find it useful, it's free for them (or anyone else for that matter) to use, build upon, or not. If a feature that accomplishes this same task is added to the official slopsmith, I will stop development on this to avoid competing standards

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages