[{"data":1,"prerenderedAt":213},["ShallowReactive",2],{"project-47080873":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":35,"aspects":36,"strip":41,"post_text":44,"what":45,"said":64,"maker_in_thread":113,"shape":122,"grid":126,"attempts":175,"same_week":176,"maker_shows":32,"maker_hidden":205,"reader_version":206,"card":207},"47080873","mahler.c","A small, simple music theory library in C99","title","Show HN: A small, simple music theory library in C99","https:\u002F\u002Fgithub.com\u002Fthelowsunoverthemoon\u002Fmahler.c","github.com","lowsun",1771541668,2026,57,18,1112,4366,26,"notable","languages","music theory library","library",[24,25,26,27,28],"music theory","c99","scales","intervals","music library","roasted",-0.042,{"positive":32,"neutral":32,"mixed":33,"critical":34},2,0,4,8,{"idea":37,"design":39,"execution":40},{"positive":38,"critical":32},1,{"positive":33,"critical":38},{"positive":38,"critical":33},[33,42,33,33,33,38,33,33,43,33,38,33,38,38,33,42,43,33],5,3,null,{"problem":46,"audience":53,"pricing":44,"motivation":44,"time_to_build":44,"stack":57,"openness":63,"stage":63,"team_size":63},{"value":47,"source":48,"evidence":49},"Provides core functions for scales, keys, intervals and related music theory structures.","maker",[50],{"id":51,"by":11,"text":52},"47084850","Well, this library provides the core functions for classical, Western music theory (scales, keys, intervals, etc.). So any ideas that needs to understand or generate these…",{"value":54,"source":48,"evidence":55},"Developers building music education tools, music generators, or chord finders.",[56],{"id":51,"by":11,"text":52},[58],{"value":59,"source":48,"evidence":60},"C99",[61],{"id":62},"post","unknown",{"praise":65,"objections":74,"requests":90,"questions":98,"alternatives":112},[66],{"value":67,"source":68,"evidence":69},"Good test coverage","commenter",[70],{"id":71,"by":72,"text":73},"47087264","saivishwak","Love the point of 100% test coverage.",[75,86],{"value":76,"source":68,"evidence":77},"No clear use case for the library",[78,82],{"id":79,"by":80,"text":81},"47084923","randomNumber7","So you can generate the d dorian scale and it outputs d e f g a b c d? Whats the target audience? A good musician knows the scales by heart (and also how they sound\u002Ffeel) and for…",{"id":83,"by":84,"text":85},"47085998","Juliate","The question is: what is the use case? If you don't have a practical use case, the probability that there is one AND that it will use your library (instead of building its own,…",{"value":87,"source":68,"evidence":88},"Target audience unclear",[89],{"id":79,"by":80,"text":81},[91],{"value":92,"source":68,"evidence":93},"Use designated initializer syntax in examples",[94],{"id":95,"by":96,"text":97},"47084085","ceteia","Nitpicking: https:\u002F\u002Fgithub.com\u002Fthelowsunoverthemoon\u002Fmahler.c\u002Fblob\u002F4ebfe8b5704eb1b546a6e8e3dd1748d7e279a880\u002Fsrc\u002Fnote\u002Fnote.h#L31 Should that type have been mah_acci instead of int?…",[99,106],{"value":100,"source":68,"evidence":101},"Why C99 rather than C23",[102],{"id":103,"by":104,"text":105},"47082792","OptionOfT","As someone who only has used C in conjunction with Rust... Given that it is 2026, what are some of the thoughts that go into choosing C99 vs C23, which I presume has more…",{"value":107,"source":68,"evidence":108},"What is the purpose and use case",[109],{"id":110,"by":80,"text":111},"47084770","What is the purpose of this and how would I use it (as someone who actually knows a lot about music theory and C programming)?",[],{"comments":43,"answered":43,"key":114},[115,116,119],{"id":51,"text":52},{"id":117,"text":118},"47085017","There is a function for that, yes. For your second thought, I'm not really sure I understand the point. Since this is a library, it can power any application that needs to…",{"id":120,"text":121},"47084235","Ah yes, that is by design. This is because it supports more than a double sharp \u002F double flat (eg triple sharp, quad sharp, etc). The enums are there just for the most common…",{"commenters":123,"max_depth":42,"maker_replies":43,"first_comment_mins":124,"lifespan_hours":125},15,195,22,[127,129,133,137,140,143,147,150,154,156,157,159,160,161,165,169,171,173],[103,33,33,128,104,33],"commenter\u002Fneutral\u002Fnone",[130,33,42,131,132,33],"47082967","project\u002Fpositive\u002Fidea","fallingmeat",[134,33,33,135,136,33],"47083021","commenter\u002Fcritical\u002Fnone","rabf",[138,33,33,128,139,33],"47087718","TingPing",[141,33,33,128,142,33],"47093988","nxobject",[144,33,38,145,146,33],"47083315","project\u002Fcritical\u002Fdesign","jcalvinowens",[148,33,33,128,149,33],"47090224","onedognight",[151,38,33,152,153,33],"47087234","other\u002Fneutral\u002Fnone","firmretention",[110,32,43,155,80,33],"project\u002Fneutral\u002Fidea",[51,32,33,155,11,38],[79,32,38,158,80,33],"project\u002Fcritical\u002Fidea",[117,32,33,155,11,38],[83,32,38,158,84,33],[162,32,38,163,164,33],"47085114","project\u002Fcritical\u002Fnone","pipeline_peak",[166,32,33,167,168,33],"47086395","commenter\u002Fneutral\u002Fidea","Hasnep",[71,43,42,170,72,33],"project\u002Fpositive\u002Fexecution",[95,34,43,172,96,33],"project\u002Fneutral\u002Fdesign",[120,34,33,174,11,38],"maker\u002Fneutral\u002Fdesign",[],[177,182,187,192,196,201],{"id":178,"name":179,"points":180,"category":181},"47075124","Micasa",657,"productivity",{"id":183,"name":184,"points":185,"category":186},"47114530","CIA World Factbook Archive",496,"learning_science",{"id":188,"name":189,"points":190,"category":191},"47104667","ntransformer",395,"ai",{"id":193,"name":194,"points":195,"category":191},"47131225","Steerling-8B",328,{"id":197,"name":198,"points":199,"category":200},"47123631","PgDog",326,"infrastructure",{"id":202,"name":203,"points":204,"category":191},"47143755","Moonshine Open-Weights STT models",316,false,"v2",{"id":208,"name":5,"line":6,"ai":205,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":209,"top":18,"kw":210,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":211,"url":9,"mix":212,"praise":67,"objection":76,"sub":21},47080873,-0.04,[24,25,26,27,28],"050001003010110530",[32,32,33,34],1794036693806]