Rendered at 03:23:33 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
sligbad 14 hours ago [-]
I have thoughts about this pedagologically. I think these kinds of tools can be helpful, but the number of rhythm students I have seen who need to break out of the dependence on a visual metronome is rough.
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 14 hours ago [-]
Makes sense! You can enable mini mode (top right) so that you can sing without the pitch track and program at the same time :D... then listen back to your take along with the original and see how you're tracking score wise.
npunt 5 hours ago [-]
Agree, a good teaching tool is one that understands the scaffolds are only temporary and is constantly seeking ways to reduce the presence of scaffolds as learners increase in skill. Most tools don't take on a pedagogical lens so essentially view the user's skill as static, and thus seek to maximally reduce friction because that is what is assumed to add value. This often comes at the expense of the learner.
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 :)
4 hours ago [-]
wnissen 1 days ago [-]
What a fun idea! I love that the song doesn't have to be programmed in by the developer. Will give it a try.
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 21 hours ago [-]
Not played Rock Band myself only some Guitar Hero.
> 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 16 hours ago [-]
Thank you. I run Little Snitch myself so I can see what's talking out.
fourneau 13 hours ago [-]
You built the scoring feature of karaoke that I failed to build a few years ago, this is awesome!
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 12 hours ago [-]
Thanks!
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 8 hours ago [-]
Yeah I wouldn’t worry about the rankings as they’re silly at best, but you do get bragging rights for nailing that song.
With respect to rights that’s likely true; too bad streaming services don’t make it easy to use their songs.
abktya 19 hours ago [-]
I am sure this app will be very useful for my wife and daughter, who spent the whole day singing at the top of their lungs. It will also be a benefit for me, as I’ll get to hear more accurate notes.
dsmurrell 19 hours ago [-]
Great. Let me know your feedback here, in the GitHub as an issue, or on Discord!
enzoaguado 19 hours ago [-]
Singing is about so much more than just hitting the right notes. Breath management is one of the most important skills you can develop to improve your singing. Proper vocal technique helps you avoid injuring your voice when tackling difficult songs. Learning to recognize and use techniques like belting, twang, head voice, chest voice, vocal fry, etc., can really bring your singing to life. Prosody and rhythm training help you develop good timing (one of the most important aspects of music), and there's so much more to it.
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 19 hours ago [-]
I'm not great at any of these things. I do agree with you... do you have links to good resources in this regard? Maybe I can start by linking to them, and then later building the features that make sense into the app.
yawgmoth 17 hours ago [-]
I like Dan Callaway on YouTube. Jeff Rolka is another good teacher. However, singing is complicated and choosing which exercises you'll use to teach folks ... You need 1. Vowel alignment 2. Coordination of voices 3. Breath support and vocal tension management 4. Mouth shape, tongue placement.
And then there's "how to read a song", deciding which words are emphasized, where to breathe, modifications to fit your voice, etc.
NikolaNovak 13 hours ago [-]
If you're willing to elaborate - For what goals and stages, do you require these?
----
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?
compiler-guy 6 hours ago [-]
In my experience, the people who subscribe to type 1 are afraid that a potential Mozart or Beethoven won't reach their full potential because of bad habits and bad instruction. And the people who subscribe to type 2 are afraid that some kid won't have the pleasure of making music because they can't even start making music for years under strict type 1 tutelage.
There are many more people who never make music because it wasn't fun when they tried than potential Mozarts and Beethovens.
fg137 11 hours ago [-]
I doubt you'll get an answer here, and people in "type 1" don't want to talk about type 2.
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 10 hours ago [-]
Absolutely agreed that effort is needed to reach ranks above beginner; my main point/peeve is the steepness of the curve from "nothing" to "beginner", not the work definitely required to go from "Beginner" to "intermediate" let alone "Expert".
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.
yw3410 10 hours ago [-]
No. Pitch is not super important (and almost certainly will iron itself out as the ear improves) and can be a marker of the other issues.
I completely agree with OP that breath management is the number one issue I hear in a beginner.
dsmurrell 14 hours ago [-]
Thanks, will check these out!
LluisGerard 14 hours ago [-]
I've been doing classes for more than a year with an online teacher and it's been amazing and when watching the demo I saw so many of the mistakes I've done in the past and yet the app keeps saying to the singer GREAT and PERFECT but the coordination is all over the place, not to mention an octave lower and in a very monotone way (lack of prosody or emotions).
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 13 hours ago [-]
The scoring is overly lenient at the moment. If I added a few new modes for how harshly someone is scored, I'd add harsher modes.
> 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 11 hours ago [-]
Support transposition and maybe a range finder…
fg137 12 hours ago [-]
This.
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 18 hours ago [-]
You probably cannot imagine how bad some people are at singing. I have people near me who sing completely out of tune, so much that it hurts. I am not an Apple guy, so I cannot test the app myself, but I will definitely send the link at least to those who know themselves that they are terrible at singing, hoping that Christmas will be less painful for my ears this year.
18 hours ago [-]
whynotmaybe 16 hours ago [-]
Please don't mix stereotypes, it's not because I own a Mac mini that I'm an apple guy. Macos is mandatory if you want to publish an app on the app store.
biinjo 16 hours ago [-]
They spoke directly at op and you responded for some reason. Op made an iOS only app and that’s most likely why they referred to them as ‘an apple guy’.
Nobody was saying “everyone who owns a Mac Mini” or “everyone who ever has published an iOS app” is ‘an Apple guy’.
whynotmaybe 13 hours ago [-]
Anyway, for the same reason, just because you make an iOS only app doesn't make you an "apple guy".
lirolero 14 hours ago [-]
[dead]
busssard 11 hours ago [-]
i love the feature where you can select a song to compare to.
Didn't know that external apps can interact with Youtube in a tab in Safari.
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 21 hours ago [-]
> I never dare to try if not alone
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 14 hours ago [-]
Listening to someone practice music is unpleasant to many people, regardless of ability.
I wouldn’t take their request to “go somewhere else” as an indictment.
pheraph 20 hours ago [-]
I think my daughter will love this. How about some simple gamification mechanism? A score or a star rating on how well you performed, maybe combined with a difficulty level?
dsmurrell 20 hours ago [-]
Each song has a difficulty rating from 1 to 5. You can use this to filter your library.
And you can track your scores over the takes you did of a sing in your history. So I think OnKey has you covered on these.
Let me know if it matches what you expect when you try it out.
pheraph 19 hours ago [-]
Awesome, I'm checking it out right now. Just a few quick notes:
- By “difficulty,” I meant that you can set a skill level that's a bit more forgiving if you miss the mark, as opposed to a “pro” level, which may be stricter. I’m thinking especially of kids, who might have more fun with it that way. It would also be nice to have a personal profile to choose from, with your own library (?) or at least your own presets (difficulty, progress, etc.).
- It took me a little while to figure out how the app works. You start a song in Apple Music, and the app records it. I had somehow expected a large search bar in the app that I could use aside from the music suggestions to get started.
- Even though I hadn’t set up Spotify (it wasn’t even displayed), it was still enabled in the settings.
- This is probably a bit outside your scope, but in the german song “An Tagen wie diesen, Die Toten Hosen” some (final) syllables get cut off, and sometimes the bars go down even though the melody goes up (or are the notes transposed an octave when they no longer fit within the scale?).
That's for now, I’ll keep an eye on the project and create issues if my observations become more consistent. Thanks for the project!
dsmurrell 19 hours ago [-]
> By “difficulty,” I meant that you can set a skill level that's a bit more forgiving
Got it! If anything, it's on beginner level right now and is very forgiving and I need to add maybe two levels above it with pro being at the top. Let me know if you think it needs something even more forgiving than how it works currently and I can try to build that in as a 4th level.
> I had somehow expected a large search bar in the app that I could use aside from the music suggestions to get started.
Yeah, the app relies on you finding the music in the way you normally do in your music players, I'll try and make this clearer. Once you have a few songs in your library however, then you can use that to navigate through them or search them up by difficulty and play them.
> Even though I hadn’t set up Spotify (it wasn’t even displayed), it was still enabled in the settings.
Thanks, will check that out.
> or are the notes transposed an octave when they no longer fit within the scale?
Do you mean this... Now and then a note bar is drawn an octave off its neighbours. The cause is the note model (GAME) choosing the wrong octave for that note. It happens most on pop with heavy backing, where a backing vocal or instrument sits an octave away. I've tried to fix, but the evals get worse so I've not managed to fix that issue yet.
There are definitely some issues I haven't been able to solve yet and it creates terrible pitch tracks for some songs. I have an eval set that I'm optimising through changes so hopefully it gets better over time. It might be at the limits of what's possible with the vocal separation, but I'm hoping that it can get better than it is right now with time and effort.
If you yourself sing an octave above or below, it will draw adjust and score you as on key.
> That's for now, I’ll keep an eye on the project and create issues if my observations become more consistent.
Thank you!
pheraph 19 hours ago [-]
PS: There seems to be a bug on my machine. When I press the Play button in the Library, the song screen opens, but the previous song performance is still open there and nothing happens. I have to press the "in Apple Music" in the library; then it switches to Apple Music, where I press Play again and switch back to OnKey. Can't OnKey start playback on its own?
dsmurrell 18 hours ago [-]
Thanks, taking a look now, I'm seeing a few weird things myself here. I'll try to make this smoother and push a new release. Switching from songs loaded in Apple Music to songs loaded in Spotify doesn't work too well at the moment.
criddell 11 hours ago [-]
I understand that being sharp or flat from a target note is called being off-key but I'm wondering where that came from? In my head, off-key would indicate that you are singing or playing a note that isn't the key of the piece (like A♯ if you are in the key of C).
I started thinking about this when trying to play along with stuff on YouTube and discovering that the entire song is sharp (likely sped up during mixing or mastering). Would you describe those songs as being off-key?
dsign 10 hours ago [-]
I don't understand either what, technically, "off-key" means. I mean, sure, in well-known songs the singer needs to sing certain parts at a certain pitch, and it sounds awful when they don't. But say this is a song you are composing. There, you have your chord progression, but the chords and their notes are some sort of guidance. You may compose the song in such a way that the singer sticks strictly to the notes in the chord as much as possible, but that sounds weird and requires no small amount of singing skill. Or you may keep the singer a perfect fourth or a minor third away from some notes of the chord for part of the melody, "off key", and it may still sound good.
esikich 9 hours ago [-]
Notes that aren't part of the chord are called passing tones. Typically, they are tones in the diatonic key the song is in. However, there is no requirement for all chords to be diatonic. When they stray from that, different contexts clue you in to what passing tones would be "correct" in that situation. Say an E major chord in the key of C major. You get to use a G# in that case which is not in the C major scale, and the passing tones that are "in key" are informed by the context of the other chords around that E major.
Wow, this is brilliant, thanks for sharing it! I've had pretty much this app way down on my TODO list for the last 20 years. I was planning a Linux and violin support too.
One of my methods for my pet projects is just to wait for someone else to do it, worked this time :)
I might chuck this into Claude when I have tokens to spare and see how it'll do with my feature request. Are there any specific apple silicone limitations you can remember? I'll send you a PR if you're interested?
> One of my methods for my pet projects is just to wait for someone else to do it, worked this time :)
Happy to be of service!
PRs welcome.
aidenn0 6 hours ago [-]
Does it handle vibrato? A lot of the simple "correct pitch" apps ding you for using vibrato.
dsmurrell 6 hours ago [-]
It handles some mild vibrato because it's quite lenient on scoring you and if you're off pitch a bit you get full score: https://singonkey.app/docs/scoring
I'll bear this in mind though when I add the harsher scoring modes.
drltaidev 17 hours ago [-]
I like the idea, I definitely think there is potential in apps helping with teaching music, of course this isn't anything new, but the direct feedback possibilities have improved a lot with recent ML / AI advancements. As others said, singing is so much more than just hitting the right notes of course, so understanding the scope of the tool is important. But still, it's a neat idea. It's awesome that AI coding tools have made it so much easier to work out these ideas... but also tricky because everyone seems to make their own now, and it's not even per se the best ones that survive.
I've thought about these kinds of apps a lot recently, and am also working on some (not for singing though), I have a programming background (and a PhD in Machine Learning) but still I am impressed by what Claude Code can do so I'm hardly writing a single line of code myself any more. Asking for the right things is still important of course.
dsmurrell 17 hours ago [-]
Yep, this would have taken me maybe a few months (possibly a year) before, learning what I needed to know, and AI brought it down to about 10 days. Also have an ML background but this didn't come into play building this, I got my agent to do the research on what tools were available and which I could use based on their licenses, then created an eval set and tried the tools against one another until I landed on the best set.
Great effort in improving your skills! I guess I can use a similar approach to improve my speaking skills?
dsmurrell 8 hours ago [-]
I have thought about this for my children who I find hard to understand sometimes :) I'm not sure what the right approach is here, I have some ideas but I'd have to test them to see if they work out.
mandeepj 7 hours ago [-]
Great. Maybe create a separate repo so we can collaborate? I can fork it too, if you're okay with that. Hopefully more will join in.
dsmurrell 7 hours ago [-]
Sure. I'll let you know when I make a start on that one, if you make a start first, let me know!
I've got some ideas; let's see how much I can pull off in the remaining months of 2026.
4 hours ago [-]
HummingBirdGif 1 days ago [-]
How are you detecting pitch?
dsmurrell 1 days ago [-]
For the user's pitch OnKey uses CREPE-tiny (https://github.com/marl/crepe) but ported to Rust with the model running on ONNX Runtime. For the singer's pitch also CREPE but the full version.
It's got 3 thumbs up but no indication of which OS they're from... maybe I need two issues.
lukemichael 7 hours ago [-]
Perfecting your voice through learning rather than AI correction is a much better thing IMO. Keep it up
zug_zug 10 hours ago [-]
This is great. Thank you, I love this.
dsmurrell 8 hours ago [-]
I love that you love this!
hensenjuang 19 hours ago [-]
Can you exclude a section from scoring if it picked up a backing vocal instead of the melody?
dsmurrell 18 hours ago [-]
Not at the moment but it would be a good feature, I'll try to see what's possible here.
mochizou 11 hours ago [-]
[dead]
robofanatic 17 hours ago [-]
Great idea. Does it work with any language? Or just English?
dsmurrell 17 hours ago [-]
Works with other languages. Personally, I love this song: TRINIX - Vaitimbora feat. Mari Froes
But find it hard to sing to as I don't speak Brazilian Portuguese so it's hard to match the words.
I will ask my friend if it works for him as he speaks the language.
julianromano 13 hours ago [-]
This is great, any idea of extending it to musical instruments?
dsmurrell 12 hours ago [-]
Thank you.
I suspected that extracting played notes out of songs might be more difficult than vocals, but my agent is telling me that it might be possible given its context around the models the app is currently using. I'll experiment with this.
It might only work for single note instruments.
viraptor 19 hours ago [-]
Ok, I'll be that one today. This seems entirely vibe coded... why is it using webview/tauri? It could be so small and smooth in swift with just a small change to the prompt. People used electron/tauri/whatever to make things easier to write and maintain, but if we're just vibing things anyway, can we go back to respecting resources, please?
I like the idea though. I was using a paid app doing something similar in the past. Keen to get back into it.
dsmurrell 19 hours ago [-]
You're not wrong. I do have a coding background which helps but I'm new to Rust. It started in Python with a web frontend so it somewhat evolved into this.
> why is it using webview/tauri?
Using these makes it easier to port to the other platforms later if I choose to.
About 365 of the 420 MB is the AI models which I decided to bundle so that the app wouldn't have to download additional things after the install.
My agent tells me that writing in native Swift would save (estimate) about 100–170 MB, out of about 1.4 GB when the models are active. And then I'd have to maintain the interface in two or three ways if I decided to make versions for other platforms.
If it does grow though and there are a lot of Mac users, this might be worth it though as you suggest. But I have a lot of project that go precisely nowhere so I always keep this in mind :)
viraptor 19 minutes ago [-]
I meant runtime resources more than the download size itself. It's still 200MB+ per instance of a webview app. Which is not a huge amount on its own, but that's what everyone thinks... and then we get a number of apps with webviews each adding up.
bita_nidir 16 hours ago [-]
In a small defence to webview/tauri, it's pretty smooth and fast, and multi platform free of charge. I'd have done this in Tauri too, but that's just my voice. But I otherwise totally agree with you.
infossgmllc 10 hours ago [-]
very nice. My daughter is in choir. I will have check it out.
morrocanrapist 11 hours ago [-]
Awwwww... so you "bUiLt An ApP", like billions nowadays.
TZubiri 16 hours ago [-]
While an approach of associating "notes" with frequencies and singing right with "hitting the frequencies" is what you may naively consider. I think it's more important to get the intervals right, you can take any starting frequency, and as long as you get the intervals right it will sound right, even if the frequency itself isn't perfect. Whereas if you use a frequency based approach like this you will have an absolute frame of reference instead of a relative one
dsmurrell 16 hours ago [-]
Agreed, but if you're singing to the song, then you'd have to match the vocal pitch of the singer otherwise there would be a clash.
Some other singing apps allow you to transpose the entire song but it's easy for them because they play the music. In OnKey's case, it would have to silence the music from the player then replay it shifted up or down. So this might be possible, I'd have to do some experimentation.
tzs 5 hours ago [-]
> Agreed, but if you're singing to the song, then you'd have to match the vocal pitch of the singer otherwise there would be a clash.
It might be useful to allow just matching the note. E.g., if the singer is singing C5 count the user singing C4 as a match.
dyauspitr 8 hours ago [-]
Is it just me or do others not care about apps anymore? I’ve just “built” everything I use for my self. Reminders app, note taking apps, song recognizers, plant identifiers, ebook readers, trail running apps, workout apps etc. Only problem is I have to have a scheduled job to redeploy them on my iPhone every week. Is there a way to have a self built app on the iPhone that doesn’t need periodic redeployment?
manlymuppet 21 hours ago [-]
The main demo video uses the Red Hot Chilli Peppers as an example. A singing app, for learning to sing, and Anthony Kiedis used as the model.
Red Hot Chilli Peppers. Anthony Kiedis.
It's like if you had let Shaquille O'Neal teach you how to shoot threes.
dsmurrell 20 hours ago [-]
Yes, I got this from a friend... "Lol, I could t tell the difference between you and Tony Kiedis!"
I'm terrible at detecting sarcasm usually, but this one was easy for me.
jansan 18 hours ago [-]
I had to look it up and maybe it helps others understand: Shaquille O'Neal was bad at shooting threes and only made one three-pointer in his entire professional career (he attempted 22).
stevage 16 hours ago [-]
He was also terrible at free throws.
It's weird how famous he got.
yCombLinks 13 hours ago [-]
Tom Brady got 28 rushing touchdowns in 20 years. Josh Allen has 8 in the last 6 games. Weird how famous Tom Brady got.
grokys 18 hours ago [-]
At least they're not using him to learn lyric writing.
manlymuppet 20 hours ago [-]
I now realize this comment may read much more mean-spirted than I intended--not my intention!
This is a great and cool app. I am just joking. Sorry to be an ass.
dsmurrell 20 hours ago [-]
Not at all! It's accurate :)
I'd definitely still let Shaquille O'Neal show me how to shoot threes. Dunking on the other hand could be an issue.
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!)
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 :)
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!
https://www.themusiclab.org looks cool, I'll give it a try today when I get a chance.
> 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.
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.
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.
With respect to rights that’s likely true; too bad streaming services don’t make it easy to use their songs.
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.
And then there's "how to read a song", deciding which words are emphasized, where to breathe, modifications to fit your voice, etc.
----
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?
There are many more people who never make music because it wasn't fun when they tried than potential Mozarts and Beethovens.
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.
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.
I completely agree with OP that breath management is the number one issue I hear in a beginner.
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.
> 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.
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.
Nobody was saying “everyone who owns a Mac Mini” or “everyone who ever has published an iOS app” is ‘an Apple guy’.
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.
Turn your singing voice into printable notes (in the browser) - https://news.ycombinator.com/item?id=48900686 - July 2026 (26 comments)
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.
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.
I wouldn’t take their request to “go somewhere else” as an indictment.
And you can track your scores over the takes you did of a sing in your history. So I think OnKey has you covered on these.
Let me know if it matches what you expect when you try it out.
- By “difficulty,” I meant that you can set a skill level that's a bit more forgiving if you miss the mark, as opposed to a “pro” level, which may be stricter. I’m thinking especially of kids, who might have more fun with it that way. It would also be nice to have a personal profile to choose from, with your own library (?) or at least your own presets (difficulty, progress, etc.).
- It took me a little while to figure out how the app works. You start a song in Apple Music, and the app records it. I had somehow expected a large search bar in the app that I could use aside from the music suggestions to get started.
- Even though I hadn’t set up Spotify (it wasn’t even displayed), it was still enabled in the settings.
- This is probably a bit outside your scope, but in the german song “An Tagen wie diesen, Die Toten Hosen” some (final) syllables get cut off, and sometimes the bars go down even though the melody goes up (or are the notes transposed an octave when they no longer fit within the scale?).
That's for now, I’ll keep an eye on the project and create issues if my observations become more consistent. Thanks for the project!
Got it! If anything, it's on beginner level right now and is very forgiving and I need to add maybe two levels above it with pro being at the top. Let me know if you think it needs something even more forgiving than how it works currently and I can try to build that in as a 4th level.
> I had somehow expected a large search bar in the app that I could use aside from the music suggestions to get started.
Yeah, the app relies on you finding the music in the way you normally do in your music players, I'll try and make this clearer. Once you have a few songs in your library however, then you can use that to navigate through them or search them up by difficulty and play them.
> Even though I hadn’t set up Spotify (it wasn’t even displayed), it was still enabled in the settings.
Thanks, will check that out.
> or are the notes transposed an octave when they no longer fit within the scale?
Do you mean this... Now and then a note bar is drawn an octave off its neighbours. The cause is the note model (GAME) choosing the wrong octave for that note. It happens most on pop with heavy backing, where a backing vocal or instrument sits an octave away. I've tried to fix, but the evals get worse so I've not managed to fix that issue yet.
There are definitely some issues I haven't been able to solve yet and it creates terrible pitch tracks for some songs. I have an eval set that I'm optimising through changes so hopefully it gets better over time. It might be at the limits of what's possible with the vocal separation, but I'm hoping that it can get better than it is right now with time and effort.
If you yourself sing an octave above or below, it will draw adjust and score you as on key.
> That's for now, I’ll keep an eye on the project and create issues if my observations become more consistent.
Thank you!
I started thinking about this when trying to play along with stuff on YouTube and discovering that the entire song is sharp (likely sped up during mixing or mastering). Would you describe those songs as being off-key?
Here's a stress test: https://www.youtube.com/watch?v=hMzIk2pUuNU
One of my methods for my pet projects is just to wait for someone else to do it, worked this time :)
I might chuck this into Claude when I have tokens to spare and see how it'll do with my feature request. Are there any specific apple silicone limitations you can remember? I'll send you a PR if you're interested?
> One of my methods for my pet projects is just to wait for someone else to do it, worked this time :)
Happy to be of service!
PRs welcome.
I'll bear this in mind though when I add the harsher scoring modes.
I've thought about these kinds of apps a lot recently, and am also working on some (not for singing though), I have a programming background (and a PhD in Machine Learning) but still I am impressed by what Claude Code can do so I'm hardly writing a single line of code myself any more. Asking for the right things is still important of course.
Credits for the libs I used are here: https://singonkey.app/docs/credits
I've got some ideas; let's see how much I can pull off in the remaining months of 2026.
The vocal separation for the song uses UVR: https://github.com/Anjok07/ultimatevocalremovergui
You can find more details here: https://singonkey.app/docs/how-it-works
:(
Macs and Linux are so similar now, I hope you'll consider porting someday.
It's got 3 thumbs up but no indication of which OS they're from... maybe I need two issues.
But find it hard to sing to as I don't speak Brazilian Portuguese so it's hard to match the words.
I will ask my friend if it works for him as he speaks the language.
I suspected that extracting played notes out of songs might be more difficult than vocals, but my agent is telling me that it might be possible given its context around the models the app is currently using. I'll experiment with this.
It might only work for single note instruments.
I like the idea though. I was using a paid app doing something similar in the past. Keen to get back into it.
> why is it using webview/tauri?
Using these makes it easier to port to the other platforms later if I choose to.
About 365 of the 420 MB is the AI models which I decided to bundle so that the app wouldn't have to download additional things after the install.
My agent tells me that writing in native Swift would save (estimate) about 100–170 MB, out of about 1.4 GB when the models are active. And then I'd have to maintain the interface in two or three ways if I decided to make versions for other platforms.
If it does grow though and there are a lot of Mac users, this might be worth it though as you suggest. But I have a lot of project that go precisely nowhere so I always keep this in mind :)
Some other singing apps allow you to transpose the entire song but it's easy for them because they play the music. In OnKey's case, it would have to silence the music from the player then replay it shifted up or down. So this might be possible, I'd have to do some experimentation.
It might be useful to allow just matching the note. E.g., if the singer is singing C5 count the user singing C4 as a match.
Red Hot Chilli Peppers. Anthony Kiedis.
It's like if you had let Shaquille O'Neal teach you how to shoot threes.
I'm terrible at detecting sarcasm usually, but this one was easy for me.
It's weird how famous he got.
This is a great and cool app. I am just joking. Sorry to be an ass.
I'd definitely still let Shaquille O'Neal show me how to shoot threes. Dunking on the other hand could be an issue.