Inspiration

You hear a chord you love. By the time you have paused the song, searched a forum and scrolled past three tutorials, the moment — and the motivation — is gone.

I built Chordfier for that moment. It turns the phone already in your pocket into a practice companion that answers one question fast: what is that chord, and how do I play it?

Hear it. Name it. Play it.

What it does

  • Live mode — point your phone at the music and chords appear as they change, each with a playable diagram.
  • Record & analyze — capture a take; a second on-device pass maps the whole song into a chord timeline with key and tempo.
  • Practice mode — play along with synced diagrams, slow the song down, add a metronome, transpose or loop any section.
  • Bars view — the song laid out bar by bar in 4/4, 3/4 or 6/8, pickup bar included.
  • Tools that stay close — a tuner with automatic string detection, a guitar chord library and a searchable history with folders.
  • Chordfier Pro — piano and ukulele chord diagrams, plus Cloud Sync to carry your library to another device (7-day free trial). Raw audio never leaves the phone.

The AI runs on your phone

Chordfier does not upload your audio to a recognition server. A neural chord-recognition model — adapted from the open-source ChordMini project (MIT) and exported to ONNX — runs locally through ONNX Runtime, fed by a native resampler and a hybrid constant-Q front end.

I measured it on 180 real guitar recordings from the public GuitarSet benchmark:

  • Live mode: 79.9% weighted chord accuracy (WCSR), 85.4% root accuracy
  • Recording analysis: 82.2% WCSR

A 16-frame look-ahead confirmation keeps live results steady instead of flickering between guesses.

Why it matters: it works in a bedroom, a classroom or a basement with no signal — and you can practice, and fail, without being recorded by anyone.

How I built it

Native Android, written entirely in Kotlin with Jetpack Compose and Material 3. Coroutines orchestrate capture, inference and playback; Room keeps the app local-first; WorkManager, Firebase Authentication and Cloud Firestore power the optional sync. RevenueCat is the entitlement authority for Chordfier Pro.

Quality is enforced, not hoped for: 1,400+ automated tests, release lint and signing/configuration checks gate every build in a protected CI pipeline before it reaches Google Play.

RevenueCat: a real subscriber, a real renewal

RevenueCat is not decoration — it is the single source of truth for Pro access:

  • Offering default with monthly and annual packages, store-localized prices and a 7-day free trial for new subscribers.
  • Access comes only from the active pro entitlement in CustomerInfo — never a forgeable local flag — with a visible restore path. Pro unlocks piano and ukulele chord diagrams and Cloud Sync.
  • Validated end to end on a physical Android 16 device: purchase, entitlement, reinstall persistence and restore.

It worked with real people, too: during Shipaton, RevenueCat recorded a paid Google Play subscription and its first renewal, with 72 active customers in the last 28 days.

Transparency note: builds 1.0.22–1.0.24 paused new purchases while I reviewed Chordfier's family-friendly positioning. Version 1.0.25, submitted to Google Play on September 28, brings Chordfier Pro back through RevenueCat, still with no ads — and judges can unlock it with the 7-day free trial.

Challenges

Real rooms are messy: echo, voices, phone microphones. Producing a chord label was never the hard part — producing a stable one, in real time, while capture, analysis, cancellation, saving and Android interruptions (calls, unplugged headphones, rotation) all happen at once, was.

The live engine was accurate but flickered at window seams. Measuring it on real recordings showed where the problem was, and a look-ahead confirmation step fixed it without costing accuracy.

Accomplishments I'm proud of

  • A shipped, publicly available Android app, built solo, from audio engine to store listing.
  • On-device neural chord recognition with reproducible benchmark numbers.
  • A paying subscriber who renewed.
  • 1,400+ automated tests and a release pipeline that fails closed.

What I learned

  • Accuracy you cannot measure is a guess. Benchmark on real recordings, not demos.
  • Stability beats sophistication: a steady "Am" is worth more than a flickering "Am(add9)".
  • Monetization works best when it follows value, not when it blocks it.

What's next

Less live flicker, a wider chord vocabulary (jazz and funk are the weakest styles today), more instruments and more languages — the Portuguese store listing went live on September 28.

Every musician remembers a song they wanted to play but could not figure out. Chordfier makes sure the next one does not get away.

Built With

  • android
  • chordmini
  • coroutines
  • dsp
  • firebase
  • firestore
  • gradle
  • jetpack-compose
  • junit
  • kotlin
  • material3
  • onnx-runtime
  • revenuecat
  • robolectric
  • room
  • workmanager
Share this project:

Updates

Submission history