Skip to content

Key Kapture

Company:
Side project
Year:
2026
Tasks:
Design, Build, Launch
Key Kapture: dark interface with purple sound waves turning a recording into sheet music

Key Kapture

Side project • 2026 • Webapp

From sound to score.

story.

I write songs at the piano. I play them and record them… and then they stay recordings forever, because writing them down takes far too long.

I trained classically (ARCT in Piano Performance, Royal Conservatory of Music) and spent years as a first violinist in the Niagara Youth Orchestra. I know what good sheet music looks like. I just never had the patience to handwrite mine. So I built the thing I always wished existed.

how it works.

Drop in an audio file (MP3, WAV or M4A). Transkun, an open-source model trained only on piano, detects the notes. Tonal handles the music theory: key, harmony, and naming every chord, inversions included. OpenSheetMusicDisplay renders it as readable sheet music.

From there you can transpose to any key, fix the key, time signature or downbeat, and export a clean PDF or MusicXML for MuseScore or Sibelius. It all runs on your device. Your audio is never uploaded.

1–2 min

to transcribe a song

~90%

of the way there, then tidy a few bars

0

uploads: audio stays on your device

what was hard.

Designing for output I can’t predict.

Pitch detection works well for clean melodies, but add harmony or complex rhythm and the model can miss chords or misread timing. You can’t mock up every state, so the layout, hierarchy and feedback have to absorb whatever the model produces. It’s the same problem as designing for AI-generated content: be honest that it’s about 90% right, and make the last 10% quick to fix.

getting it right.

The first versions were technically “notes”, but no pianist could play from them. Wrong key, wrong time signature, a tempo twice as fast, and notes the model heard that I never played.

So I used my own training as the quality bar. I played my song June Waltz, compared every bar against what I actually wrote, and marked what was wrong: a melody that should fall E, D, C; a D sharp that kept flipping to E flat; a waltz written in 6/8 instead of 3/4. Each correction became a rule the app now follows on every song, like spelling notes from the chord they belong to and keeping the melody in the right hand, plus tests so the fixes stay fixed. I also switched to a model trained only on piano.

Round by round, same recording

Round 1: one staff in 4/4 at 200 BPM, notes piled on ledger lines
Round 1: one staff, wrong key and time
Round 4: two staves in 6/8, with stray low notes
Round 4: two hands
Round 6: a clean melody over steady chords in 6/8
Round 6: readable
October 6 export of June Waltz: 6/8, scattered bass notes, broken rhythms and chord names that don't match
Oct 6: full export, bars 1 to 7
October 9 version of June Waltz: 3/4 with a steady waltz bass, a clean melody and matching chord names
Oct 9: current version, bars 1 to 20

The example on keykapture.com is now a real transcription with no cleanup or edits. That’s the point I was designing toward: get people 90% of the way there, so the last 10% takes minutes, not an evening.

how I built it.

Figma → Claude Code → GitHub. I designed the first UI in Figma, built it with Claude Code, and learned GitHub along the way. It’s live as a free beta, with a tip jar and a waitlist for paid plans.

Stack: React · TypeScript · Vite · Transkun · Tonal · OpenSheetMusicDisplay · Tailwind · shadcn/ui

Up Next

Colour Analysis