[{"data":1,"prerenderedAt":550},["ShallowReactive",2],{"project-50195488":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":46,"post_text":47,"what":48,"said":105,"maker_in_thread":219,"shape":232,"grid":236,"attempts":511,"same_week":512,"maker_shows":259,"maker_hidden":542,"reader_version":543,"card":544},"50195488","OnKey","I'm a bad singer, so I built an app to show where I'm off-key","title","Show HN: OnKey – I'm a bad singer, so I built an app to show where I'm off-key","https:\u002F\u002Fgithub.com\u002Fdsmurrell\u002Fonkey","github.com","dsmurrell",1792677884,2026,237,107,213,4366,5,"notable","consumer_social","karaoke singing practice","desktop_app",[24,25,26,27,28],"karaoke scoring","singing practice","pitch detection","sing along app","off-key","mixed",0.242,{"positive":32,"neutral":33,"mixed":34,"critical":35},14,12,3,6,35,{"idea":38,"privacy":40,"docs":43,"execution":44,"performance":45},{"positive":39,"critical":34},10,{"positive":41,"critical":42},1,0,{"positive":42,"critical":42},{"positive":42,"critical":34},{"positive":42,"critical":42},[34,18,18,34,18,34,34,42,41,18,41,34,42,18,34,34,42,41,42,42,42,34,42,18,34,18,18,18,18,18,41,34,34,34,18,34,42,34,42,41],"Hi all\n\nI 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.\n\nLately 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.\n\nSo, 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",{"problem":49,"audience":55,"pricing":62,"motivation":66,"time_to_build":70,"stack":76,"openness":102,"stage":103,"team_size":104},{"value":50,"source":51,"evidence":52},"Shows where the user is off-key while singing along to songs played in other apps","maker",[53],{"id":54},"post",{"value":56,"source":51,"evidence":57},"Beginner singers who want to practise pitch against original songs",[58,59],{"id":54},{"id":60,"by":11,"text":61},"50205277","> 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…",{"value":63,"source":51,"evidence":64},"Free",[65],{"id":54},{"value":67,"source":51,"evidence":68},"Author is a bad singer and wanted to improve using original songs instead of the other app's non-original catalogue",[69],{"id":54},{"value":71,"source":51,"evidence":72},"About 10 days with an AI agent",[73],{"id":74,"by":11,"text":75},"50206982","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…",[77,83,90,94,98],{"value":78,"source":51,"evidence":79},"Tauri",[80],{"id":81,"by":11,"text":82},"50206127","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…",{"value":84,"source":51,"evidence":85},"Rust",[86,89],{"id":87,"by":11,"text":88},"50199323","For the user's pitch OnKey uses CREPE-tiny (https:\u002F\u002Fgithub.com\u002Fmarl\u002Fcrepe) but ported to Rust with the model running on ONNX Runtime. For the singer's pitch also CREPE but the…",{"id":81,"by":11,"text":82},{"value":91,"source":51,"evidence":92},"Python",[93],{"id":54},{"value":95,"source":51,"evidence":96},"ONNX Runtime",[97],{"id":87,"by":11,"text":88},{"value":99,"source":51,"evidence":100},"CREPE pitch model",[101],{"id":87,"by":11,"text":88},"open_source","launched","solo",{"praise":106,"objections":130,"requests":153,"questions":184,"alternatives":203},[107,123],{"value":108,"source":109,"evidence":110},"Useful idea for learning to sing","commenter",[111,115,119],{"id":112,"by":113,"text":114},"50205351","mkesper","This is a great learning tool! I wish I could use it on Linux. :)",{"id":116,"by":117,"text":118},"50202551","wnissen","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…",{"id":120,"by":121,"text":122},"50207350","bita_nidir","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…",{"value":124,"source":109,"evidence":125},"Privacy transparency about network requests",[126],{"id":127,"by":128,"text":129},"50207169","stevage","> 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…",[131,139,146],{"value":132,"source":51,"evidence":133},"Only runs on Apple Silicon Macs",[134,135],{"id":54},{"id":136,"by":137,"text":138},"50211423","hungryhobbit","> it’s limited to Apple Silicon Macs, M1 or later, :( Macs and Linux are so similar now, I hope you'll consider porting someday.",{"value":140,"source":109,"evidence":141},"Electron-style webview stack is heavy for a native Mac app",[142],{"id":143,"by":144,"text":145},"50205820","viraptor","Ok, I'll be that one today. This seems entirely vibe coded... why is it using webview\u002Ftauri? It could be so small and smooth in swift with just a small change to the prompt.…",{"value":147,"source":51,"evidence":148},"Occasional octave errors in pitch track",[149,150],{"id":54},{"id":151,"by":11,"text":152},"50205923","> 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…",[154,160,170,180],{"value":155,"source":109,"evidence":156},"Linux and Windows support",[157,158,159],{"id":112,"by":113,"text":114},{"id":136,"by":137,"text":138},{"id":120,"by":121,"text":122},{"value":161,"source":109,"evidence":162},"Transposition support",[163,167],{"id":164,"by":165,"text":166},"50211349","mrkstu","Support transposition and maybe a range finder…",{"id":168,"by":11,"text":169},"50207383","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…",{"value":171,"source":109,"evidence":172},"Harsher scoring modes",[173,176],{"id":174,"by":11,"text":175},"50209122","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…",{"id":177,"by":178,"text":179},"50215323","aidenn0","Does it handle vibrato? A lot of the simple \"correct pitch\" apps ding you for using vibrato.",{"value":181,"source":109,"evidence":182},"Mobile support",[183],{"id":60,"by":11,"text":61},[185,192,196],{"value":186,"source":109,"evidence":187},"How pitch is detected",[188],{"id":189,"by":190,"text":191},"50199141","HummingBirdGif","How are you detecting pitch?",{"value":193,"source":109,"evidence":194},"Whether vibrato is handled",[195],{"id":177,"by":178,"text":179},{"value":197,"source":109,"evidence":198},"Whether songs can be excluded from scoring when a backing vocal is picked up",[199],{"id":200,"by":201,"text":202},"50206070","hensenjuang","Can you exclude a section from scoring if it picked up a backing vocal instead of the melody?",[204,208,215],{"value":205,"source":51,"evidence":206},"Nightingale",[207],{"id":54},{"value":209,"source":109,"evidence":210},"DAM\u002FJoySound karaoke scoring",[211],{"id":212,"by":213,"text":214},"50209869","fourneau","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\u002FJoySound, etc they have a scoring mode…",{"value":216,"source":109,"evidence":217},"Rock Band and Guitar Hero",[218],{"id":116,"by":117,"text":118},{"comments":220,"answered":221,"key":222},45,22,[223,226,229],{"id":224,"text":225},"50208749","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…",{"id":227,"text":228},"50205190","Not played Rock Band myself only some Guitar Hero. https:\u002F\u002Fwww.themusiclab.org looks cool, I'll give it a try today when I get a chance.",{"id":230,"text":231},"50207251","Thank you. I run Little Snitch myself so I can see what's talking out.",{"commenters":233,"max_depth":35,"maker_replies":220,"first_comment_mins":234,"lifespan_hours":235},50,257,251,[237,241,243,247,251,255,256,258,261,263,267,269,271,273,276,280,283,286,288,291,294,296,300,303,305,309,312,315,317,321,323,324,327,329,331,333,335,338,339,342,346,348,351,353,355,357,359,361,363,367,369,372,375,379,380,383,384,387,389,393,396,399,400,403,405,407,408,412,414,416,418,420,424,426,428,430,432,434,436,439,443,445,447,449,451,453,456,460,462,465,467,469,473,475,477,478,481,483,487,491,495,497,499,501,503,505,508],[238,42,34,239,240,42],"50208660","project\u002Fneutral\u002Fidea","sligbad",[224,42,42,242,11,41],"maker\u002Fneutral\u002Fdesign",[244,42,18,245,246,42],"50216166","project\u002Fpositive\u002Fidea","npunt",[248,42,42,249,250,42],"50218112","other\u002Fneutral\u002Fidea","robotomo",[252,42,42,253,254,42],"50218713","other\u002Fneutral\u002Fnone","atoav",[116,41,18,245,117,42],[227,41,42,257,11,41],"maker\u002Fneutral\u002Fnone",[127,259,18,260,128,42],2,"project\u002Fpositive\u002Fprivacy",[230,259,42,262,11,41],"maker\u002Fneutral\u002Fprivacy",[264,34,34,265,266,42],"50205932","project\u002Fneutral\u002Fnone","abktya",[268,34,42,257,11,41],"50206147",[212,270,18,245,213,42],4,[272,270,42,262,11,41],"50210710",[274,270,42,275,213,42],"50214243","commenter\u002Fneutral\u002Fnone",[277,18,34,278,279,42],"50205902","project\u002Fmixed\u002Fidea","enzoaguado",[281,18,42,282,11,41],"50206142","maker\u002Fneutral\u002Fdocs",[284,18,34,282,285,42],"50206953","yawgmoth",[287,18,42,282,11,41],"50208913",[289,18,42,253,290,42],"50209141","NikolaNovak",[292,18,42,253,293,42],"50211513","fg137",[295,18,42,253,290,42],"50212100",[297,18,41,298,299,42],"50212687","project\u002Fcritical\u002Fidea","yw3410",[301,18,42,253,302,42],"50215414","compiler-guy",[304,18,42,282,11,41],"50317254",[306,18,18,307,308,42],"50206444","project\u002Fpositive\u002Fnone","jansan",[310,18,42,275,311,42],"50207211","whynotmaybe",[313,18,42,275,314,42],"50207304","biinjo",[316,18,42,275,311,42],"50209732",[318,18,41,319,320,42],"50208682","project\u002Fcritical\u002Fexecution","LluisGerard",[174,18,42,322,11,41],"maker\u002Fneutral\u002Fperformance",[164,18,34,239,165,42],[325,18,42,326,11,41],"50245200","maker\u002Fneutral\u002Fidea",[328,18,42,326,11,41],"50317229",[330,18,42,322,11,41],"50317204",[332,18,42,253,293,42],"50210711",[334,18,42,282,11,41],"50317263",[336,35,18,245,337,42],"50205233","nopurpose",[60,35,42,257,11,41],[340,35,42,275,341,42],"50208498","james_marks",[343,344,34,239,345,42],"50205582",7,"pheraph",[347,344,42,326,11,41],"50205611",[349,344,34,350,345,42],"50205787","project\u002Fmixed\u002Fexecution",[151,344,42,352,11,41],"maker\u002Fneutral\u002Fexecution",[354,344,42,322,11,41],"50317181",[356,344,42,352,11,41],"50331886",[358,344,41,319,345,42],"50205827",[360,344,42,352,11,41],"50206193",[362,344,42,352,11,41],"50317167",[364,365,42,253,366,42],"50211178",8,"busssard",[368,365,42,257,11,41],"50211310",[370,365,42,253,371,42],"50211461","KolmogorovComp",[373,365,42,253,374,42],"50212123","dang",[376,377,42,253,378,42],"50206924",9,"drltaidev",[74,377,42,257,11,41],[381,39,42,253,382,42],"50207305","TZubiri",[168,39,42,326,11,41],[385,39,34,239,386,42],"50216015","tzs",[388,39,42,322,11,41],"50245100",[390,391,42,253,392,42],"50211296",11,"criddell",[394,391,42,253,395,42],"50212548","dsign",[397,391,42,253,398,42],"50213333","esikich",[120,33,18,245,121,42],[401,33,42,402,11,41],"50208279","project\u002Fneutral\u002Fexecution",[404,33,42,265,11,41],"50326083",[189,406,34,402,190,42],13,[87,406,42,402,11,41],[409,32,34,410,411,42],"50215188","project\u002Fneutral\u002Fperformance","ChrisMarshallNY",[413,32,42,307,11,41],"50245139",[112,415,18,245,113,42],15,[417,415,42,265,11,41],"50205371",[419,415,42,265,11,41],"50326062",[421,422,18,245,423,42],"50214047",16,"mandeepj",[425,422,42,239,11,41],"50214310",[427,422,18,245,423,42],"50214465",[429,422,42,275,11,41],"50214761",[431,422,18,245,423,42],"50215949",[177,433,34,410,178,42],17,[435,433,42,410,11,41],"50215648",[437,433,42,438,11,41],"50317218","project\u002Fpositive\u002Fperformance",[440,441,18,245,442,42],"50214530",18,"lukemichael",[136,444,41,319,137,42],19,[446,444,42,265,11,41],"50213336",[448,444,42,265,11,41],"50326096",[200,450,34,402,201,42],20,[452,450,42,265,11,41],"50206260",[454,450,42,455,11,41],"50317191","project\u002Fpositive\u002Fexecution",[457,458,34,239,459,42],"50209812",21,"julianromano",[461,458,42,239,11,41],"50210937",[463,221,34,265,464,42],"50206817","robofanatic",[466,221,42,265,11,41],"50206878",[468,221,42,265,11,41],"50331865",[470,471,18,307,472,42],"50212841",23,"zug_zug",[474,471,42,275,11,41],"50213871",[143,476,34,350,144,42],24,[81,476,42,402,11,41],[479,476,42,480,144,42],"50218029","commenter\u002Fneutral\u002Fexecution",[482,476,42,480,121,42],"50207412",[484,485,42,253,486,42],"50214410",25,"dyauspitr",[488,489,18,307,490,42],"50212068",26,"infossgmllc",[492,493,41,298,494,42],"50205298",27,"manlymuppet",[496,493,42,275,494,42],"50205316",[498,493,42,275,11,41],"50205325",[500,493,42,265,11,41],"50205321",[502,493,42,253,308,42],"50206467",[504,493,42,253,128,42],"50207194",[506,493,42,253,507,42],"50209780","yCombLinks",[509,493,41,298,510,42],"50206552","grokys",[],[513,518,523,528,532,537],{"id":514,"name":515,"points":516,"category":517},"50224916","Steal My Bitcoin",625,"learning_science",{"id":519,"name":520,"points":521,"category":522},"50238708","TitleArt",409,"creative",{"id":524,"name":525,"points":526,"category":527},"50228115","keybytes",320,"hardware",{"id":529,"name":530,"points":531,"category":527},"50260753","Marelleo",194,{"id":533,"name":534,"points":535,"category":536},"50232312","Big Whale Hunting workforce visualisation",178,"finance_crypto",{"id":538,"name":539,"points":540,"category":541},"50246238","Hob",177,"ai",false,"v2",{"id":545,"name":5,"line":6,"ai":542,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":546,"top":18,"kw":547,"maker":11,"domain":10,"tier":19,"attempts":42,"strip":548,"url":9,"mix":549,"praise":108,"objection":132,"sub":21},50195488,0.24,[24,25,26,27,28],"3553533015130533010003053555551333530301",[32,33,34,35],1794036712643]