dsmurrell/onkey

Learn to sing the songs you love. A free, open-source singing trainer for Mac that listens to the music you play.

What is OnKey?

OnKey is a free, open-source singing trainer for Mac. It helps you learn to sing songs you already love by showing you the melody and giving you feedback on your pitch — like a karaoke coach that listens to you.

It does not provide, stream, or download any music. Your own music app (Spotify, Apple Music, or YouTube in a browser) plays the song; OnKey listens and guides you.

The experience

  1. First play: You get the lyrics on screen while the song plays. When the song ends, OnKey learns the singer's melody from that one play.
  2. Later plays: The notes scroll toward you like a lane, your live pitch is drawn over them (green where you're on the note), and you get a score with a line-by-line report.

How it learns and scores

When a song ends, OnKey processes it entirely on your Mac:

  • A model separates the lead vocal from the music.
  • A pitch tracker (CREPE) follows the singer's melody.
  • A note model (GAME) converts that into one bar per syllable.

On later plays, it finds its place in the song by listening to the music itself, and tracks your voice live. It's forgiving: singing an octave down counts, and being slightly late isn't punished.

Requirements

  • Apple Silicon Mac (M1 or later)
  • macOS 14.2 or later
  • Download the OnKey.dmg from the latest release, drag to Applications

Setup asks for microphone access (to hear you) and system audio recording (to hear the music app). You can choose Listen only mode, where OnKey follows songs by sound alone rather than by reading what Spotify/Apple Music say.

Privacy

  • OnKey never saves the music it listens to — it analyses sound in memory only.
  • Your recordings and learned songs stay on your Mac. (A take sung over speakers may contain some of the music.)
  • No account, no analytics, no crash reporting.

Network requests it does make:

  • Shazam (Apple): a short signature of the music app's sound (not the audio, never your mic) to name a song when the music app doesn't say what's playing.
  • LRCLIB: sends artist, title, album, and length to fetch lyrics.
  • iTunes Search/Lookup (Apple): for covers and song length.
  • GitHub: checks for updates a minute after launch and once a day.

All of these can be switched off in Settings.

Fair use

OnKey is for home practice with music you're entitled to play. The README asks users to:

  • Keep its melody transcriptions private (don't share or publish them).
  • Use the Share feature to share a take — it makes a short video of your voice and pitch line with no music, and you can add a song from Instagram's licensed music library.
  • Use a licensed karaoke service for bars or events (OnKey's lyrics come from a free community database).
  • Not modify OnKey to save the music.

Rights holders can contact the author at hello@singonkey.app.

Building from source

You can build your own copy if you don't trust the official build. You need an Apple Silicon Mac with Xcode command-line tools, Rust, Node, and Python 3. The README provides the exact commands (clone, install dependencies, fetch models with SHA-256 verification, then npx tauri build).

One limitation: a self-built version cannot ask Shazam to name a new song (that needs the author's Apple signature). Spotify and Apple Music report what's playing themselves, so this only affects YouTube and Listen-only mode.

Official releases are signed with the author's Apple Developer ID and notarised by Apple.

Licence and credits

  • MIT licence (see LICENSE).
  • Modified versions can't be called "OnKey" or use its icon; crediting the original is appreciated.
  • OnKey uses CREPE, GAME, wav2vec 2.0, and UVR's MDX-Net Karaoke 2 for its audio processing.
  • Made by Daniel Murrell.

Help

The app has a Report a problem option that saves a zip of numbers and logs (no audio, no recordings of you) for attaching to a GitHub issue. There's also a Discord server, an email address, and troubleshooting docs.


All facts above are taken directly from the project's README.

Related

  • Project
  • Project
  • Project
  • Project