Stem Splitting for Guided Listening
Pull any recording apart into drums, bass, vocals, and everything else — then teach from the pieces. A classroom workflow built on sonic and podium.
What Stems Are (and Why Teachers Want Them)
A stem is a submix of a recording — all the drums bounced to one file, all the vocals to another. Studios have exchanged stems for decades; what changed recently is that machine learning can now recover stems from a finished stereo mix. No session files needed. Any song your students love can be taken apart.
For a music classroom this solves a stubborn problem: students can't hear through a mix. Ask a class what the bass is doing in a Motown track and most of them genuinely cannot find it — the mix is a wall. Mute everything except the bass and suddenly the line is obvious, singable, transcribable. Guided listening stops being "trust me, it's in there" and becomes demonstration.
The standard four-stem split:
| Stem | Contains | Classroom use |
|---|---|---|
drums | Kit, percussion | Groove analysis, rhythm dictation |
bass | Bass guitar / synth bass | Bassline transcription, harmony's foundation |
vocals | Lead + backing vocals | Melody study, lyric setting, karaoke backing |
other | Everything else — keys, guitars, strings, synths | Arrangement and texture analysis |
How Source Separation Works
Modern stem splitters are neural networks trained on thousands of songs where the isolated stems are known. The model learns what "drums" look like in a spectrogram and in the raw waveform, then estimates each source's contribution to a mix it has never heard.
The landscape, roughly three tiers:
- Open source: Demucs (Meta) and Spleeter (Deezer). Demucs v4's hybrid transformer — it reads the spectrogram and the waveform at once — is the state of the art among free models, at roughly 9 dB signal-to-distortion ratio. This is what our workflow uses.
- Proprietary services: AudioShake, Music.AI, LALAL.AI. Measurably better (a couple of dB on vocals, more stem categories), but paid, cloud-based, and unnecessary for classroom listening work.
- DAW built-ins: Logic Pro (Apple Silicon only), Ableton Live 12.3+, FL Studio. Convenient if students are already in the DAW; opaque about what model runs underneath.
Practical hardware note: separation runs fine on CPU — a six-minute song takes about six minutes without a GPU, seconds with one. For teacher prep (split tonight, teach tomorrow) CPU is plenty; nobody needs a lab of RTX cards to run guided listening. Free tools like Ultimate Vocal Remover give students a GUI at home.
The Workflow: sonic → podium
My stack is two small tools: sonic, an audio CLI that wraps Demucs (among other things), and podium, a calendar-driven Slidev deck system for class presentations. Splitting a song and getting it into tomorrow's slides is two steps.
Step 1 — Split
Point sonic stems at a YouTube URL (or a local file) and give it the deck's stems folder:
sonic stems <youtube-url> -o decks/6b/stems
This downloads the audio, runs Demucs, and writes drums.wav, bass.wav, vocals.wav, other.wav into the deck folder. Done on the laptop the night before; no internet needed in class.
Step 2 — Drop into a slide
In the deck's markdown, one component:
<Stems label="song title" /> <!-- all four stems -->
<Stems :stems="['drums', 'bass']" /> <!-- just the rhythm section -->
The Stems component renders a synced multi-track player with a mute button per stem. All stems play in lockstep; toggling one mutes it without stopping the others. That per-stem mute is the whole pedagogy — the "now listen to just the drums" moment, at a click, in front of the class.
Two implementation notes that earn their keep: stems re-align at the start of each play (so drift can't accumulate across a lesson), and audio is referenced from the server root so it works in both the audience view and the presenter view.
Guided Listening Activities
Things that consistently work, ordered from receptive to productive:
- Solo the layer. Play the full mix, then one stem alone, then the full mix again. Students describe what they can hear now that they couldn't before. Repeat weekly and their unassisted listening measurably improves — the stems are training wheels that come off.
- Subtraction listening. Mute one stem and ask what's missing — not the instrument's name, but what the mix lost. Muting bass makes a track feel weightless; muting "other" exposes how much space the arrangement was filling. This is texture vocabulary taught by demonstration.
- Rhythm section dictation. Solo drums + bass together. Students transcribe the groove — kick pattern first, then the bassline against it. The lock between kick and bass is invisible in a full mix and unmissable in isolation.
- Instant karaoke / play-along. Mute vocals: backing track for singers. Mute bass: the class bassist plays the part live against the real record. Every song becomes a rehearsal track.
- Arrangement mapping. Play each stem alone across the song's timeline. Students chart when each layer enters and exits, then discuss why the producer staged it that way. Form analysis, but with evidence they extracted themselves.
Limits, Artifacts, and Ethics
Artifacts are real. Separated stems have a slightly underwater, phasey quality — cymbal wash bleeds into "other," vocal reverb tails smear. For guided listening this doesn't matter at all. For sampling or production work it can; teach students to hear the artifacts too, since spotting them is its own ear training.
The four buckets are opinionated. A piano concerto splits into "vocals: silence, drums: timpani-ish, everything else: other" — the model was trained on pop. Separation quality tracks how much a song resembles the training data. Choose repertoire accordingly, or use it as a teachable moment about ML bias.
Copyright. Splitting a commercial recording for in-class analysis sits comfortably inside educational fair use in most jurisdictions. Redistributing stems, uploading them, or letting students publish remixes of them does not. My rule: stems live in the deck folder, play in the classroom, and are never handed out as files. The deck's stems folder is gitignored for exactly this reason — regenerate, don't commit.