Inspiration
- Camera-only games like 67 Speed already have 17M+ players, and hand tracking now runs in real time in a browser with no special hardware.
- Guitar Hero and Rock Band proved people will pay for the fantasy of being on stage, but they locked you into a fixed setlist and $60–$180 plastic controllers that ended up in closets.
- SlopRock keeps the fantasy and deletes the plastic: your webcam is the instrument, and any song you upload becomes a playable band arrangement in about a minute.
What it does
- Upload anything: drop in an MP3, WAV or MP4 (music videos included). We separate it into stems, auto-chart playable note highways for drums, guitar and bass, and extract the sung melody and lyrics, all in about a minute.
- Play together: create a room, share a 4-letter code, and up to four players each claim an instrument or vocals. Scores, combos and a shared Band Energy meter sync live for everyone.
- Hands-free control: webcam hand tracking (MediaPipe) reads finger curls as note hits. Each player calibrates their own instrument. The keyboard always works as a fallback.
- Real recording: your instrument stays quiet until you hit its notes, then the actual recorded track swells in. Miss and it fades out while the band plays on.
- Sing for real: a Vocal Booth with live autotune tuned to the song's own key and melody, plus reverb and polish knobs, mic and speaker pickers, and hum/noise filtering.
- Karaoke mode: a scrolling pitch lane against the song's real vocal line, word-by-word lyric highlighting, and a live on-pitch score.
- Video backgrounds: upload a music video and its footage plays full screen behind the game, synced to the audio, with a draggable seek bar.
- Live on the web: Vercel frontend plus a media service on Azure Services
How we built it
ElevenLabs (the AI engine)
- Stem separation: splits each upload into drums, bass, guitar, piano, vocals and other. This is what makes "any song becomes a playable band" possible.
- Speech-to-text (Scribe): run on the isolated vocal stem for accurate lyrics with word timestamps.
- Pitch and melody: the same vocal stem goes through pitch detection to produce the sung melody, which drives the karaoke chart and the autotune.
SpacetimeDB (multiplayer backbone)
- A Rust module holds authoritative state for rooms, seats, hits, scores and the song catalog.
- Clients subscribe over WebSockets, so every screen updates live.
- A shared start timestamp keeps countdowns and song start aligned across laptops.
- A song uploaded by one player appears for everyone in the catalog, and the server fills empty seats with bots.
Frontend
- Next.js and React on Vercel.
- A canvas note-highway renderer and a Web Audio engine that schedules stems sample-accurately.
- Autotune runs in an AudioWorklet (pitch detection plus a pitch-synchronous shifter), so it never blocks the main thread.
- Hand tracking runs in a web worker.
Media pipeline
- Python/FastAPI on Azure Container Apps, deployed through GitHub Actions and Azure Container Registry.
- ffmpeg converts audio and video, and librosa and Basic Pitch turn stems into charts and melodies.
- Storage is on Azure Files, so uploads persist.
Challenges we ran into
- Real-time pitch correction in the browser: we needed added latency low enough to sing along to, so we built a custom AudioWorklet that adds 0 ms while you're in tune and only a few ms while it corrects, and tunes to the song's actual key instead of a fixed scale.
- Keeping everything on one clock: six stems, a background video, a live microphone and multiple laptops all had to stay in sync. Naive timers drifted, so we moved to Web Audio scheduling and fixed a bug where audio started late after decoding.
- Speaker vs. headphone audio: browser voice-processing on macOS silenced the song on laptop speakers, so we replaced it with our own hum filter, noise gate and feedback-safe monitor level.
- Auto-charting that feels fun: turning raw onset and pitch data into charts that are playable by hand and by webcam took a lot of tuning of note density and lane assignment.
- Making a public link safe: we retrofitted a password and rate limits onto endpoints that were built for a trusted network.
- Camera input reliability: hand tracking needed per-player calibration to avoid lag and false triggers.
Accomplishments that we're proud of
- Live, browser-based autotune with latency low enough to actually sing along to, with no plugin or app.
- A pipeline that takes any song from "just an MP3/MP4" to a playable band arrangement with lyrics and a vocal chart, with zero manual charting.
- Multiplayer rooms that stay in sync across devices with hand tracking, audio and video.
- A publicly deployed full-stack app (Vercel and Azure), not just a local demo.
What we learned
- Web Audio scheduling, not timers, is the only reliable way to keep multiple audio sources and video in sync.
- AudioWorklets are the right tool for anything latency-sensitive.
- Auto-generated content (charts, lyrics, pitch targets) needs a "feel" pass, not just a "technically correct" pass.
- Deploying for real (CORS, secrets, rate limits, redeploys mid-demo) is a different problem from getting a demo working on one laptop.
What's next for SlopRock
- Difficulty tiers and leaderboards across songs.
- More instruments (keys, bass solos) and smarter difficulty balancing.
- Accounts and personal song libraries.
- Mobile support for hand tracking and karaoke.
- A practice mode with slow-down and section looping.


Log in or sign up for Devpost to join the conversation.