Skip to content
OnKey

A free, open-source singing trainer for Mac

Learn to sing the songs you love.

Saving shower singers from themselves since 2026

OnKey listens to the music playing on your Mac and learns the singer's melody. Then it shows you a pitch guide as you sing, so you can see where you're sharp or flat.

  • Free and open source (MIT)
  • Apple Silicon, macOS 14.2+
  • Runs on your Mac, no account
  • Never saves the music it listens to
Me singing along, scored as I go.

How it works

  1. Step 1

    Play a song

    In Spotify, Apple Music, or YouTube, the way you already do. OnKey listens along. It doesn't play or download music itself.

  2. Step 2

    The first play teaches it

    When the song ends, OnKey takes a couple of minutes to learn the singer's notes and line up the lyrics.

  3. Step 3

    Sing with the pitch guide

    Next time, the notes scroll towards you and your voice is drawn over them. Green is on the note, red is off.

  4. Step 4

    See how you did

    You get a score, the notes you hit and missed, and your recording to play back with the song.

Want the details? Read exactly how OnKey works, with diagrams.

It listens, but never saves the music

OnKey listens to the music only to learn the melody and keep the notes in time. It never saves or uploads it. What stays on your Mac is the notes it learns and a recording of your mic for each take, so you can hear yourself back.

Privacy & legal
  • No account, no server, no analytics

    What leaves your Mac: a Shazam signature (not audio) to name a new song, the song's name to LRCLIB for lyrics and to Apple for covers, and a daily update check on GitHub.

  • Fair scoring

    Singing an octave lower still counts, and your timing gets 80 ms of slack. Being sharp or flat is what costs you.

  • Headphones or speakers

    Headphones give the most reliable scores. On speakers, your mic hears the song as well as you, so OnKey filters the song out.

Questions

The ones people ask first. All questions.

Does anything leave my Mac?

OnKey never saves or uploads the music it listens to. Your recordings and learned songs stay on your Mac. What does go out:

  • Shazam (Apple): a signature of up to 5 seconds of the music app's sound (not the audio, and never your mic) to name a new song when nothing else can say what's playing. That's YouTube, other apps, or Listen only. Spotify and Apple Music name their own songs, and songs you've sung before are recognised on your Mac. You can turn Shazam off in Settings.
  • LRCLIB: the song's artist, title, album, and length, to fetch synced lyrics (unless Show lyrics is off).
  • Apple: the artist and title to find album covers, and a recognised song's Apple Music id to get its length. The covers themselves load from Spotify's, Apple's, or YouTube's image servers.
  • GitHub: a daily check for a new version, and its download. You can turn this off in Settings.

There's no account, no analytics, and no server of mine. "Report a problem" only saves a file on your Mac, for you to attach to a GitHub issue if you want to. Privacy in full.

Does OnKey provide or download music?

No. Your own music app plays the song (Spotify, Apple Music, or YouTube in a browser). OnKey listens to learn the singer's notes and never saves the music.

What does it keep on my Mac?

For each song: the notes, a fingerprint and Shazam signature, and the lyrics with their timing. For each take: a recording of your mic (about 0.5 MB a minute), your scores, and the lyrics you sang, so you can play it back. It's all in ~/Library/Application Support/audio.onkey.app/ (except a take you share, which is saved as a video in Downloads), and deleting a take or song moves it to the Trash. It never keeps the music, though a take sung over speakers will pick up some of it.

Which permissions does it ask for?
  • Microphone: to hear you sing.
  • System audio recording: to hear the music app or browser that's playing. macOS calls it recording, but OnKey analyses the sound as it plays and doesn't save it.
  • Control of Spotify and Music (asked in setup): to read what's playing and where, and to play, pause, and seek for "Sing it again". Choose "Listen only" in setup, or turn them off under "Let OnKey control" in Settings, and OnKey never sends them anything.
  • Control of your browser (only if you turn YouTube on): the same for a YouTube tab.
Which Macs does it run on?

Apple Silicon (M1 or later) on macOS 14.2 or later. 14.2 is the first version that lets one app hear another app's sound without extra drivers, and the models need Apple Silicon to keep up. 8 GB of memory is enough. Intel Macs aren't supported.

Why no Windows, Linux, or phone version?

OnKey is built on macOS's per-app audio capture and Core ML. Windows can also hear one app's sound, so a port is possible, but I haven't started one. If you'd use it, say so on the Windows issue. Phones don't let one app hear another, so a phone version would need a different approach.

How does it compare? And why not in the browser?

Most singing apps need their own catalogue, backing tracks, or hand-made note charts. OnKey learns from the music you already play, so you practise with the original artist. Songs with a clear lead vocal work best.

A web page can't hear the Spotify or Apple Music app, can't ask them what's playing, and can't use ShazamKit or Core ML. So it's a Mac app.

How is the score worked out?

Every 10 ms that you and the singer both sing, your pitch is compared with theirs. Within half a semitone gets full credit, fading to none at a semitone and a half. Octaves don't count against you, and your timing gets 80 ms of slack. The score is your accuracy, scaled by how much of the singer's part you sang. More in Scoring explained.

What's the licence?

MIT. It's free and the source is on GitHub. The models have their own licences, listed in Credits.

Get OnKey

Free and open source under the MIT licence. A Mac with Apple Silicon (M1 or later), macOS 14.2 or later.