<html><head></head><body><div class="ydp3d1007deyahoo-style-wrap" style="font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 13px;"><div></div>
        <div dir="ltr" data-setdir="false">Hi Jakob,</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">Purr Data uses an HTML5 interface and the guis are drawn using SVGs.</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">There is also Pd-l2ork 1.0 which uses a library called "tkpath" for a subset of SVG functionality on a special tkpath canvas widget. Sadly, the original author of that library passed away and AFAICT the library hasn't been ported forward for more recent versions of tcl/tk.</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">As for tcl/tk-- it appears the next version of tk will do a one time conversion from an SVG file to a raster image. But that would not give you the ability to change any of the attributes on the fly-- e.g., rotating the knob based on input values.</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">On the other hand, I guess you could load the same knob SVG image multiple times and just substitute a different rotation value for each image loaded. Once loaded, you could switch out the displayed image displayed with the correct rotation value for the given input.</div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">That's basically what I did for the little sprite game I wrote in Purr Data, and it worked pretty well both using tkpath and in HTML5[2].<br></div><div dir="ltr" data-setdir="false"><br></div><div dir="ltr" data-setdir="false">[1] <a href="https://core.tcl-lang.org/tips/doc/trunk/tip/507.md" target="_blank" rel="noreferrer noopener">https://core.tcl-lang.org/tips/doc/trunk/tip/507.md</a></div><div dir="ltr" data-setdir="false">[2] <a href="https://forum.puredata.info/topic/13081/purr-data-sprite-game" target="_blank" rel="noreferrer noopener">https://forum.puredata.info/topic/13081/purr-data-sprite-game</a></div><div><br></div>
        
        </div><div id="ydp98affbadyahoo_quoted_4067742653" class="ydp98affbadyahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                
                <div>
                    On Friday, October 23, 2020, 12:07:45 PM EDT, Jakob Skouborg <syntaxerror60@hotmail.com> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div id="ydp98affbadyiv4389318761">
