FAQ
Before you download
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.
Using OnKey
Why does the first play not show any notes?
OnKey learns a song after its first play ends, so there are no notes yet. You see the lyrics instead, a line at a time (in time with the singer for the first minute and a half or so, except on 8 GB Macs). Sing along anyway, as that take is still scored. From the second play, the notes scroll towards you with the words on them.
Why can't I sing a song yet? It says "Learning…"
Learning happens after the song ends and took two to three minutes on my Mac. The "Sing it again" button shows the progress and comes back when it's done. Other songs stay singable meanwhile. One song is learned at a time, so songs played back to back say "Waiting to learn" until their turn. Learning also pauses while you sing a song OnKey already knows.
What should I sing first?
OnKey suggests songs it follows well. They show on the Sing page when nothing's playing, at the bottom of the Library, and when you click the OnKey logo on the Sing page. Each has links to Spotify and Apple Music.
Will it slow my Mac down?
Singing a learned song is light: 15 to 19% of one CPU core on my Mac. Learning is the heavy part, so OnKey does it after the song ends, one song at a time, at low priority. While learning, it used about 1.7 GB of memory (2.4 GB at most). On Macs with less than 32 GB, the models are unloaded after each song.
Do I need headphones?
No, but they give the most reliable scores. On speakers, echo cancelling takes the song back out of your mic: 20 dB or more on a MacBook's speakers, 8 to 14 dB on external speakers. Loud music can still leak through.
Can I sing in a lower or higher octave?
Yes. An octave away from the singer counts as on the note.
Which music apps work?
Spotify, Apple Music, and YouTube in Chrome, Brave, Edge, or Safari. By default, OnKey asks Spotify and Apple Music what's playing, so positions are exact, and it can play and pause them from its own window. With "Listen only" (every app off under "Let OnKey control" in Settings), it recognises songs by their sound. YouTube is followed by its sound unless you let OnKey control your browser.
Why use Shazam? Isn't that sending audio to Apple?
ShazamKit sends a signature (a fingerprint worked out on your Mac), not the audio, and never your mic. OnKey only asks Shazam when nothing else can name the song: YouTube, other apps, or Listen only. Songs you've sung before are recognised on your Mac first. Turn off Settings → “Use Shazam to name new songs” and nothing goes to Apple, but only songs you've already learned are recognised by sound.
Can I turn the lyrics off?
Yes, in Settings → “Show lyrics”. With it off, OnKey asks LRCLIB for nothing and shows no words. Lyrics already on your Mac are hidden, not deleted. The notes and score work as usual, and songs learned with lyrics off get their notes from the melody alone.
Some songs score oddly. Why?
Rapped or spoken songs barely have a melody to score, and harmonies or choirs can confuse which voice is the tune. See the limits.
Something went wrong. How do I report it?
Use Report a problem in Settings, the Help menu, or a take's page. It shows you what goes in the zip (the last three days of OnKey's log and a summary of each play, with song names but no lyrics, audio, or recordings) and saves it on your Mac. Nothing is uploaded. Then open an issue on GitHub and attach the zip if you're happy to. Have a look at Troubleshooting first.
How do I get updates?
Automatically. Once a day OnKey checks GitHub for a new version and downloads it in the background (about 350 MB, as the models are inside the app). It installs when you choose Restart to update or when you quit, never mid-song. You can turn the checks off in Settings.