NEW: Online Knob Builder for HISE!! by Me :)
-
@David-Healey multiple layers. Theres a 'cap' in front of the ellipse that has noise applied to it.
-
@Chazrox This will probably be useful to you when Christoph merges it: https://github.com/christophhart/HISE/pull/936
And maybe this one: https://github.com/christophhart/HISE/pull/943
-
@David-Healey Niiice!
I can definitely think of some cool ways to use that already.. -
Update:
https://rox-knob-builder-for-hise.netlify.app/
Just added the option to inherit 'obj.text' for 'Component Label' element. You can still set a text for mockup and placement in the designer ui but ticking the box will inherit obj.text on compile.

-
@Chazrox Thank you so muhc man, This is amazing,
any chance we could have this Offline? -
@ILIAM Possibly soon.
How are you liking the web version? -
-
Is it possible to do sliders? Or is that a future feature maybe?
-
@ccbl Working on it.

-
I loved it! Are you planning to add a button creator as well?

const var MadeWithRoxKNFH = Content.createLocalLookAndFeel(); MadeWithRoxKNFH.registerFunction("drawRotarySlider", function(g, obj) { var a = obj.area; var range = obj.max - obj.min; var stableSize = a[2] * (1.0 - 2.0 * 0.15); var ox = a[0] + (a[2] - stableSize) / 2; var oy = a[1] + (a[2] - stableSize) / 2; var cx = ox + stableSize / 2; var cy = oy + stableSize / 2; var sw = stableSize / 200.0; var startOffset = 2.5; var totalSweep = 2.0 * startOffset; var endOffset = -startOffset + totalSweep * (obj.value - obj.min) / range; // ============ COLOUR CONTROL ============ // -- Skirt -- var cSkirtFlat = 0xff121212; var cSkirtHover = 0xffFFFFFF; // -- Arc Track -- var cArcTrackOuter = 0x00000000; var cArcTrackBackground = 0xff000000; // -- Arc Value Basic -- var cArcBasicGlow = 0x4d007BFF; var cArcBasicLow = 0xff004FA3; var cArcBasicHigh = 0xff2D61C8; // -- Body 1 -- var cFace1Top = 0xff555558; var cFace1Bot = 0xff2A2A2E; var cFace1Hover = 0xffFFFFFF; var cFace1Outline = 0x4d000000; // -- skirt -- var skirtR = stableSize * 0.49; var skirtcx = cx + 0 * sw; var skirtcy = cy + 0 * sw; g.setColour(cSkirtFlat); g.fillEllipse([skirtcx - skirtR, skirtcy - skirtR, skirtR * 2, skirtR * 2]); g.beginLayer(false); g.setColour(cSkirtFlat); g.fillEllipse([skirtcx - skirtR, skirtcy - skirtR, skirtR * 2, skirtR * 2]); var skirtnp = Content.createPath(); skirtnp.addRoundedRectangle([skirtcx - skirtR, skirtcy - skirtR, skirtR * 2, skirtR * 2], skirtR); g.applyMask(skirtnp, [skirtcx - skirtR, skirtcy - skirtR, skirtR * 2, skirtR * 2], false); g.rotate(endOffset, [skirtcx, skirtcy]); g.addNoise({"alpha": 0.03, "monochromatic": false, "area": [skirtcx - skirtR, skirtcy - skirtR, skirtR * 2, skirtR * 2]}); g.rotate(-endOffset, [skirtcx, skirtcy]); g.endLayer(); if (obj.hover || obj.clicked) { g.setColour(Colours.withAlpha(cSkirtHover, 0.03)); g.fillEllipse([skirtcx - skirtR, skirtcy - skirtR, skirtR * 2, skirtR * 2]); } // -- ARC TRACK -- var trkW = 0.45 * 2; var Ktrk = Content.createPath(); Ktrk.addArc([(1.0-trkW)/2, (1.0-trkW)/2, trkW, trkW], -startOffset, startOffset); var arTrk = Ktrk.getBounds(stableSize); arTrk[0]+=ox; arTrk[1]+=oy + stableSize * 0; g.setColour(cArcTrackOuter); g.drawPath(Ktrk, arTrk, {Thickness: stableSize * 0.08 + 0 * sw, EndCapStyle: "rounded", JointStyle: "curved"}); g.setColour(cArcTrackBackground); g.drawPath(Ktrk, arTrk, {Thickness: stableSize * 0.08, EndCapStyle: "rounded", JointStyle: "curved"}); // -- ARC BASIC (gradient) -- var basW = 0.45 * 2; var basR = stableSize * 0.45; var Kbas = Content.createPath(); Kbas.addArc([(1.0-basW)/2, (1.0-basW)/2, basW, basW], -startOffset, endOffset); var arBas = Kbas.getBounds(stableSize); arBas[0]+=ox; arBas[1]+=oy + stableSize * 0; var basGlowW = stableSize * 0.08 + stableSize * 0.08 * 20 / 10; g.setColour(cArcBasicGlow); g.drawPath(Kbas, arBas, {Thickness: basGlowW, EndCapStyle: "rounded", JointStyle: "curved"}); var gx1 = cx + basR * Math.sin(-startOffset); var gy1 = cy - basR * Math.cos(-startOffset) + stableSize * 0; var gx2 = cx + basR * Math.sin(startOffset); var gy2 = cy - basR * Math.cos(startOffset) + stableSize * 0; g.setGradientFill([cArcBasicLow, gx1, gy1, cArcBasicHigh, gx2, gy2, false]); g.drawPath(Kbas, arBas, {Thickness: stableSize * 0.08, EndCapStyle: "rounded", JointStyle: "curved"}); // -- face1 -- var face1R = stableSize * 0.41; var face1cx = cx + 0 * sw; var face1cy = cy + 0 * sw; g.setGradientFill([cFace1Top, face1cx, face1cy - face1R + (2 * face1R * (0.5 - 0.5)), cFace1Bot, face1cx, face1cy + face1R + (2 * face1R * (0.5 - 0.5)), false]); g.fillEllipse([face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2]); g.beginLayer(false); g.setGradientFill([cFace1Top, face1cx, face1cy - face1R + (2 * face1R * (0.5 - 0.5)), cFace1Bot, face1cx, face1cy + face1R + (2 * face1R * (0.5 - 0.5)), false]); g.fillEllipse([face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2]); var face1np = Content.createPath(); face1np.addRoundedRectangle([face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2], face1R); g.applyMask(face1np, [face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2], false); g.rotate(endOffset, [face1cx, face1cy]); g.addNoise({"alpha": 0.04, "monochromatic": false, "area": [face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2]}); g.rotate(-endOffset, [face1cx, face1cy]); g.endLayer(); if (obj.hover || obj.clicked) { g.setColour(Colours.withAlpha(cFace1Hover, 0.07)); g.fillEllipse([face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2]); } g.setColour(cFace1Outline); g.drawEllipse([face1cx - face1R, face1cy - face1R, face1R * 2, face1R * 2], 1); }); -
@Anhuarcin said in NEW: Online Knob Builder for HISE!! by Me :):
button creator
Glad you love it! Most definitely working buttons also. I'll let everyone know when thats done.
Thanks for giving it a go! 