The idea
A phone app you start once at the beginning of band practice and stop at the end. It records the room continuously, then chops the two-hour file into individual takes by detecting the silence between them, and labels each take with a song name — either from someone calling out "take three, Wildfire" or by matching the audio against your previous takes of the same song. What you get back is a scrollable list: song, date, take number, duration, waveform. Not a DAW, not a multitrack recorder. A logbook.
Why build this
Every band already does this badly. Someone props a phone on an amp, gets a 90-minute voice memo named New Recording 47, and nobody ever opens it. The one good take from three weeks ago is in there somewhere, and finding it means scrubbing blindly through an hour of tuning and arguing. Multitrack tools like a Zoom H6 or a laptop running Reaper solve a different problem — they're for tracking, not for remembering.
The reason it's buildable now is that the two hard parts are solved and run locally. Silence-based segmentation has been reliable for years, and on-device speech recognition on a modern phone handles a shouted song title well enough for a fuzzy match against a known setlist. You need a real setlist to match against, not open-vocabulary transcription, which makes the accuracy bar much lower. Audio fingerprinting for the takes where nobody says anything is the same trick Shazam uses, just matched against your own library instead of a commercial one.
Stack sketch
- React Native with Expo,
expo-avfor capture — record to.m4aat 48kHz mono, AAC at 128kbps keeps a two-hour session under 120MB - Background recording via
expo-task-managerplus an Android foreground service, so a locked screen doesn't kill the session - Segmentation with a WebRTC VAD port (
node-vadlogic reimplemented in a native module, orlibfvadvia JSI) — threshold on RMS with a two-second hangover window, discard segments under 30 seconds - On-device ASR with
whisper.cpp(tiny.en, ~75MB) throughwhisper.rn, run only over the 10 seconds before and after each segment boundary rather than the whole file - Fuzzy-match ASR output against the band's setlist with a trigram similarity score; fall back to chromaprint fingerprinting (
fpcalccompiled for mobile) matched against stored takes - SQLite via
op-sqlitefor the local index; audio files stay on the filesystem - Optional sync to a self-hosted rclone target or S3-compatible bucket, so a band shares one archive without a subscription
Scope for v1
In: - Start/stop a session, record in the background - Automatic take splitting with a manual "split here" and "merge these two" editor - Setlist you type in yourself; song assignment by ASR with a one-tap correction - Take list filtered by song, playback with waveform scrubbing - Export a single take as a file to share
Deliberately out: - Multitrack, mixing, effects, any editing of the audio itself - Cloud accounts and multi-user sync - Fingerprint matching (v1 leans entirely on the spoken slate plus manual correction) - Anything that tries to judge whether a take was good
Where it could go
The obvious next layer is comparison. Once you have twelve takes of the same song across eight weeks, you can line them up by tempo and length and show the band that they've been speeding up the bridge by four BPM a month. aubio gives you tempo and onset detection cheaply, and a chart of tempo drift per song is the kind of thing a drummer will actually change behavior over.
After that, sharing. A band wants to send the bass player a link to one take, not a 90MB file over a messaging app. A tiny self-hosted companion — a single Go binary with SQLite and signed URLs — turns the archive into something with links, and links are what get takes listened to. From there the same segmentation pipeline transfers almost unchanged to comedians logging sets, theater groups logging scene runs, and language tutors logging lessons.
Watch out for
Background audio recording is the part that will eat your time: iOS will suspend an app that isn't correctly declaring the audio background mode, and Android OEM battery optimizers kill foreground services anyway, so budget for a "session ended early" recovery path that stitches partial files. Also decide early that recording a room full of people is consent-worthy — a visible in-app indicator and a hard rule against silent starts costs nothing to build and avoids the app becoming something a bandmate resents.