Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key (github.com)
I was pretty terrible at singing, now I’d say I’m bad but not terrible. This is because I’ve been using a singing app (won’t name it here) that scores me on my pitch and timing throughout the song so that I can improve.
Lately however, the app I’ve been using has flooded their song list with songs that aren’t originals. I didn’t like this at all as for me, it’s easier to try to improve when you’re singing along to the original.
So, I asked an agent (Claude Code) if it could write some code to listen to Spotify and also listen to me and see if it could detect both pitches and score me. It impressed me by writing some Python and showing me my pitch in the terminal!
It couldn’t go all the way though and detect the singer’s pitch in real time.
So I found the next best setup and built OnKey, a Mac app that needs to listen to the song once (it doesn’t save it) and then when it’s learnt the song (takes a couple of minutes), you can sing along to the pitch track that it’s learnt. OnKey is free to use and open source under the MIT license.
It can listen to Spotify, Apple Music, and YouTube playing in your browser with the right permissions.
During the build I found that someone had done something similar in Nightingale, but this requires a library of songs exported to disk and who has this in 2026 (maybe some of you ;) - but we need to help the normies too).
You can check out a demo video on the site of me singing (warning given) here: https://singonkey.app
The app sends out to find the song info (short Shazam fingerprint, and looks up song details), lyrics (from LRCLIB), and checks for updates.
The app never sends the music (it doesn’t save this to disk) and your voice. Everything you’d expect to stay private does.
It’s still weak in a few places:
- when the song’s backing is noisy it’s hard to pick the pitch track out
- sometimes it gets a note an octave off
- it’s limited to Apple Silicon Macs, M1 or later, and only macOS 14.2 up because extra drivers aren’t required past this point
- the scoring is built for beginners like me so it’s fairly easy on you
Would love for people to try it out and let me know what works and what doesn’t for them!
sligbad 1 day ago
Part of the struggle is really listening to yourself, and learning how to pick up on your own mistakes.
I hope the tool is helpful, and I hope I don't sound too curmudgeonly when I say don't let the time making and maintaining tools for practice detract from the most important thing, the ur-tool of all learning: more practice.
(Ask me how I know! A common trap for programmers!)
dsmurrell 1 day ago
npunt 1 day ago
A more generalized view is that the design of software should aim for some optimal level of friction between the person and the task (a two-way optimization), rather than simply try to diminish it (one-way).
Also, this is a neat product :)
robotomo 1 day ago
atoav 1 day ago
While it is useful to be able to be precisely on grid if you want to be so — be it with the timing of your notes or the pitches played — many musicians I know are so overly fixated on the metrum of click track or the accurate pitch the forgot how to feel the ebs and flow that comes with great music that is just played in its own space and time. And pitch is no different here, sliding into or out of pitch of being able to sing/play slightly of grid is a very powerful skill.
But technique as the ability to pull it off is one thing, the knowledge when to use it and how much only comes with years of practise.
Nowadays many beginning musicians tie themselves so much to these grids, they can't imagine playing without them. To quote a musician that was asked by the sound engineer to play without click to make the track less mechanical: "That is allowed?"
wnissen 2 days ago
Have you played the Rock Band and similar "rhythm games" that were all the rage in the Wii era? I don't know that it helped my singing per se but gave some incentive to practice.
In case anyone is interested, you can test your relative pitch perception (as opposed to producing the pitch) in this excellent Yale site: https://www.themusiclab.org/quizzes/td I got 15th [sic] percentile!
dsmurrell 2 days ago
https://www.themusiclab.org looks cool, I'll give it a try today when I get a chance.
stevage 1 day ago
> 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.
I really appreciate this level of transparency. Wish it was the standard.
dsmurrell 1 day ago
abktya 1 day ago
dsmurrell 1 day ago
fourneau 1 day ago
If you haven't done any karaoke using DAM/JoySound, etc they have a scoring mode that sits at the top that does two things: one, help you sing on key because we all suck, and two, score then rank you against other singers (anonymously.)
I couldn't tell from the demo, but do you get access to the audio ahead of time? My karaoke project stopped in its tracks because I couldn't afford to secure rights to music and there didn't seem to be a great legal solution to get audio.
dsmurrell 1 day ago
OnKey only listens to what you play through your other apps, then it uses what it's heard to learn the notes and then discards the song and never saves it to disk.
This means that you need to let it listen to the song the first time it plays. You can sing to that song blind (no pitch track) and it will still score you at the end.
What I do is let it listen while a playlist plays through, then when I re-listen it lines up the pitch track with the music as it plays through my music source again.
IANAL, but I think that by listening to the music that people already have access to through their subscriptions, not distributing any music, lyrics, or learned melodies i.e. keeping everything for personal use only (see https://github.com/dsmurrell/onkey#using-onkey-fairly), rights aren't required.
I might do the ranking thing later but this brings some form of centralisation to the project which it currently doesn't have, and I haven't worked out how to stop people gaming that.
fourneau 1 day ago
With respect to rights that’s likely true; too bad streaming services don’t make it easy to use their songs.
enzoaguado 1 day ago
This kind of app is great for getting started and getting a taste of what singing involves, but it would be awesome to cover these other aspects as well, or at least mention their existence for aspiring singers.
dsmurrell 1 day ago
yawgmoth 1 day ago
And then there's "how to read a song", deciding which words are emphasized, where to breathe, modifications to fit your voice, etc.
NikolaNovak 1 day ago
----
Background to my question: I was looking for music teachers for myself and my kids (guitar and piano), and I found two types:
1. Royal Conservatory Curriculum, Lesson 1, Page 1, firmly, formally, and without deviation: You MUST learn notation, theory, and proper everything, first. THEN, 5 years later, you get to have fun :)
2. Let's have fun! If you like it and stick with it, we can tackle advanced topics in a customized manner and see where it takes us :)
I find approach #1 is only valid for people who know they will go far and stick with it (either because their parents force them, or for some other, rare, intrinsic motivation); but it hugely discourages huge number of people who don't have such long-term motivation and dedication yet - it postpones the rewards and makes the initial curve super steep.
So my question is: For a completely casual, random person who sings terribly and wants to get "a little bit less embarrassing / dip their toes"; isn't pitch training usually the first step for them to enable their hearing, rather than the complex vocal techniques?
fg137 1 day ago
My take, without directly addressing your questions: "have fun" doesn't go very far, and you'll discover that if you want to be good at anything, you'll need to put in many hours of practice with endless repetition and go through setbacks and self doubt, none of which is fun. And for sure there are singers and musicians that never go through formal training, including at the highest levels, they are few, when most musicians you know have been learning music since they were kids.
NikolaNovak 1 day ago
My approach, from "nothing" to "beginner", is to give a taste of the "target" - how fun and rewarding it can be. A 7 year old kid who learns how to play Mario Galaxy theme on piano, gets motivated and excited, and then goes through the effort; vs the 7 year old who's sent to music lessons and they spend 2 months on perfect finger positioning for C-major scale. Similarly for adults and guitar - I find teaching them 4 simple chords and strumming which cover 40% of pop songs in 2-4 weeks, gets them hooked and willing to then invest the effort, vs starting with notation and theory and picking hand positioning etc on day 1.
As specific to singing matter at hand, it is my understanding that pitch training will have an immediate, early, quick, and lasting benefit (which is, however arguably, benefited by the app in the post), vs saying "well you can't sing if you don't also do these 5 intermediate-level things right away" (unfair representation, but I've been on the receiving end of it:).
I have a close friend who's an opera singer, and absolutely did proper training from early age, daily, for years -- but, most of us aren't and won't be; my primary point is that early stages of training/learning shouldn't necessarily be the same.
compiler-guy 1 day ago
There are many more people who never make music because it wasn't fun when they tried than potential Mozarts and Beethovens.
yw3410 1 day ago
I completely agree with OP that breath management is the number one issue I hear in a beginner.
dsmurrell 1 day ago
LluisGerard 1 day ago
And it makes sense, you can't add emotions until you cover some of the basics.
This app can work really well once you have breath and placement nailed down and you just want to focus on pitch, but it feels like it can me misleading to people to think they sing good.
dsmurrell 1 day ago
> and in a very monotone way
You should hear me speak, people start yawning :)
OnKey intentionally ignores octaves when scoring so that you can sing inside of your range without straining your voice.
mrkstu 1 day ago
fg137 1 day ago
As an amateur musician who can afford private lessons, I cannot understate how important a teacher is in music learning. You can try to learn things on your own and mess with these stuff, but a teacher goes a long way. They spot your mistakes instantly and help you progress efficiently.
I understand that it is not financially viable to everyone, but seriously, if you are able to, get some professional guidance.
jansan 1 day ago
whynotmaybe 1 day ago
biinjo 1 day ago
Nobody was saying “everyone who owns a Mac Mini” or “everyone who ever has published an iOS app” is ‘an Apple guy’.
whynotmaybe 1 day ago
nopurpose 1 day ago
Looks nice, I sing so badly that I never dare to try if not alone. Maybe this app will help me to improve just little that I can sing along happy birthday quietrly in a corner without anyone turning heads.
dsmurrell 1 day ago
Yes, this was me. My confidence has improved through practise to a point where it only half killed me to post that demo video. My family still ask me to relocate when I'm doing this around them... so I think you can hit the pitches and still not sound amazing.
Unfortunately, the way it works, and to avoid any copyright issues, it can't really operate on phones because you can't listen to other apps on them. Maybe the only way is to share your learnt pitch tracks (trained on the laptop) with a mobile companion app.
james_marks 1 day ago
I wouldn’t take their request to “go somewhere else” as an indictment.
busssard 1 day ago
My little sister asked me to turn music into notation. I built https://om-intelligence.ch/projects/vocal-notation/vocal-not...
feel free to integrate that into your app, the architecture might be a way around mac only..
It might be able to turn any song into singable notation then.
dang 1 day ago
Turn your singing voice into printable notes (in the browser) - https://news.ycombinator.com/item?id=48900686 - July 2026 (26 comments)
dsmurrell 1 day ago