<div><div style="font-family:inherit;" class="ydp98affbadyiv4389318761"><div class="ydp98affbadyiv4389318761" style="font-family:inherit;"><div class="ydp98affbadyiv4389318761dati1w0a ydp98affbadyiv4389318761ecm0bbzt ydp98affbadyiv4389318761e5nlhep0 ydp98affbadyiv4389318761hv4rvrfc" id="ydp98affbadyiv4389318761jsc_c_12o" style="padding:4px 16px;font-family:inherit;"><div class="ydp98affbadyiv4389318761j83agx80 ydp98affbadyiv4389318761ew0dbk1b ydp98affbadyiv4389318761cbu4d94t ydp98affbadyiv4389318761irj2b8pg" style="font-family: inherit;"><div class="ydp98affbadyiv4389318761knvmm38d ydp98affbadyiv4389318761qzhwtbm6" style="margin-top:5px;margin-bottom:5px;font-family:inherit;"><span class="ydp98affbadyiv4389318761knj5qynh ydp98affbadyiv4389318761oo9gr5id ydp98affbadyiv4389318761d9wwppkn ydp98affbadyiv4389318761qv66sw1b ydp98affbadyiv4389318761mau55g9w ydp98affbadyiv4389318761aigsh9s9 ydp98affbadyiv4389318761iv3no6db ydp98affbadyiv4389318761fe6kdd0r ydp98affbadyiv4389318761nxhoafnm ydp98affbadyiv4389318761hpfvmrgz ydp98affbadyiv4389318761c8b282yb ydp98affbadyiv4389318761hzawbc8m ydp98affbadyiv4389318761jq4qci2q ydp98affbadyiv4389318761ik7dh3pa ydp98affbadyiv4389318761a8c37x1j ydp98affbadyiv4389318761fgxwclzu ydp98affbadyiv4389318761keod5gw0 ydp98affbadyiv4389318761oi732d6d ydp98affbadyiv4389318761c1et5uql ydp98affbadyiv4389318761d2edcug0 ydp98affbadyiv4389318761a3bd9o3v" style="line-height:1.3333;display:block;max-width:100%;font-family:inherit;min-width:0px;"><div class="ydp98affbadyiv4389318761cxmmr5t8 ydp98affbadyiv4389318761oygrvhab ydp98affbadyiv4389318761c1et5uql ydp98affbadyiv4389318761ii04i59q ydp98affbadyiv4389318761kvgmc6g5 ydp98affbadyiv4389318761hcukyx3x" style="margin:0px;white-space:pre-wrap;font-family:inherit;"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761">Hey guys!</div></div><div class="ydp98affbadyiv4389318761cxmmr5t8 ydp98affbadyiv4389318761oygrvhab ydp98affbadyiv4389318761ii04i59q ydp98affbadyiv4389318761o9v6fnle ydp98affbadyiv4389318761c1et5uql ydp98affbadyiv4389318761hcukyx3x" style="margin:0.5em 0px 0px;white-space:pre-wrap;font-family:inherit;"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761">Just some Friday thoughts about Pure Data and UI elements, like knobs, etc.:</div></div><div class="ydp98affbadyiv4389318761cxmmr5t8 ydp98affbadyiv4389318761oygrvhab ydp98affbadyiv4389318761ii04i59q ydp98affbadyiv4389318761o9v6fnle ydp98affbadyiv4389318761c1et5uql ydp98affbadyiv4389318761hcukyx3x" style="margin:0.5em 0px 0px;white-space:pre-wrap;font-family:inherit;"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761">In VCV rack, it's pretty easy to make your own knobs for your modules. You can use the free open source program called Inkscape to make a knob, which is basically an SVG file.</div></div><div class="ydp98affbadyiv4389318761cxmmr5t8 ydp98affbadyiv4389318761oygrvhab ydp98affbadyiv4389318761ii04i59q ydp98affbadyiv4389318761o9v6fnle ydp98affbadyiv4389318761c1et5uql ydp98affbadyiv4389318761hcukyx3x" style="margin:0.5em 0px 0px;white-space:pre-wrap;font-family:inherit;"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761">I was thinking that it would be really cool to be able to do something similar in Pure Data. To have an object/external that can load these knob SVG files into it, and then use the mouse to set a value(and knob position) between 0-1, either by dragging up/down or left/right and pressing the mouse on top of the object. It would really open up a whole new universe for Pure Data and making nice user interfaces.</div><div style="font-family:inherit;" class="ydp98affbadyiv4389318761"><br class="ydp98affbadyiv4389318761"></div></div><div class="ydp98affbadyiv4389318761cxmmr5t8 ydp98affbadyiv4389318761oygrvhab ydp98affbadyiv4389318761ii04i59q ydp98affbadyiv4389318761o9v6fnle ydp98affbadyiv4389318761c1et5uql ydp98affbadyiv4389318761hcukyx3x" style="margin:0.5em 0px 0px;white-space:pre-wrap;font-family:inherit;"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761">I have been playing with coding audio stuff for a few years in c++, mostly at hobby level, and I was wondering how hard it would be to make an object like that(if possible at all), that can load an SVG files created in Inkscape?</div></div><div class="ydp98affbadyiv4389318761cxmmr5t8 ydp98affbadyiv4389318761oygrvhab ydp98affbadyiv4389318761ii04i59q ydp98affbadyiv4389318761o9v6fnle ydp98affbadyiv4389318761c1et5uql ydp98affbadyiv4389318761hcukyx3x" style="margin:0.5em 0px 0px;white-space:pre-wrap;font-family:inherit;"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761">Since VCV Rack is open source, I think I am going to see if I can find the code for the knob implementation this weekend, to see how it works in VCV.</div></div><div class="ydp98affbadyiv4389318761cxmmr5t8 ydp98affbadyiv4389318761oygrvhab ydp98affbadyiv4389318761ii04i59q ydp98affbadyiv4389318761o9v6fnle ydp98affbadyiv4389318761c1et5uql ydp98affbadyiv4389318761hcukyx3x" style="margin:0.5em 0px 0px;white-space:pre-wrap;font-family:inherit;"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761">But first of all I am just curious about it and was looking for more experienced programmers though, especially you guys, who know a lot about PD, if it's a completely lost cause or if it is plausible idea.</div></div><div class="ydp98affbadyiv4389318761cxmmr5t8 ydp98affbadyiv4389318761oygrvhab ydp98affbadyiv4389318761ii04i59q ydp98affbadyiv4389318761o9v6fnle ydp98affbadyiv4389318761c1et5uql ydp98affbadyiv4389318761hcukyx3x" style="margin:0.5em 0px 0px;white-space:pre-wrap;font-family:inherit;"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761">Personally I have not yet created any Pure Data externals, but I have been looking through some of dr. Hernandez pure data external creation tutorials on YT. I did make a bunch of VCV rack modules, so I know a bit about that.</div></div><div class="ydp98affbadyiv4389318761cxmmr5t8 ydp98affbadyiv4389318761oygrvhab ydp98affbadyiv4389318761ii04i59q ydp98affbadyiv4389318761o9v6fnle ydp98affbadyiv4389318761c1et5uql ydp98affbadyiv4389318761hcukyx3x" style="margin:0.5em 0px 0px;white-space:pre-wrap;font-family:inherit;"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761">Any thoughts are welcome <span class="ydp98affbadyiv4389318761oygrvhab ydp98affbadyiv4389318761gl3lb2sf ydp98affbadyiv4389318761hhz5lgdu ydp98affbadyiv4389318761tbxw36s4 ydp98affbadyiv4389318761kvgmc6g5 ydp98affbadyiv4389318761sf5mxxl7 ydp98affbadyiv4389318761pq6dq46d ydp98affbadyiv4389318761knj5qynh ydp98affbadyiv4389318761ditlmg2l ydp98affbadyiv4389318761nvdbi5me" style="margin:0px 1px;min-height:16px;width:16px;vertical-align:middle;font-family:inherit;"><img alt="��" src="https://static.xx.fbcdn.net/images/emoji.php/v9/t4c/1/16/1f642.png" style="border-color: currentcolor; border-style: none; border-width: 0px;" class="ydp98affbadyiv4389318761" data-inlineimagemanipulating="true" draggable="false" width="16" height="16"></span> </div></div><div class="ydp98affbadyiv4389318761cxmmr5t8 ydp98affbadyiv4389318761oygrvhab ydp98affbadyiv4389318761ii04i59q ydp98affbadyiv4389318761o9v6fnle ydp98affbadyiv4389318761c1et5uql ydp98affbadyiv4389318761hcukyx3x" style="margin:0.5em 0px 0px;white-space:pre-wrap;font-family:inherit;"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761">Besides that, have a great weekend!</div><div style="font-family:inherit;" class="ydp98affbadyiv4389318761"><br class="ydp98affbadyiv4389318761"></div><div style="font-family:inherit;" class="ydp98affbadyiv4389318761">Best wishes, Jakob</div></div></span></div></div></div></div></div><div style="font-family:inherit;" class="ydp98affbadyiv4389318761"><div class="ydp98affbadyiv4389318761stjgntxs ydp98affbadyiv4389318761monazrh9 ydp98affbadyiv4389318761h905i5nu ydp98affbadyiv4389318761ni8dbmo4 ydp98affbadyiv4389318761uo3d90p7 ydp98affbadyiv4389318761l82x9zwi" style="border-radius: 0px 0px 8px 8px; font-family: inherit;"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761"><div style="font-family:inherit;" class="ydp98affbadyiv4389318761"></div></div></div></div></div></div></div>_______________________________________________<br>Pd-dev mailing list<br><a href="mailto:Pd-dev@lists.iem.at" target="_blank" rel="noreferrer noopener">Pd-dev@lists.iem.at</a><br><a href="https://lists.puredata.info/listinfo/pd-dev" target="_blank" rel="noreferrer noopener">https://lists.puredata.info/listinfo/pd-dev</a><br></div>
            </div>
        </div></body></html>