A small utility for converting Phase Shift drum chart folders into Slopsmith-compatible .sloppak packages.
- Reads
song.inimetadata from a Phase Shift chart directory - Parses MIDI drum chart data from
notes.mid(or any.mid/.midifile 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
The converter expects a Phase Shift chart folder containing:
song.iniwith song metadata- a MIDI file with drum note events (
notes.midpreferred) - 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
- Loads metadata from
song.ini. - Finds a MIDI file in the chart folder and parses MIDI tracks.
- Chooses the drum track automatically.
- Builds a tempo map and converts MIDI ticks to seconds.
- Maps Phase Shift drum note numbers to Slopsmith drum parts.
- Packages the output into a
.sloppakZIP file.
python converter.py <chart_folder> [-o <output_path>]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"- 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
.sloppakis still created without stems. - The converter uses the song length from
song.iniwhen available, otherwise it derives duration from the last drum hit.
- Python 3.10+ (tested with Python 3.14 but I see no reason it's not backwards compatible...)
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