Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
Show HN app showing where you sing off-key.
Extract
Learn to sing the songs you love. · singonkey.app Saving shower singers from themselves since 2026. Me singing along to a song OnKey learned from one play. The full demo, with sound. OnKey is a free, open-source singing trainer for the Mac. Play a song in Spotify, Apple Music, or YouTube in a browser, and sing along. The first time, you get the lyrics, and OnKey learns the singer's melody when the song ends. After that, the notes scroll towards you, your pitch is drawn over them, and you get a score with a report on every line. OnKey doesn't provide, stream or download music. Your own music app plays it. Install You need a Mac with Apple Silicon (M1 or later) and macOS 14.2 or later. Download OnKey.dmg (from the latest release), open it and drag OnKey to Applications. Setup asks for the microphone, to hear you, and for system audio recording, to hear the music app. It also asks whether OnKey may follow Spotify and Apple Music: choose Listen only and it follows songs by their sound alone. Getting started walks through it, and the FAQ answers the usual questions. How it works When a song ends, OnKey learns it on your Mac: a model separates the lead vocal from the music, CREPE tracks the singer's pitch, and the GAME note model turns it into one bar per syllable. On later plays it finds its place from the music itself and tracks your voice live. Singing an octave down counts, and being a touch late isn't punished. How it works and Scoring have the details. Privacy OnKey never saves the music it listens to. It analyses the sound in memory as it plays. Your recordings and the songs it learns stay on your Mac (a take sung over speakers can contain some of the music). There's no account, no analytics and no crash reporting. These requests do go out: Shazam (Apple): a short signature of the music app's sound, not the audio and never your mic, to name a song OnKey hasn't learned when the music app doesn't say what's playing. LRCLIB: the song's artist, title, album and length, to fetch lyrics. iTunes Search and Lookup (Apple): an artist and title, or the ID Shazam returned, for covers and the song's length. The cover images come from Spotify's, Apple's or YouTube's image hosts. GitHub: a check for a new version a minute after launch and once a day, and its download. Settings has a switch for Shazam, for lyrics and for the update check. Privacy lists everything OnKey keeps and sends, and scripts/release-hosts.txt lists every web address in a release. Using OnKey …