HNHacker News
TopNewBestAskShowJobs

dsmurrell

275 karma · joined February 2, 2016

submissionscomments
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
Building in a range finder now, and a filter for the songs in your range.

Transposition is difficult if OnKey isn't playing the song itself... maybe if it allows you to play your own mp3s later, then it could be done.

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
Nice :)
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
OnKey already ignores octaves.
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
Sure. I'll let you know when I make a start on that one, if you make a start first, let me know!
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
I love that you love this!
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
Will do, check out https://github.com/dsmurrell/onkey/issues/1 to register your interest in other platforms. Need to test feasibility.
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
Thank you, I'll take a look.
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
Thanks, will check these out!
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
Thank you. I run Little Snitch myself so I can see what's talking out.
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
Not at the moment but it would be a good feature, I'll try to see what's possible here.
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
Great. Let me know your feedback here, in the GitHub as an issue, or on Discord!
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.
dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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 :)

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
> 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!

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
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.

dsmurrell··on Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key
> 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.

Page 1 of 4Next →