PlayPart
PlayPart

PlayPart

Extract · Mute · Play

A self-hosted practice studio for musicians. Separate any song into instrument stems, then loop, slow down, transpose and mute — until the part you want to play is the only thing you hear missing.

Get started View on GitHub →

What it does

Everything a musician needs to learn a song by playing along — and nothing they don't.

Six-stem AI separation

Drums, bass, guitar, vocals, piano, and other — extracted from any mp3 with the htdemucs_6s model from Meta. Wav output, original sample rate preserved.

Practice tools that matter

A/B loop with visual markers. Slow down to 0.5× or 0.75× without changing pitch. Transpose ±6 semitones — drums kept original, the other stems pre-rendered once per pitch.

A mixer that remembers

Per-stem volume, master volume, mute and solo — all persisted automatically per song. Open any track months later, the mix is exactly how you left it.

Notes and attachments

Jot down guitar gear settings, amp profiles, tuning. Attach the PDF score or the Guitar Pro file. PDFs preview inline in the browser.

Tempo and key, detected

BPM and key auto-detected on extraction with librosa and Krumhansl-Schmuckler profiles. Both are editable when the algorithm picks the relative minor instead of the major.

Yours, on your hardware

Self-hosted, LAN-only by design. No accounts, no telemetry, nothing leaves your machine. NVIDIA GPU detected automatically, CPU fallback for everything else.

How it works

  1. 1

    Upload an audio file

    mp3, wav, flac, m4a or ogg — anything ffmpeg can decode.

  2. 2

    The model runs

    A minute on a modest NVIDIA GPU, a few minutes on CPU. Tempo and key are detected at the same time.

  3. 3

    Open the mixer

    Six stems lined up, perfectly synchronized. Mute, loop, slow down, transpose — your settings stay saved.

Quick start

One command. Pre-built image on ghcr.io. No build, no clone.

Server with an NVIDIA GPU (needs the NVIDIA Container Toolkit)
docker run -d --name playpart --restart unless-stopped \
  -p 8765:8765 --gpus all \
  -v playpart-data:/data \
  ghcr.io/stumme-soft/playpart-gpu:latest
CPU-only server
docker run -d --name playpart --restart unless-stopped \
  -p 8765:8765 \
  -v playpart-data:/data \
  ghcr.io/stumme-soft/playpart-cpu:latest

Open http://<host>:8765 from any device on the LAN. Uploaded tracks, extracted stems, the SQLite database and the model cache all live in the playpart-data Docker volume.

Prefer docker compose, want to pin a specific version (ghcr.io/stumme-soft/playpart-cpu:0.1.0) or build from source? The repository README covers all of it.

Built on shoulders

PlayPart leans on a handful of excellent open-source projects: Demucs for the source separation, librosa for the analysis, FastAPI + SvelteKit for the plumbing. Thanks to their authors.