[{"data":1,"prerenderedAt":365},["ShallowReactive",2],{"project-17952355":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":6,"format":21,"keywords":22,"reception":26,"sentiment":27,"stance_mix":28,"scored_comments":33,"aspects":34,"strip":41,"post_text":43,"what":44,"said":90,"maker_in_thread":191,"shape":200,"grid":203,"attempts":326,"same_week":327,"maker_shows":32,"maker_hidden":357,"reader_version":358,"card":359},"17952355","Hacklily","sheet music editor","title","Show HN: Hacklily – sheet music editor","https:\u002F\u002Fwww.hacklily.org","hacklily.org","jnetterf",1536592236,2018,285,49,97,2155,5,"legend","creative","web_app",[6,23,24,25],"lilypond","music notation","online editor","loved",0.235,{"positive":29,"neutral":30,"mixed":31,"critical":32},6,10,2,1,19,{"execution":35,"design":37,"idea":38,"performance":39,"docs":40},{"positive":31,"critical":36},0,{"positive":31,"critical":36},{"positive":36,"critical":36},{"positive":36,"critical":36},{"positive":31,"critical":32},[36,36,36,42,42,42,36,36,36,36,36,36,36,18,36,36,18,42,42,42,42,36,18,42,36,42,36,42,36,36,36,18,36,36,18,42,32,36,18,42],3,null,{"problem":45,"audience":56,"pricing":43,"motivation":43,"time_to_build":43,"stack":63,"openness":87,"stage":88,"team_size":89},{"value":46,"source":47,"evidence":48},"Writing sheet music in LilyPond with live rendering","inferred",[49,53],{"id":50,"by":51,"text":52},"17953375","teach","Very cool. I dug up an unfinished Lilypond arrangement that I'd been working on in 2008 and pasted it in and everything worked perfectly the first time. I think if this had…",{"id":54,"by":11,"text":55},"17953736","Right now, there are 183 active users, and the CPU is staying around 5% on my Ryzen 7 1700. Keeping LilyPond running as a server helps. Can you tell me more about your goals? I'm…",{"value":57,"source":58,"evidence":59},"LilyPond users and music engravers","maker",[60],{"id":61,"by":11,"text":62},"17952467","Thanks! That's useful feedback. Hacklily's audience so far is primarily users who are already Lilypond users, but I'd love to make it more broadly useful.",[64,70,74,81],{"value":65,"source":58,"evidence":66},"LilyPond",[67],{"id":68,"by":11,"text":69},"17953012","Yes! It uses lilypond in docker. https:\u002F\u002Fgithub.com\u002Fhacklily\u002Fhacklily",{"value":71,"source":58,"evidence":72},"Docker",[73],{"id":68,"by":11,"text":69},{"value":75,"source":76,"evidence":77},"Scheme (via LilyPond)","commenter",[78],{"id":79,"by":11,"text":80},"17955983","To parse LilyPond you would first need to write a Scheme interpreter. Once you finally get a tree for the sheet music, rendering in a way that is correct, beautiful, and easy to…",{"value":82,"source":58,"evidence":83},"hackmidi (client-side audio)",[84],{"id":85,"by":11,"text":86},"17955385","For Hacklily, it turns out that the audio is rendered clientside via https:\u002F\u002Fgithub.com\u002Fhacklily\u002Fhackmidi Caching sheet music rendering is a hard problem. For example, a note…","open_source","launched","unknown",{"praise":91,"objections":110,"requests":122,"questions":144,"alternatives":164},[92,99],{"value":93,"source":76,"evidence":94},"Fast live reloading feedback loop",[95,96],{"id":50,"by":51,"text":52},{"id":97,"by":11,"text":98},"17953407","That's super motivating, thanks for taking the time to comment!",{"value":100,"source":76,"evidence":101},"Beautiful rendered output",[102,106],{"id":103,"by":104,"text":105},"17957226","dreeves","This looks beautiful! Here's a related tool my friends made: http:\u002F\u002Fpartifi.org",{"id":107,"by":108,"text":109},"17954931","arendtio","At first, I thought: 'Kinda cool Latex inspired markdown editor for notes, but the play button is missing.' Then I saw the play in the top bar :D Pure awesomeness!",[111],{"value":112,"source":76,"evidence":113},"Code view is the default instead of note-entry UI",[114,118],{"id":115,"by":116,"text":117},"17952393","ocdtrekkie","This is quite cool! I do feel like the \"code view\" interface isn't the best default, the \"Insert Notes\" interface should be more than just a tool hidden in a menu, because that's…",{"id":119,"by":120,"text":121},"17953331","jay-anderson","Agreed. As a lilypond user, hiding some of the extra stuff would be confusing to me. I don't think it would be simple to create a mode for more easy note-only editing.",[123,133],{"value":124,"source":76,"evidence":125},"MIDI export",[126,130],{"id":127,"by":128,"text":129},"17953469","pen2l","It would be really neat if I can export to a MIDI. Do you reckon that's easy to do for you? Lilypond in the back is storing this data in abc format right? Separately, a question,…",{"id":131,"by":11,"text":132},"17953509","Someone requested MIDI and other exports at https:\u002F\u002Fgithub.com\u002Fhacklily\u002Fhacklily\u002Fissues\u002F2 and I'll try to tackle soon. Hacklily already makes MIDI available (for playback), so…",{"value":134,"source":76,"evidence":135},"More complex examples and tutorials",[136,140],{"id":137,"by":138,"text":139},"17954646","anotheryou","Could really use a more complex example. Anything I could paste in?",{"id":141,"by":142,"text":143},"17953501","tekkk","Pretty sweet, I'll just have to learn that LilyPond to make use of it. Is there any good resources out there? It would be nice to include some tutorials or example songs but well…",[145,156],{"value":146,"source":76,"evidence":147},"Why not use AWS Lambda or a queue",[148,152],{"id":149,"by":150,"text":151},"17954740","trevordixon","Very cool! I run LilyBin (http:\u002F\u002Flilybin.com), which I've unfortunately let languish. I compile using AWS Lambda and stay within the free tier. Did you consider using Lambda?",{"id":153,"by":154,"text":155},"17954919","tobltobs","If you have considered using a queue, what were your reasoning to prefer lambdas?",{"value":157,"source":76,"evidence":158},"Could LilyPond run client-side",[159,163],{"id":160,"by":161,"text":162},"17955888","scrollaway","I'm not familiar with LilyPond. Is there no possible client-side generation? For example VexFlow (http:\u002F\u002Fwww.vexflow.com\u002F) or, even with music, abcjs (https:\u002F\u002Fabcjs.net\u002F). Both…",{"id":79,"by":11,"text":80},[165,169,173,184],{"value":166,"source":76,"evidence":167},"LilyBin",[168],{"id":149,"by":150,"text":151},{"value":170,"source":76,"evidence":171},"VexFlow and abcjs",[172],{"id":160,"by":161,"text":162},{"value":174,"source":76,"evidence":175},"Denemo and Frescobaldi",[176,180],{"id":177,"by":178,"text":179},"17959107","Klasiaster","I sometimes try to use Denemo but the UI is a bit complicated so that writing LilyPond yourself maybe is easier? But I like that Hacklily hat some other input methods as tools. I…",{"id":181,"by":182,"text":183},"17963193","jadavies","+1 for the Lilypond documentation. It's very informative. I use Frescobaldi ( http:\u002F\u002Ffrescobaldi.org ) for my Lilypond editing and find it pretty good.",{"value":185,"source":76,"evidence":186},"Musescore",[187],{"id":188,"by":189,"text":190},"17953724","gooseyard","I've been using Musescore for a lot of the stuff I used to use Lilypond for, but one of the things I absolutely love about Lilypond is that its easy to write scripts that emit…",{"comments":192,"answered":193,"key":194},13,9,[195,198,199],{"id":196,"text":197},"17954763","Very cool work -- I'm a fan. I considered Lambda and similar, but keeping LilyPond running as a server allows for lower latency, which is important given how long it takes for…",{"id":85,"text":86},{"id":79,"text":80},{"commenters":201,"max_depth":29,"maker_replies":192,"first_comment_mins":29,"lifespan_hours":202},32,53,[204,206,208,211,213,217,218,219,220,224,227,230,233,235,238,241,245,248,251,254,256,259,261,263,265,268,269,270,272,274,275,279,281,283,286,290,293,296,299,302,305,306,307,308,311,313,316,318,322],[149,36,36,205,150,36],"commenter\u002Fneutral\u002Fnone",[196,36,36,207,11,32],"maker\u002Fneutral\u002Fperformance",[209,36,36,210,150,36],"17954833","commenter\u002Fneutral\u002Fperformance",[153,36,42,212,154,36],"maker\u002Fneutral\u002Fexecution",[214,36,42,215,216,36],"17955346","project\u002Fneutral\u002Fexecution","jazzyjackson",[85,36,36,215,11,32],[160,36,42,215,161,36],[79,36,36,212,11,32],[221,36,36,222,223,36],"17957680","other\u002Fneutral\u002Fnone","dnautics",[225,36,36,222,226,36],"17966573","lamby",[228,32,36,222,229,36],"17954555","Mizza",[231,32,36,222,232,36],"17955668","memset",[234,32,36,222,229,36],"17955706",[236,32,36,222,237,36],"17972550","mhh__",[239,32,36,222,240,36],"17960824","TheRealPomax",[242,31,18,243,244,36],"17953478","project\u002Fpositive\u002Fexecution","ctruelson",[246,31,36,222,247,36],"17953574","odyssey7",[249,31,36,250,11,32],"17953596","maker\u002Fneutral\u002Fidea",[252,31,36,253,247,36],"17953694","other\u002Fneutral\u002Fidea",[107,42,18,255,108,36],"project\u002Fpositive\u002Fdesign",[115,257,42,258,116,36],4,"project\u002Fmixed\u002Fdesign",[61,257,36,260,11,32],"maker\u002Fneutral\u002Fdesign",[119,257,42,262,120,36],"project\u002Fneutral\u002Fdesign",[264,257,42,262,116,36],"17953948",[266,18,42,215,267,36],"17953003","jedimastert",[68,18,36,212,11,32],[50,18,18,243,51,36],[97,18,36,271,11,32],"maker\u002Fneutral\u002Fnone",[127,18,42,273,128,36],"project\u002Fneutral\u002Fidea",[131,18,36,250,11,32],[276,18,42,277,278,36],"17953649","project\u002Fneutral\u002Fperformance","microtherion",[54,18,36,280,11,32],"maker\u002Fpositive\u002Fperformance",[282,18,36,205,278,36],"17954134",[284,29,42,273,285,36],"17954071","scriptedfate",[287,288,36,222,289,36],"17953606",7,"zeroxfe",[291,288,36,222,292,36],"17954949","Finnucane",[294,288,36,295,11,32],"17955217","maker\u002Fpositive\u002Fnone",[297,288,36,222,298,36],"17956277","commandlinefan",[141,300,18,301,142,36],8,"project\u002Fpositive\u002Fdocs",[303,300,36,304,11,32],"17953544","maker\u002Fpositive\u002Fdocs",[188,300,36,222,189,36],[181,300,18,301,182,36],[177,193,42,258,178,36],[309,193,36,310,11,32],"17960998","other\u002Fneutral\u002Fdesign",[137,30,32,312,138,36],"project\u002Fcritical\u002Fdocs",[314,30,36,315,11,32],"17954733","maker\u002Fneutral\u002Fdocs",[103,317,18,255,104,36],11,[319,320,36,222,321,36],"17955744",12,"scentoni",[323,192,42,324,325,36],"17956611","project\u002Fneutral\u002Fnone","adjunctprof",[],[328,333,338,343,348,352],{"id":329,"name":330,"points":331,"category":332},"17927200","Py-spy",286,"dev_tools",{"id":334,"name":335,"points":336,"category":337},"17948287","Zero",252,"infrastructure",{"id":339,"name":340,"points":341,"category":342},"17942032","Reminiscence",213,"productivity",{"id":344,"name":345,"points":346,"category":347},"17930669","BitMidi",168,"consumer_social",{"id":349,"name":350,"points":351,"category":332},"17951478","Ghuser.io",157,{"id":353,"name":354,"points":355,"category":356},"17959341","Mindstamp",138,"web_saas",false,"v2",{"id":360,"name":5,"line":6,"ai":357,"cat":20,"year":13,"points":14,"comments":15,"rec":26,"s":361,"top":18,"kw":362,"maker":11,"domain":10,"tier":19,"attempts":36,"strip":363,"url":9,"mix":364,"praise":93,"objection":112,"sub":6},17952355,0.24,[6,23,24,25],"0003330000000500533330530303000500531053",[29,30,31,32],1794036569378]