back to projects

Minus One — AI Stem Splitter for Musicians

Upload a song, get it split into six instrument stems on a GPU, and mute the one you play — a practice tool with a mini mixing console in the browser.

Next.jsTypeScriptWeb Audio APIDemucsPyTorchRunPod ServerlessVercel BlobUpstash Redis

Minus One turns any song into a practice backing track: upload it, and Demucs (htdemucs_6s) running on a RunPod GPU worker splits it into vocals, drums, bass, guitar, piano and rest. A custom multi-track Web Audio engine plays all six stems in perfect sync with per-track faders and mute switches — so the band plays everything except the part you play yourself. The serverless pipeline keeps secrets server-side: scoped one-hour blob upload tokens, same-origin stem proxying, rate limits and a daily GPU budget.

  • ~10s from upload to playable six-stem mixer (end-to-end, with warm GPU worker)
  • Custom Web Audio multi-track engine with coordinated seeking and drift correction
  • Self-built RunPod Serverless Demucs worker (CUDA image with baked model weights)
  • Hardened pipeline: scoped upload tokens, SSRF guards, rate limits, daily budget

Deep dive into browser audio (six HTMLAudioElements on one AudioContext, seek barriers, drift correction) and into shipping a GPU workload as a serverless worker — including cold-start economics, scoped storage tokens and provider-agnostic job orchestration.