[{"data":1,"prerenderedAt":529},["ShallowReactive",2],{"project-49373456":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":5,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":33,"aspects":34,"strip":45,"post_text":47,"what":48,"said":82,"maker_in_thread":156,"shape":167,"grid":171,"attempts":491,"same_week":492,"maker_shows":37,"maker_hidden":521,"reader_version":522,"card":523},"49373456","simedw.com","I trained a 125M model to autocomplete piano on-device","title","Show HN: I trained a 125M model to autocomplete piano on-device","https:\u002F\u002Fsimedw.com\u002F2026\u002F08\u002F20\u002Fmidi-autocomplete\u002F","simedw",1787227478,2026,598,117,34,4366,1,"legend","creative","music generation","mobile_app",[23,24,25,26,27],"midi autocomplete","piano ai","on-device music model","core ml","music transformer","mixed",0.283,{"positive":31,"neutral":31,"mixed":17,"critical":32},23,6,53,{"idea":35,"docs":38,"execution":40,"design":43,"performance":44},{"positive":36,"critical":37},15,4,{"positive":39,"critical":39},0,{"positive":41,"critical":42},3,2,{"positive":17,"critical":39},{"positive":39,"critical":39},[39,39,46,46,39,41,41,46,17,41,39,46,46,17,39,39,17,17,39,46,46,46,46,41,46,41,46,46,46,39,46,46,41,46,46,41,39,46,46,17],5,"I trained a 125M-parameter transformer to autocomplete piano performances in real time (~108 notes\u002Fsec on an iPhone 15).\n\nThe idea is basically GitHub Copilot or Tabnine, except instead of prompting it with code, you prompt it by playing a few notes on a MIDI piano. The model then continues what you played, entirely on-device.\n\nThe app is free if anyone wants to try it. Happy to answer questions about the model, training, Core ML, or the many things that didn't work.",{"problem":49,"audience":55,"pricing":56,"motivation":60,"time_to_build":55,"stack":68,"openness":79,"stage":80,"team_size":81},{"value":50,"source":51,"evidence":52},"Continues a user's piano playing in real time with generated notes","maker",[53],{"id":54},"post",null,{"value":57,"source":51,"evidence":58},"Free app",[59],{"id":54},{"value":61,"source":62,"evidence":63},"Wanted the fun of working through the problem himself rather than implementing others' research","commenter",[64],{"id":65,"by":66,"text":67},"49376107","elwell","OP found a different source of joy: \"I wanted the fun of working through the problem myself, rather than just implementing someone else’s research.\"",[69,75],{"value":70,"source":51,"evidence":71},"Core ML",[72],{"id":73,"by":10,"text":74},"49375022","The biggest speed improvement came from changing the note representation when I switched to compound note events: roughly 5× fewer autoregressive passes per note. For the current…",{"value":76,"source":51,"evidence":77},"125M-parameter transformer",[78],{"id":54},"free","launched","unknown",{"praise":83,"objections":84,"requests":96,"questions":115,"alternatives":134},[],[85],{"value":86,"source":62,"evidence":87},"Musical output sounds weak or run-on in places",[88,92],{"id":89,"by":90,"text":91},"49383322","jancsika","The end of the AI's first sub-phrase in the video is wrong. You started by playing a simple I - vii - I as the first sub-phrase. Then the AI started its response with a dominant…",{"id":93,"by":94,"text":95},"49377995","rajivayyangar","The results strike me as comparable or worse than you could get with a Markov model. I think it reveals the gap in understanding between LLMs and music. I think you need to…",[97,108],{"value":98,"source":62,"evidence":99},"Send output as MIDI to external devices or player piano",[100,104],{"id":101,"by":102,"text":103},"49375371","Tepix","Oh, a cool idea! I just tried it, works pretty well. Kudos! One feature request: Instead of playing the AI-generated audio solely through the iPhone's speakers, add an option to…",{"id":105,"by":106,"text":107},"49378917","axoltl","Looks neat! I'd love for it to feed the MIDI notes back into my player piano instead of playing out of my iPhone's (comparatively tinny) speakers though.",{"value":109,"source":62,"evidence":110},"Fine-tune on personal MIDI data",[111],{"id":112,"by":113,"text":114},"49383703","potatoman22","I have about 60 hours of my own playing in midi data. I wonder if I could fine-tune this model on that?",[116,127],{"value":117,"source":62,"evidence":118},"Are the model weights available?",[119,123],{"id":120,"by":121,"text":122},"49376365","abidlabs","Are the weights of the model available?",{"id":124,"by":125,"text":126},"49374340","lvbyte","Any way to share the actual model? I don't have an iPhone to run the app on.",{"value":128,"source":62,"evidence":129},"How large was the training data?",[130],{"id":131,"by":132,"text":133},"49375352","jasonjmcghee","I think this is a great project and very HN. Not sure why the comments are so focused on the deliverable- you learned way more and had a much more interesting experience. One…",[135,142,149],{"value":136,"source":62,"evidence":137},"Google Magenta Realtime 2",[138],{"id":139,"by":140,"text":141},"49374837","speedgoose","Talking about AI music with some live human MIDI inputs, Magenta Realtime 2 was released a few weeks ago and is pretty fun. https:\u002F\u002Fmagenta.withgoogle.com\u002Fmagenta-realtime-2",{"value":143,"source":62,"evidence":144},"Anticipatory Music Transformer",[145],{"id":146,"by":147,"text":148},"49377302","bravura","You could also distill the fabulous Anticipatory Music Transformer from Stanford. https:\u002F\u002Fcrfm.stanford.edu\u002F2023\u002F06\u002F16\u002Fanticipatory-music-transformer.html Also consider checking…",{"value":150,"source":62,"evidence":151},"Francois Pachet's Continuator",[152],{"id":153,"by":154,"text":155},"49374339","timmb","Reminds me of Francois Pachet’s Continuator (all the way back in 2003, using hierarchical markov models) https:\u002F\u002Fwww.francoispachet.fr\u002Fcontinuator\u002F",{"comments":32,"answered":46,"key":157},[158,161,164],{"id":159,"text":160},"49373737","Thank you. Yes, I think I’ve gotten it to roughly a GPT-2 level: good enough to share, but with a lot of room left to improve. I think adding some kind of bar\u002Fmeasure token might…",{"id":162,"text":163},"49374528","If the attribute describes the current note, I would first try adding it as another field\u002Fhead on the note event. For example: ``` NOTE( pitch, delta_onset, duration,…",{"id":165,"text":166},"49374689","Yes, some kind of planning step is on my TODO list. Another thing I want to try is generating a few continuations in parallel, picking the one that looks best, and then…",{"commenters":168,"max_depth":37,"maker_replies":32,"first_comment_mins":169,"lifespan_hours":170},84,22,58,[172,176,179,182,185,187,190,192,196,199,202,205,208,211,215,218,221,224,227,230,233,234,239,241,244,247,250,252,255,259,262,264,267,270,273,277,280,283,286,289,292,294,297,300,303,305,309,312,314,317,322,323,327,329,333,337,339,343,348,350,354,357,359,363,368,369,372,376,380,384,386,388,393,396,399,403,407,409,413,418,420,424,428,430,432,436,440,444,448,451,455,457,461,464,468,472,476,480,483,487],[173,39,39,174,175,39],"49375955","other\u002Fneutral\u002Fnone","tom_vidal",[177,39,39,174,178,39],"49376468","vunderba",[180,39,39,174,181,39],"49377632","dyzone",[183,39,39,174,184,39],"49378688","hiccuphippo",[186,39,39,174,175,39],"49381385",[188,39,39,174,189,39],"49382493","argimenes",[131,17,46,191,132,39],"project\u002Fpositive\u002Fidea",[193,17,41,194,195,39],"49379877","project\u002Fneutral\u002Fdocs","munksbeer",[197,42,46,191,198,39],"49378199","joshuamerrill",[200,42,39,174,201,39],"49378380","nuancebydefault",[203,42,39,174,204,39],"49381713","stickfigure",[206,41,39,174,207,39],"49374380","goda90",[209,41,39,174,210,39],"49378430","ronyeh",[212,37,41,213,214,39],"49375748","project\u002Fneutral\u002Fidea","karmelapple",[216,37,41,194,217,39],"49376744","h2aichat",[219,37,41,194,220,39],"49376787","senbrow",[222,37,39,174,223,39],"49377511","gregsadetsky",[225,37,39,174,226,39],"49378617","marssaxman",[228,37,46,191,229,39],"49377662","ABNW",[231,46,39,174,232,39],"49377213","mare5x",[153,32,39,174,154,39],[235,236,17,237,238,39],"49375833",7,"project\u002Fcritical\u002Fidea","ghm2199",[65,236,41,240,66,39],"maker\u002Fneutral\u002Fnone",[242,236,39,243,238,39],"49376152","commenter\u002Fneutral\u002Fnone",[245,236,39,243,246,39],"49377337","yieldcrv",[248,236,39,243,249,39],"49379719","debugnik",[251,236,39,243,246,39],"49379952",[253,236,39,174,254,39],"49377536","jeffreygoesto",[256,257,41,213,258,39],"49374197",8,"heikkilevanto",[260,257,46,191,261,39],"49374268","morkalork",[263,257,39,174,178,39],"49374952",[265,257,46,191,266,39],"49375275","Naitik88",[268,257,17,237,269,39],"49376213","altmanaltman",[271,257,39,174,272,39],"49384040","zapperdulchen",[274,275,39,174,276,39],"49374623",9,"hliyan",[278,275,39,174,279,39],"49374975","killerstorm",[281,275,39,174,282,39],"49375153","HPsquared",[284,275,39,174,285,39],"49375674","andai",[287,275,39,174,288,39],"49377518","otabdeveloper4",[290,275,39,174,291,39],"49375207","xtracto",[293,275,39,174,285,39],"49375685",[93,295,17,296,94,39],10,"project\u002Fcritical\u002Fexecution",[298,295,39,243,299,39],"49380020","Computer0",[301,295,39,174,302,39],"49382941","shannifin",[89,304,17,296,90,39],11,[306,307,39,174,308,39],"49374300",12,"devonsolomon",[310,307,39,243,311,39],"49374379","mh-",[313,307,46,191,266,39],"49375258",[101,315,46,316,102,39],13,"project\u002Fpositive\u002Fdesign",[318,319,41,320,321,39],"49373700",14,"project\u002Fmixed\u002Fexecution","evalystai",[159,319,39,240,10,17],[324,36,46,325,326,39],"49400045","project\u002Fpositive\u002Fexecution","alexandermorgan",[146,328,41,213,147,39],16,[330,331,46,191,332,39],"49374316",17,"pil0u",[334,335,39,174,336,39],"49375900",18,"sagebird",[338,335,39,174,66,39],"49376126",[340,341,46,191,342,39],"49373738",19,"isoprophlex",[344,345,41,346,347,39],"49374420",20,"project\u002Fneutral\u002Fexecution","davidajackson",[162,345,39,349,10,17],"project\u002Fneutral\u002Fdesign",[351,352,41,349,353,39],"49377970",21,"Ohentis",[355,169,46,325,356,39],"49374249","subhajeet2107",[165,169,39,358,10,17],"maker\u002Fneutral\u002Fexecution",[360,31,41,361,362,39],"49376572","maker\u002Fneutral\u002Fidea","butlike",[364,365,41,366,367,39],"49374793",24,"maker\u002Fneutral\u002Fperformance","gaya3bollineni",[73,365,39,366,10,17],[370,365,46,371,266,39],"49375252","maker\u002Fpositive\u002Fexecution",[373,374,41,213,375,39],"49374355",25,"leobg",[377,378,46,191,379,39],"49384033",26,"ingvay7",[381,382,41,213,383,39],"49380651",27,"ryanschneider",[139,385,39,174,140,39],28,[105,387,41,213,106,39],29,[389,390,46,391,392,39],"49374384",30,"maker\u002Fpositive\u002Fnone","jwr",[394,390,39,243,395,39],"49376338","Tostino",[397,398,39,174,181,39],"49377781",31,[400,401,39,174,402,39],"49377036",32,"oleggromov",[404,405,46,191,406,39],"49398867",33,"prabhanjana_c",[408,15,46,191,217,39],"49376725",[410,411,46,191,412,39],"49380875",35,"alexchantavy",[414,415,46,416,417,39],"49373678",36,"project\u002Fpositive\u002Fnone","yoouareperfect",[112,419,41,213,113,39],37,[421,422,39,174,423,39],"49376750",38,"micromacrofoot",[425,426,41,358,427,39],"49374571",39,"arkmm",[429,426,39,358,10,17],"49374651",[120,431,41,194,121,39],40,[433,434,46,191,435,39],"49404181",41,"agentdash007",[437,438,41,213,439,39],"49383191",42,"nl",[441,442,46,191,443,39],"49381911",43,"cillianpower",[445,446,41,213,447,39],"49378775",44,"dandaka",[124,449,41,450,125,39],45,"project\u002Fneutral\u002Fnone",[452,453,41,240,454,39],"49375713",46,"theschwa",[456,453,39,240,10,17],"49375917",[458,459,39,174,460,39],"49374948",47,"the_black_hand",[462,463,39,174,181,39],"49377832",48,[465,466,41,346,467,39],"49376258",49,"bilsbie",[469,470,46,191,471,39],"49376221",50,"noman-land",[473,474,46,391,475,39],"49375187",51,"aghilmort",[477,478,46,416,479,39],"49376286",52,"amarbirsingh",[481,33,17,237,482,39],"49386112","fl0id",[484,485,17,237,486,39],"49396690",54,"adrithmetiqa",[488,489,41,366,490,39],"49375272",55,"mandeepj",[],[493,498,502,507,511,516],{"id":494,"name":495,"points":496,"category":497},"49378768","Huzzah",384,"dev_tools",{"id":499,"name":500,"points":501,"category":19},"49419351","rack-02",240,{"id":503,"name":504,"points":505,"category":506},"49437049","LatticeDB",190,"data",{"id":508,"name":509,"points":510,"category":506},"49421806","PicoMQ",159,{"id":512,"name":513,"points":514,"category":515},"49410814","Thoreau BASIC",156,"languages",{"id":517,"name":518,"points":519,"category":520},"49435675","CarWatch",146,"ai",false,"v2",{"id":524,"name":5,"line":6,"ai":521,"cat":19,"year":12,"points":13,"comments":14,"rec":28,"s":525,"top":17,"kw":526,"maker":10,"domain":5,"tier":18,"attempts":39,"strip":527,"url":9,"mix":528,"praise":-1,"objection":86,"sub":20},49373456,0.28,[23,24,25,26,27],"0055033513055100110555535355505535530551",[31,31,17,32],1793991164235]