The full story
Why
I've filmed every gig for years on a phone clipped to the speaker stand. Splitting a two-hour video into songs by hand would take most of a Saturday, before naming anything or making a single reel.
The first evening
Built in Claude Code over one Saturday evening in May on the footage from Predator Ridge the night before: 28 songs found and 23 reels cut.
| Time | What happened |
|---|---|
| 6:22 pm | First working version: split, name, cut reels. |
| 6:29 pm | Reels sped up by only listening to 90 seconds of each song. |
| 9:18 pm | Every step made safe to stop and restart. |
| 9:19 pm | Shazam removed. It never matched a live acoustic cover, because it matches studio recordings. |
| 10:10 pm | Fixed a cut-short copy of the audio that had hidden half the gig: 15 of 28 songs found until then. |
How it decides
Loudness is measured over 15-second windows so a quiet verse doesn't split a song. Whisper writes down a 60-second sample of each song (trying later if it lands on banter), and Claude Sonnet names it, told the words will be wrong but the phrases close. The chorus is the most repeated 4 to 8 word phrase; with no repeat, the reel starts a quarter of the way in. Song files are cut without re-encoding, so nothing loses quality.
Captions, handed back and won back
From late May I switched captions off and captioned by hand in InShot, because the misheard words were wrong too often to post. In September I measured it. Against lyrics I typed by hand for three songs, every speech model I tried got 21% to 27% of words wrong, close to the published best for sung lyrics. Asking Claude to correct the words made it worse, 25% to 41%.
So the words come from LRCLIB, a free open lyrics library that had 66 of the 68 songs in my set, and a forced aligner places each word on the audio. On Maneater the speech model heard "by the power of a JQR"; the reel now says "by the purr of a Jaguar". The two checks are measured, not guessed: right songs share 0.59 to 0.92 of their words with what was heard, wrong songs 0.04 to 0.09; the right verse drifts 0.05 to 0.15 seconds from the transcript, a wrong verse 6 to 18. When a wider test found one wrong pairing inside the timing limit, the limit was tightened to 1.0 second.
Other fixes that round: captions break where the lyric line breaks (one read "door So many have"); a title card shows the song and venue for five seconds, never the date, because a date makes a late post look stale; and captions are drawn by the tool itself after a routine update left my video converter unable to draw text at all.
Stand By Me
For four months "Stand By Me" came out as Me_by_Ben_E_King_-_Stand, at four gigs. Claude had answered correctly every time. My code split its reply at the first " by ", which is inside the title. It now trusts the quote marks, and the four files are renamed.
Speed
A background-priority setting made it nine times slower on the same test, 172.7 seconds against 18.5, not the "few percent" its comment claimed; I measured it and turned it off. The blurred background behind each reel was computed at full size; blurring a thumbnail looks the same and took a 30-second reel from 78.5 seconds to 21.3. In August a gig took about 75 minutes for 26 reels on my old Intel Mac. In October, on the new M5 Pro's graphics chip, a one-hour, 13-song gig split, named and made into reels end to end in 3 minutes 15 seconds, and the bigger speech model got more words right: 14, 35 and 9% wrong on three clips against 23, 46 and 20%.
One song, many gigs
The overnight reels came from one sentence before bed: make as many as you can find, they can run all night. Claude counted songs across the named files (16 songs, 151 takes), placed every lyric line in every take, picked one take per line with no venue twice in a row, and checked each finished shot by listening again. It left out a birthday party with kids in shot without being told, because that rule was already written down. The reels run five to ten gigs each.
They read perfectly and sounded wrong to me: a beat missing at every cut. Claude measured all 93 cuts and found half a second of music lost at a typical one, because each side of a cut used a different guess of when the next line started. Now both sides cut at the same moment in the music, found from my voice alone, and the guitar strums are lined up. A beat tracker and chord matching were tried first and didn't hold up on live takes.
Runs
Predator Ridge (28 songs, 23 reels), Britannia, Ex Nihilo twice (26 of 26 in June), Folktale, Sandhill, Nighthawk Road, Cadence (where the cut-off welded two songs into a 9 minute 47 second clip), the airport private gig, Intrigue twice, Upper Mission (25 of 25 named), BB Hair Studio, Gallagher’s Canyon, the Food Bank market and Rose Hill in October, and every older folder of clips I’d already cut, back to 2022. On disk today: 323 reels from the 16 whole gigs it split, and 65 more from those older clips.
Tools
- Claude Code
- Claude Sonnet
- Python
- librosa
- ffmpeg
- Whisper large-v3 (MLX)
- faster-whisper
- MMS forced alignment
- LRCLIB
- Pillow
- Demucs
- Gradio
- Docker







