SHAWZIFY

Turn any song into a
Shawzin performance.

SHAWZIFY listens to a track, works out which parts of it actually carry the tune, and rearranges those for the twelve notes a Warframe Shawzin can play. You get a song code you can paste into the game — and a full account of every note it had to change to get there.

Download for Windows Try the interface Read the docs View the source

Windows · MIT licensed · runs entirely on your machine · no account, no telemetry, nothing uploaded

The SHAWZIFY workspace: the waveform of a track, a piano roll of the arrangement, a compatibility breakdown showing 44% rising to 82%, and the detected song structure with its hook.
Every note is coloured by what happened to it: played as written, moved to fit, folded into a Shawzin chord, arpeggiated, or removed. Open it and have a look — that is the real interface, replaying a real conversion.

The hard part was never the note numbers

A Shawzin has three strings and three frets. Twelve reachable notes, one fret position at a time, four minutes and a thousand notes per song. Converting MIDI note 64 into a key press is a lookup table. Deciding what a song becomes when it has to fit through that is the actual problem, and it is what this project is.

Importance

Not every note is worth keeping

Each source note is scored on confidence, velocity, melodic prominence, duration, rhythmic salience and where it falls in its phrase. A peak in the top line outranks an inner voice at the same pitch.

Scale search

Nine scales, twenty-five transpositions

Each candidate is scored on interval fidelity, pitch-class coverage, importance-weighted coverage, range fit, contour preservation and tonal anchoring. Intervals carry as much weight as coverage on purpose: a scale that owns every note of the melody but has to fold half of them into another octave has kept the pitch classes and thrown away the tune.

Mapping

The line keeps its shape

Notes are mapped as a path, not one at a time: a Viterbi pass weighs voice leading, contour direction and interval distortion together. Mapping each note independently is exactly why naive converters jump octaves mid-phrase.

Harmony

Chords reduce by function

Only notes sharing a fret row can sound together. Survivors are ranked root and third before seventh before fifth, bass and top voice protected — and where a chord matches one of the twelve combined-fret positions, that position is used instead.

Density

Thinning where it is actually dense

A sliding window finds the passages that exceed what a player can hit and thins only those. Removing globally-least-important notes would wreck the quiet bars to pay for the loud ones.

Structure

It knows where the chorus is

Chroma plus register, density and energy contours find the sections; the part that repeats and hits hardest is the hook. Density reduction sacrifices an intro long before it touches a chorus — and Hook mode arranges just that part.

From a link to a song code

Paste a YouTube link, drop an MP3, or open a MIDI file. The rest is one pipeline.

fetch ─▶ decode ─▶ separate stems ─▶ transcribe ─▶ analyse
                                                     │
                                     structure ──────┤
                                     importance ─────┤
                                     quantize ───────┼─▶ scale search ─▶ map ─▶ reduce ─▶ encode
                                                     │
                                     your settings ──┘                              ▼
                                                                              1BAACAIEAQJAYKAgMAo
9scales searched, at every transposition
11Shawzin variants ranked for your song
under a secondto re-arrange a 2,000-note song when you move a slider
0notes silently truncated, ever

It tells you what it did to your song

Which Shawzin should you even use?

The eleven variants differ in polyphony, sustain, chord type and tuning — which changes what is playable, not just what it sounds like. SHAWZIFY ranks them for the arrangement in hand and says why: a bass riff wants the Tiamat, a chord piece wants a polyphonic one, and a fast line ranks the 28-second Lizzie last because it would smear into itself.

Everything stays on your machine.

Your audio is never uploaded. The network is touched twice: when you explicitly paste a link, and once to download an ML model the first time you use it. There is no account, no telemetry and no analytics.

What it is good at, and what it is not

Measured on real tracks, not assumed. The instrument has twelve notes; some music survives that and some music does not, and you should know which before you spend ten minutes on a conversion.

Three ways to run it

Desktop

The app

A Tauri window with the waveform, the piano roll, the controls and in-game playback. Drag a file onto it and go.

Browser · demo

shawzify web

The same interface, served to a browser tab from 127.0.0.1 with a token. Drop a file on it, download every export, no installer and no Rust toolchain. Only in-game playback is desktop-only.

Terminal

shawzify convert

One command from a file or a link to a song code, with --json for the whole decision trail. Scriptable, and the engine works as a Python library too.

Playing it in game, the boring way

SHAWZIFY can perform an arrangement for you by sending ordinary keystrokes — the same ones your keyboard sends — and only while Warframe is the window in front. It does not inject anything, read or write game memory, hook the client, or interact with anti-cheat in any way. The focus check runs before every single note and cannot be switched off; alt-tab away and playback stops.

Not affiliated with Digital Extremes.

SHAWZIFY is an independent fan project. WARFRAME and the Shawzin are trademarks of Digital Extremes Ltd. No game assets are included or distributed, and no copyrighted music is shipped with it.

Get started

Windows, Python 3.12, Node 18+. Rust only if you want to build the desktop app yourself.

git clone https://github.com/omercsbn/shawzify
cd shawzify
scripts\setup.ps1              # add -SkipMl to skip PyTorch and Demucs

scripts\dev.ps1                # the desktop app
scripts\dev.ps1 -Cli web       # the same interface in a browser
scripts\dev.ps1 -Cli convert assets\demo\demo.wav

Something not working? The troubleshooting guide covers FFmpeg, GPU detection, links, the browser interface and in-game timing. Bad arrangement? Tell us about it — that is the most useful report this project can get.