@DanH Ahh I just forgot to rename it, that's why there are 2 Attack Curves 
@orange Sexy indeed!!!!
A little less sexy, but in case anyone finds it useful, here is a knob laf and mute and solo buttons:

HiseSnippet 2225.3ocwY0saaibElxIZQkZ61cA5CvTi8BpDEYRJYIqHX3XaYm0XscLhRC1EFFtiHGIMwTjBjT1RcadP165aPut2kmld89FzdNyveFJK4n0XWTJ.KMm4blyuy2Y33KB7sYgg9AZEJ+t4SXZE9CE6M2KZzginbOsS5pUnTwa776eJcf1AymPCCYNZEJ7jWiSWnzS0DO+7dGPcod1rLRZZu2mayNkOlGkQ8hW8cbW2ioNr2wGqvciWchsu2g9t9SAS4IEMzlPsugNjcNEYaihZeKMbjVgmUr8f5s2ooAstyN1La6FC1tUyFTyF02lxZWe.0zl0ZaKavH+hib3Q9A8hnQrPsBO8.em48F4emmTAumGx66xvAlZ8.MKIeruqC5hHUsCGwcctHIFEpAqxEYQrmHiX+4hmwc3ozyhbekXBRlDpAvBaj27dRNyyT07LTLukXRETLomJMoutXO6.9jnrYP642W7DuHVv.JjmTMEIuZa7u9SEOzG3vKp1X5MriCfAoRnaZXTk.+oRmxvyVaw8rcm5vz2rKy1kEPi39dg09P3lBFfrYXD4VZ.4Fu9WiUKgjcIIK+PVz9ttG5OdhuGLNTeyDtDRmIb+HuqOaJDfdPgS3BENurXf6yKKx0BJ1kN35uCp6Uj0NfAopS8sotm56ey9dNGyXt54zIJ1ASih78VKAKmnlZArg7PHTe7TOaLRpuoS.8t25GQCl2yk6vB1rJYPxjCqR76+gJk+wxD3AULEzGPpFEzUmTpy.pzKMtJixbAESEJ2InXoPYjfRcfRJIDB3aY7gihf4ZXjwqKsOyMcFKiXY1ZKRW1.tGSHIA8Et2PBZcD8H+IvZPlvmwbCqjSG6iLrK4xYUIyqRtqphhULPazulQdNX6OiXTaakYP+aNLihAu.KA.GmQiFUaL2SOmFpHYk7BRCEWm5MzkA6RChRD7hSDL1RYQELcjmSNVrpYsHKXjMa8dNQOUvWnLAZHXx7Vp6T149Aiot7+NyQI1F.gvvQTG+6DjFVKjEIQO0Ml0vP9ToS7jC.L2ibc4SBY5WBAuW.AgmSrphgK4uaTE95YHIwWWUISWhcAHB.YX.0gCEzYp70wTNFTf9kB53CZ67H1XoEYB5YVhtptJlH+ChwLCCKwmTIdtpDQASYhAW8PdVplVoG8V9XxHHg6hI8kD+rrNV7jpEr7c8zBfPVyPQUuFfeBmS7ukE3Rm+YCbFyZ1Tp6kGyvHzBy+HhPhp21aml9SFh+xrV6zenFyNwygaSg9UDWXWcZQcHVt1EPtvl+PwsbwLUJ6YdN2a910U1eIVhuGlyF2QK18X6GJ2XfaDxohN4E6GPwlmHVHrg9yIFXNOftTL1bh7.5ImHkJWBkfmDrjkTwPy1tb6aXNj8fzHlBa21vf7x3A3SGQjtef.0xO.TAC9hb2HXaBtzpUoKnBHSURVmdJjdzkwzpBusZbnRLB9qkn.sj7Cnuc2cWRyZ.jB8NIZNIhMKB7AReenQ1XRzHdfCQmOf34GQh8hLXaj6zF.iHaQp2I2bpP5PDbDTxkIh.iOa3Uct21QLxgLj5mxBRAKGCMX0MspHCb667goPa3P.pjPCIdLFbPNA6o1iCObBrO78HtZBTcf+TOG8T31JfMhCBmNX.eVmEE8cXrYw7Ytk8kjDSVE9Xe.rwi4fhqqrTUSCQUIaZC.BALG3jHkJ+Qbu2.H6qywTQ5gnvd9k3nyeuySjbVBPxOhGQK6rHq3zEuyeHTDKY4+GmtPsibyNXJz1OviAD.vwogYPD7v23EaA2JSc6RLyjuOMjktSSv6dKzcwJNqnzuA2B.Z7LHnRPLxxpEcYqHDLkXnuEKSXNukYGI16qmcFkQ.rOxHtdmJ1H3vCXhXYZOShNlLq2kHZ5.mEpR462HPZ6B+5RrMjrMdUhTSH3uJEbyDj0ntgrq.+S.RCqn54BtLqY15rJUDIg2AmsP1Z7WjmG2pCObW.afqz+KCnF5+EzuTKmFhrpfYf8DZzYUcGWtOnRA7AkkLyaTZAtDm.jxTJL70c.rDzEWYYhcsOJKCgSpJ658ioMawSRP4v6P8RY3h.oav6qFm.vgRDzTIVSmKehOeBRrVw1z5mdRO1Hfwi.NqGJaFF6l8g2JFfHLaT4AA2MiUqDPt2H9fHh4jYDHb3kzfREILQsq.FrrDFTAGL88Ak8eVMPnDUKOHZ5KDt1BKZdjfKBIzy8iXuwSW.BCUFjEmZvfkNG9hfA9tvaIuzowqBI3gDT2a539L3rlxNTILBute96Pn3puCA0q3vV9doJL56chGO5MSXdq5hOzheYVMfgXqB9Uj31F9x3aaPF1z3N3UMjjoL0DFs5ECos1K.Zy2aA948V4BHeS43EHomY9E3uM3+r8mz9qmzkFQwKOI1u.ecBKHhigwBcY2xsYxqRoTwtrvaf80BGO9dCzJTdsb8YYV827p4pW20cbmnQpDFI.cTofaIvzwYZYssv6myxrtQyVlsp2TYBKblFVsaz1xb6Fs05OLS.AYCyVMwqOZ8cAYveUtvI+RbgdK3Bl6rSiVsazzp98cAXFqFvrK3Bs1wxpgoUqbtvWtVoeEWnqpK7MK5BcumKb9qxa3ncXBmaeGCMou8EEE2D5Xem3ZEaNbDZswp2N5O7owzYpa.fihMoGbL0XZ+ye5m926IOuIrGtHw4.PdGGW1E9gbDIHSVqOoc+a66qJdluyTWwaCnb4ingEOAtFp23GdqddvZOWcW0uZ2H45ZhecwK3Q1iVtMtwRrQX+5uE1X7839GKdzfAPWzLC7oEO96+s4Ra0ft13o.g2.IPj0Oe53dPMlMCztmGbZCfVgMPrR4XCbLFA5AuEmXv+EdhmzDGWHdRyjI0FSsC7u1VhUh2T7uSPArIOwspWp3Y3XxRfng5O90114Wp6In0iUv5OVAa7XEb6GqfMerB15wJ3NedAw+uB6OENZobail1YWbjngVgBG4QgJPQ0p1+CjbRLI.
const var knb_Gains = Content.getAllComponents("knb_Gain");
const var btn_Mutes = Content.getAllComponents("btn_Mute");
const var btn_Solos = Content.getAllComponents("btn_Solo");
const var laf_Knob = Content.createLocalLookAndFeel();
const var laf_Button = Content.createLocalLookAndFeel();
laf_Knob.registerFunction("drawRotarySlider", function(g, obj)
{
var a = obj.area;
var x = a[0];
var y = a[1];
var w = a[2];
var h = a[3];
var knobHeight = 40;
var labelHeight = 20;
// Define knob drawing area (top 40 pixels)
var knobArea = [x, y, w, knobHeight];
var cx = x + w * 0.5;
var cy = y + knobHeight * 0.5;
var r = Math.min(w, knobHeight) * 0.5 - 4;
var angleStart = Math.PI * 0.75;
var angleEnd = Math.PI * 2.25;
var angle = angleStart + (angleEnd - angleStart) * obj.valueNormalized;
// Drop shadow
g.setColour(0x40000000);
g.fillEllipse([cx - r + 2, cy - r + 4, r * 2, r * 2]);
// Knob face gradient
g.setGradientFill([
obj.itemColour1, cx, cy - r,
obj.itemColour1 | 0x00202020, cx, cy + r,
true
]);
g.fillEllipse([cx - r, cy - r, r * 2, r * 2]);
// Rim highlight
g.setColour(0x22FFFFFF);
g.drawEllipse([cx - r, cy - r, r * 2, r * 2], 1.0);
// Glossy overlay
g.setGradientFill([
0x66FFFFFF, cx, cy - r,
0x00FFFFFF, cx, cy + r,
true
]);
g.fillEllipse([cx - r * 0.95, cy - r * 0.95, r * 1.9, r * 1.9]);
// Indicator line
var startDistance = r * 0.15;
var endDistance = r * 0.93;
var startX = cx + Math.cos(angle) * startDistance;
var startY = cy + Math.sin(angle) * startDistance;
var endX = cx + Math.cos(angle) * endDistance;
var endY = cy + Math.sin(angle) * endDistance;
var indicatorColour = obj.clicked ? 0xFFFF9900 : 0xFFFFFFFF; // bright orange or white
g.setColour(indicatorColour);
g.drawLine(startX, endX, startY, endY, 2.0);
// === 6. Draw label text in bottom third (if not clicked)
var textHeight = h / 3;
var textArea = [x, y + h - textHeight, w, textHeight];
g.setColour(obj.textColour);
//g.setFont(12); // Adjust size as needed
var displayValue = Math.round(obj.value) + obj.suffix;
var displayText = obj.clicked ? displayValue : obj.text;
g.drawAlignedText(displayText, textArea, "centred");
});
for (i in knb_Gains)
{
i.setLocalLookAndFeel(laf_Knob);
}
laf_Button.registerFunction("drawToggleButton", function(g, obj)
{
var a = obj.area;
var x = a[0];
var y = a[1];
var w = a[2];
var h = a[3];
var r = 6; // corner radius
var isOn = obj.value == 1;
var baseColour = isOn ? obj.itemColour2 : obj.itemColour1;
// Main fill
g.setColour(baseColour);
g.fillRoundedRectangle([x, y, w, h], r);
// Light direction gradient (for 3D lighting)
g.setGradientFill(isOn ?
[0x22000000, x, y, 0x00000000, x, y + h, false] : // Inset shadow
[0x22FFFFFF, x, y, 0x00000000, x, y + h, false]); // Top light
g.fillRoundedRectangle([x, y, w, h], r);
// Glossy top reflection
if (!isOn)
{
var glossHeight = h * 0.4;
g.setGradientFill([0x22FFFFFF, x, y, 0x00FFFFFF, x, y + glossHeight, false]);
g.fillRoundedRectangle([x + 1, y + 1, w - 2, glossHeight], r);
}
else
{
// Raised: light on top, shadow on bottom
g.setGradientFill([0x22FFFFFF, x, y, 0x22000000, x, y + h, false]);
}
g.fillRoundedRectangle([x, y, w, h], r);
// Draw text
g.setColour(obj.textColour);
g.setFont("bold", 14);
var textArea = [x, y + 1, w, h]; // Shift 1px down
g.drawAlignedText(obj.text, textArea, "centred");
});
for (i in btn_Mutes)
i.setLocalLookAndFeel(laf_Button);
for (i in btn_Solos)
i.setLocalLookAndFeel(laf_Button);