NHacker Next
  • new
  • past
  • show
  • ask
  • show
  • jobs
  • submit
▲Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key (github.com)
stevage 6 hours ago [-]
> 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.

I really appreciate this level of transparency. Wish it was the standard.

dsmurrell 6 hours ago [-]
Thank you. I run Little Snitch myself so I can see what's talking out.
sligbad 3 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 3 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.
enzoaguado 9 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.

LluisGerard 3 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 3 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 37 minutes ago [-]
Support transposition and maybe a range finder…
fg137 1 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.

dsmurrell 8 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 6 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 3 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?

fg137 26 minutes 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.

dsmurrell 3 hours ago [-]
Thanks, will check these out!
jansan 7 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.
7 hours ago [-]
whynotmaybe 6 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 5 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 2 hours ago [-]
Anyway, for the same reason, just because you make an iOS only app doesn't make you an "apple guy".
lirolero 3 hours ago [-]
[dead]
criddell 40 minutes 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?

busssard 48 minutes ago [-]
i love the feature where you can select a song to compare to.

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.

dsmurrell 40 minutes ago [-]
Thank you, I'll take a look.
KolmogorovComp 30 minutes ago [-]
really cool! Thanks for sharing
fourneau 2 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 1 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.

manlymuppet 10 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 10 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 7 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 6 hours ago [-]
He was also terrible at free throws.

It's weird how famous he got.

yCombLinks 2 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 7 hours ago [-]
At least they're not using him to learn lyric writing.
manlymuppet 10 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 10 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.

wnissen 17 hours 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 10 hours ago [-]
Not played Rock Band myself only some Guitar Hero.

https://www.themusiclab.org looks cool, I'll give it a try today when I get a chance.

abktya 8 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 8 hours ago [-]
Great. Let me know your feedback here, in the GitHub as an issue, or on Discord!
hungryhobbit 32 minutes ago [-]
> it’s limited to Apple Silicon Macs, M1 or later,

:(

Macs and Linux are so similar now, I hope you'll consider porting someday.

viraptor 9 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 8 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 :)

bita_nidir 5 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.
morrocanrapist 12 minutes ago [-]
Awwwww... so you "bUiLt An ApP", like billions nowadays.
nopurpose 10 hours ago [-]
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 10 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 4 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 9 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 9 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 9 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 9 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 9 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 8 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.
bita_nidir 5 hours ago [-]
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?

dsmurrell 4 hours ago [-]
The Mac only parts are in https://github.com/dsmurrell/onkey/tree/main/src-tauri/nativ.... I believe that Linux would need PipeWire and MPRIS in their place.

> 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.

drltaidev 6 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 6 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.

Credits for the libs I used are here: https://singonkey.app/docs/credits

HummingBirdGif 22 hours ago [-]
How are you detecting pitch?
dsmurrell 22 hours 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.

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

julianromano 2 hours ago [-]
This is great, any idea of extending it to musical instruments?
dsmurrell 1 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.

mkesper 10 hours ago [-]
This is a great learning tool! I wish I could use it on Linux. :)
dsmurrell 10 hours ago [-]
Noted, I haven't done a feasibility test yet, but I do have an issue up here to vote on: https://github.com/dsmurrell/onkey/issues

It's got 3 thumbs up but no indication of which OS they're from... maybe I need two issues.

hensenjuang 8 hours ago [-]
Can you exclude a section from scoring if it picked up a backing vocal instead of the melody?
dsmurrell 8 hours ago [-]
Not at the moment but it would be a good feature, I'll try to see what's possible here.
mochizou 53 minutes ago [-]
[dead]
robofanatic 6 hours ago [-]
Great idea. Does it work with any language? Or just English?
dsmurrell 6 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.

TZubiri 5 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 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.

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.

MINECRAFT_BIOLO 25 minutes ago [-]
[dead]
usefulbasis 2 hours ago [-]
[flagged]
learntoplaypitc 2 hours ago [-]
[flagged]
1 days ago [-]
kornelhal 22 hours ago [-]
[dead]
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact
Rendered at 16:50:34 GMT+0000 (Coordinated Universal Time) with Vercel.