[{"data":1,"prerenderedAt":254},["ShallowReactive",2],{"project-17355328":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":40,"post_text":41,"what":42,"said":97,"maker_in_thread":156,"shape":167,"grid":170,"attempts":217,"same_week":218,"maker_shows":168,"maker_hidden":246,"reader_version":247,"card":248},"17355328","MRuby-Zest","A Scriptable Audio GUI Framework","title","Show HN: MRuby-Zest – A Scriptable Audio GUI Framework","http:\u002F\u002Flog.fundamental-code.com\u002F2018\u002F06\u002F16\u002Fmruby-zest.html","log.fundamental-code.com","fundamental",1529502911,2018,78,23,555,2155,26,"notable","creative","audio plugin gui framework","library",[24,25,26,27,28],"audio gui","mruby","zynaddsubfx","open sound control","plugin ui","curious",0.333,{"positive":32,"neutral":33,"mixed":34,"critical":34},3,5,0,8,{"execution":37,"idea":38,"docs":39},{"positive":34,"critical":34},{"positive":34,"critical":34},{"positive":34,"critical":34},[34,33,34,32,34,32,34,32,34,34,34,34,34,33,34,34,34,34,32,34,32,34,33],null,{"problem":43,"audience":50,"pricing":58,"motivation":65,"time_to_build":69,"stack":73,"openness":94,"stage":95,"team_size":96},{"value":44,"source":45,"evidence":46},"Building a flexible, embeddable, resolution-independent GUI for audio plugins and synths.","maker",[47],{"id":48,"by":11,"text":49},"17355341","Hello HN, Two years back or so I was trying to build a new user interface for the ZynAddSubFX synth and getting the level of customization I wanted while being able to embed the…",{"value":51,"source":52,"evidence":53},"Audio plugin and synth developers, such as the ZynAddSubFX GUI team.","inferred",[54,55],{"id":48,"by":11,"text":49},{"id":56,"by":11,"text":57},"17357147","One of the plans down the line is to create a few views as essentially \"widget zoos\". These will hopefully serve as illustrative examples as well as locations where the automated…",{"value":59,"source":45,"evidence":60},"Binaries sold for a fee; full source promised later.",[61,62],{"id":48,"by":11,"text":49},{"id":63,"by":11,"text":64},"17364691","Certainly. - Embed-ability: Qt can be used to build a plugin interface, but when a plugin host (which may be implemented in some version of Qt) loads multiple different plugins…",{"value":66,"source":45,"evidence":67},"Needed a custom, embeddable UI for ZynAddSubFX that worked across resolutions.",[68],{"id":48,"by":11,"text":49},{"value":70,"source":45,"evidence":71},"About 3 months full-time.",[72],{"id":48,"by":11,"text":49},[74,78,82,86,90],{"value":75,"source":45,"evidence":76},"Ruby (mruby)",[77],{"id":48,"by":11,"text":49},{"value":79,"source":45,"evidence":80},"nanovg",[81],{"id":48,"by":11,"text":49},{"value":83,"source":45,"evidence":84},"OpenGL",[85],{"id":48,"by":11,"text":49},{"value":87,"source":45,"evidence":88},"Open Sound Control",[89],{"id":48,"by":11,"text":49},{"value":91,"source":45,"evidence":92},"QML-inspired widget system",[93],{"id":48,"by":11,"text":49},"unknown","launched","solo",{"praise":98,"objections":115,"requests":126,"questions":132,"alternatives":146},[99],{"value":100,"source":101,"evidence":102},"Interesting design and well-explained trade-offs.","commenter",[103,107,111],{"id":104,"by":105,"text":106},"17356918","monetus","This looks pretty interesting. I'd like to play around with it. Kudos to you. Aside: Did you know the FUDI protocol(0) used in the pure data language is dead simple, if you…",{"id":108,"by":109,"text":110},"17356057","nopacience","F A N T A S T I C !",{"id":112,"by":113,"text":114},"17356007","pjmlp","Nice overview, it looks quite good. Have you thought about bringing in Crystal when it gets more mature? Congratulations on the sale and good luck with the project.",[116],{"value":117,"source":101,"evidence":118},"Documentation and usage examples are lacking.",[119,123],{"id":120,"by":121,"text":122},"17356691","ttoinou","Looks great but don't know how to use the UI. Would you add some examples in the future, so that users can load and play with ?",{"id":124,"by":121,"text":125},"17357412","I meant music \u002F tracks \u002F synth examples ? I would be ok to follow a tutorial about how to use the interface but having real life examples to tinker with is more fun ;)",[127],{"value":128,"source":101,"evidence":129},"Provide music, track and synth examples to try out.",[130,131],{"id":120,"by":121,"text":122},{"id":124,"by":121,"text":125},[133,140],{"value":134,"source":101,"evidence":135},"Why not use Qt directly?",[136],{"id":137,"by":138,"text":139},"17364059","jcelerier","so... if I may ask : why not use Qt directly ?",{"value":141,"source":101,"evidence":142},"Has property binding been reimplemented like QML?",[143],{"id":144,"by":138,"text":145},"17357150","> After starting with Qt prototypes I borrowed the ideas of Qt's QML and applied them to a ruby based widget system Did you reimplement property binding ? That's the #1 feature…",[147,152],{"value":148,"source":101,"evidence":149},"Qt \u002F QML",[150,151],{"id":137,"by":138,"text":139},{"id":144,"by":138,"text":145},{"value":153,"source":101,"evidence":154},"Crystal",[155],{"id":112,"by":113,"text":114},{"comments":157,"answered":158,"key":159},11,7,[160,161,164],{"id":48,"text":49},{"id":162,"text":163},"17356099","I've seen Crystal a few times in the past, though I haven't used it for a project so far. Looking at their website and issue tracker it looks like it would be rather difficult to…",{"id":165,"text":166},"17357275","Yep, that was one of the things that I got working early on. It's used a fair bit in the codebase, though it's not necessarily all that apparent if you don't know where to look.…",{"commenters":158,"max_depth":157,"maker_replies":157,"first_comment_mins":168,"lifespan_hours":169},2,123,[171,174,176,178,180,181,183,185,186,187,190,192,195,197,199,201,203,205,208,210,212,213,215],[48,34,34,172,11,173],"project\u002Fpositive\u002Fidea",1,[112,34,33,175,113,34],"maker\u002Fpositive\u002Fnone",[162,34,34,177,11,173],"project\u002Fneutral\u002Fidea",[144,34,32,179,138,34],"project\u002Fneutral\u002Fexecution",[165,34,34,179,11,173],[182,34,32,179,138,34],"17357729",[184,34,34,179,11,173],"17357931",[137,34,32,177,138,34],[63,34,34,177,11,173],[188,34,34,189,138,34],"17372492","commenter\u002Fneutral\u002Fnone",[191,34,34,189,11,173],"17373581",[193,34,34,194,138,34],"17387877","other\u002Fneutral\u002Fnone",[196,34,34,194,11,173],"17394060",[104,173,33,198,105,34],"project\u002Fpositive\u002Fnone",[200,173,34,177,11,173],"17357026",[202,173,34,189,105,34],"17357548",[204,173,34,194,11,173],"17358046",[206,168,34,194,207,34],"17361701","zengid",[120,32,32,209,121,34],"project\u002Fneutral\u002Fdocs",[56,32,34,211,11,173],"maker\u002Fneutral\u002Fdocs",[124,32,32,209,121,34],[214,32,34,209,11,173],"17357556",[108,216,33,198,109,34],4,[],[219,223,228,233,238,242],{"id":220,"name":221,"points":222,"category":20},"17344419","Open Logos",680,{"id":224,"name":225,"points":226,"category":227},"17346616","Posthook",162,"infrastructure",{"id":229,"name":230,"points":231,"category":232},"17310483","World Cup API",141,"data",{"id":234,"name":235,"points":236,"category":237},"17333044","rust-simd-noise",73,"languages",{"id":239,"name":240,"points":241,"category":237},"17312562","Hamdown",64,{"id":243,"name":244,"points":245,"category":237},"17313728","Quiver",54,false,"v2",{"id":249,"name":5,"line":6,"ai":246,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":250,"top":18,"kw":251,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":252,"url":9,"mix":253,"praise":100,"objection":117,"sub":21},17355328,0.33,[24,25,26,27,28],"05030303000005000030305",[32,33,34,34],1794036567081]