Forum
    • Categories
    • Register
    • Login

    Paint Routine on Startup not working

    Scheduled Pinned Locked Moved Scripting
    4 Posts 2 Posters 37 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      pgroslou
      last edited by

      I have an effects plugin where I use Paint Routines to paint an Arc around the knobs. It works fine except on startup of my VST, where all the ARCs have the value of the last one that I updated before closing it. The code for my PR is below. I have 4 knobs and I call the PR function from the Callback for each knob. I have the knobs in an Array and I pass the appropriate index in the Callbacks.

      Here are the four knobs on startup where I updated the Width last. Any ideas, I am fairly new to this so I am not sure how to solve this. Thx.

      Screenshot 2025-12-12 182434.png

      //Size
      inline function onknbEffect0Control(component, value)
      {
      setLblObj(lblSizeVal, 3, "%", value, 1);
      pntRoutine.paintKnobs(0);

      };
      Content.getComponent("knbEffect0").setControlCallback(onknbEffect0Control);

      namespace pntRoutine
      {
      const PanelList = Content.getAllComponents("Canvas");
      const KnobList = Content.getAllComponents("knbEffect");

      //Paint Routine JSON
      const protoPR = {
      	"min": -350.0,
      	"max": 350.0,
      	"middlePosition": 0.0,
      	"stepSize": 0.1
      };
      
      //Paint Arc around the Knobs
      const startArc = -350;
      var endArc = Math.abs(startArc);
      
      function degToRad(deg) {
      	return deg * (Math.PI / 550);
      }
      
      var p = Content.createPath();
      var a = PanelList[0].getLocalBounds(2);
      
      var pathData = {};
      pathData.Thickness = 5.0;
      pathData.StrokeType = "Solid";
      
      inline function paintKnobs(index) 
      {
      	reg n = KnobList[index].getValueNormalized();		
      	reg v = Math.from0To1(n, protoPR);
      			
      	PanelList[index].setPaintRoutine(function(g)
      	{					
      		//Paint Brown circle
      		g.setColour(Colours.brown);		
      		p.addArc(a, degToRad(startArc), degToRad(endArc));
      		g.drawPath(p, p.getBounds(1), pathData);
      		
      		//Paint White circle	
      		g.setColour(Colours.white);		
      		p.clear();
      		p.startNewSubPath(0, 0);
      		p.addArc(a, degToRad(startArc), degToRad(v));				
      		g.drawPath(p, p.getBounds(1), pathData);							
      		
      	});
      	
      }
      

      }

      David HealeyD 1 Reply Last reply Reply Quote 0
      • David HealeyD
        David Healey @pgroslou
        last edited by David Healey

        @pgroslou said in Paint Routine on Startup not working:

        call the PR function from the Callback

        You shouldn't be calling the paint routine from the callback. Can you give some clarification on what you're doing here?

        Ok I just took a closer look at the code. You should use look and feel instead of a paint routine for the knobs. Paint routines are just for panels.

        Free HISE Bootcamp Full Course for beginners.
        YouTube Channel - Public HISE tutorials
        My Patreon - HISE tutorials

        P 1 Reply Last reply Reply Quote 0
        • P
          pgroslou @David Healey
          last edited by pgroslou

          @David-Healey Here is a snippet of my VST. I use Paint Routines to draw the ARC around the knobs and LAF to customize the knobs. I got the PR code off the forum and it seems to work except for when I start the VST. I will try to replace the PR code with LAF instead. Thx

          HiseSnippet 6741.3oc6c07baijcGTxP1j9iwylI0tGRkBCqraQMCGZ.PJJp0i2QRVVypLV1ZE0ZuaY6xCHQSJLFDfK.n9HdUkoxobK4Og7WPNkCoxo4XNjJ0V4dpZukq6+AIuW2M.5FD7K4wyGYWUyXIz8q69260u2qecitaPNKh3YSreYnmyvgjHEkBKePfeWRXnefRgRGc9PhRgan19buniu+wVNdJ6siRgaodvm9xCImrCw0570T197gVggDakBEV9SQZJT7JJze9Cex1VtVdcIoIon7DemtjG5LvIJM0C17ybbc20xlbjy.Apar4dc88tuuq+H.OKqpqLzp6qr5SdjER1RpJ+bqviUJ7ApaP5zsQ2N8rs1nYc8FlaXPV2Z8FaPL61sSCacil0sWmn2RovJOv1IxOncjUDITovU112971G6epGqAdhSnSGWB9fgRankYIuquqMxhXpJ2+XGW6DAUHH1TEDaKyDaum59N1NIomJ9tMMCszRHJ.KrjL7VVBdFhvSW.d4.oBBP5JLH8tps6F3LLJMGDOWWcOuHRPOKneRDJLZUV58KodeefBunZCrdEY2.3gjRTootdUs0z0W8tkJ4300cjMoR4G56+ps7r2kPbq8Egkg7Rx59iBi7GbP.IjDscf+ogjfrjLzK5P+QQNdDdNk.kfvHsSrBzXfZ2ekg18znpk05ShdPudjtQUJyxTCxEKUZgb63tSv4OkD8DKWnbwbCTx66OXnuG7PkxhDMVwepiczwynzwzLVga672PlQY4jLNrQSrYgZNMiUXP7a2ArWlQ4EHStJ51I1HehEOkjL8SVsItPexgOAJ5yJCDQB5n8a0XjVUqbxevxp7KjKM5F.5d6RKswcLPJMti4N7ey+0Qre2fmbC9u3I2hmbK9u3Iazbm3+nbU5u3YTOt5qaF+adNMiaglMh+8QTDip7tfdpVuQdcib78z.s5G1w8wc9hJtzeUUyqpVXUsSppc1pZutTwhkJ5zSqxIZe78zLz9I+DsJmocO3OWcULqhrRUCplJkiHmEAs2C75ilB19i.C+i7aGE330GpfOPy.s8zWU6C0BW8tPoItgj7qiSfdmhXCjX+fYuUDTWcFEQp3QIoXoK.l5N2ArCz.CgwXNeuW4Q6vo1InFQfuaktwpCPcX4NhrZoWCMjjfHwvBbU.BvebYNoUA99tXilu1kXqUdUDw7179VttnJakbQzpTl.MoxmCXtKzmB9y.et0YUs5iC9hBdqFBt3i9LO+NgUP+gEmJmwQwT3KYbx3JpSlowVFyOaE6vppl4byWFbsjYvVFyjsLDXKTki5lAM6mFyYN+LWrWQfa.lKk2ncLB4KYlj324YTpeA0pJeAg4LTb4.dlxASot2XewSSHTe9EBBt1qp0Xt6jqOW7V8Yxa0kMHoiHnwb3WkMTflefVGeXT7Z0JkNVBqOwIhLHD82RGZomePEGX3.86p4n8woiuTyk30O5XH0O7CoB.gpwx1dOnRpjP7ybdAxZEKki7MsbSU9NAGnfi3JThz9HzW9zLRDGyLeA3XPgZjTR.rOxOh7XuJTDU5hRZYypWubyiWctjfbyF09ClVAq3MZPGRfn7.IDBvTNpU0IG0pXP0cYxGAB881yyI5wCIdSJTaEtPEhvcENp.Rinw2dKd7ssccrIAJN13jWRcjpPQMe1EZO+e3+5STVrZvPpF9x26e9+YQqASoZ.941atf0PcoZ32+K9W+OmKLbKUwAJk4i6UJG93175.Tb63us+YbbjpZlkS9Cehxubucrhrv4dv6jfNtgjfHGTmnvNjSfY9wlIRQ0cHguJxeHLKyDSCkB2LhO0ItUlquE3ap+QNftCq86Eskmk64vrFTNSbVkmm7vWt2lmhCrkjvW82s4wDm9GmNeyM+7M4.jgl2QcqQ1N9I0bm9wS47FpMLWuUy0zaV2PAcHIlQq0Wqdy0MWWHCSdN550MMa0PAGWIsH0aYtl45F5MLTnBpBOT80kzzJmneumc4epV4Xb.Q8h4tGLE8yfzMoOASD00+zm5G7pPXtvDH8dVXXeWHfh53j5p2nw5q0pU8lnIShD9ZLI7MimInkGwkqfHjhwalvsie.n2gQMkVK+nMEkpnbCDF002PBc2TFcOzpCGckTgQyNxIBzCl.xfelExT1aSr+fs.F33PrwfT5A5BxfciME6qutZK8lq0ndiVqIoZX.5FqsQqVsZpP.2eVIyKmVgQmiOtB3Jz0Vwx0ou2.JOthpKoWjDae8I0oTTcnm693BGLAt9y6My9CknMm.nmDOlQc1Xsl5lsLza0RIuN12aSQk7qq1rNXVzvTecvNVfGu5j4w6a4chUntHOt2lmK9vPq.nRDpsTAiL6+k+hrrOjB5NJqAvrFpP.KZhX4ufqBopVW+Gmsw+rwZ7OKOnGyuJKh3Qzj7exVV7LGxfoHAWbwiwbHdVy7MS7XrXhGSAHoM5sl34Fy2f7yg3oltx.KA5L2LLhLT1z5O7ICbrscIG3G5fAhklS4MeSjslJC7sInw5QDHSbBOKlztt.G969se6pLVeNj1q+FZqVeZiglNJ0MwQoRhOR.VmKBq9bX8CT4yHhwGvTflqANlhvSDjEm2PASg4WNLOXBRu5+Xk2rd0goA3fRIgWevhIXyFAvW1VDw+DNhulJaNl4HNGendyMmSA5zAGvLYA2sOMOvcUUgfN95BaWcRX65pIq9l.x1bf.x9baNxfXxCN+2hTNN1VLktwwQQU9xnIZUron74i4nXEUJYKDDjUNU90iEBz5aNWnjFkIcUwDGrsSdv7ppL5dahyIpwciDMtAhBzOOLOjdC0z0Vawf6kDcT6g3UdRr+904AuRpIj90H3lXW7sTEWNZwfF9MBnaS+TmeiEGyziGcblPJ56ML2.lEXCc84yt4lpBqSqHZ6Ih1mmh1FeCf1RSUujuX4hdo2OevZtwaJXEmAy0TW2.lQ4Fu4x63kFVfE98ixiEVQEe4SeKpdbaU4E4U.w+iWLAg92DZHS2y0SHAgXzrBh2+VAv9k+lLwPpbzXNJ+YSCxLV85pP6n0nldsb0dm85aMg329puHC717yuLvaIUp1anRg+R0RxuezRr+kGDCcVBpEVVQYZw2s8nnHPjxXhNQdrWvNcdrpE92YqYfZgR3xAPa9kU+3D0fUL4qqPn0Ij83EksRFNg66iQeZEbNaAYkWCLi0MMZttdKCyEGaFLrckB4fse1acrMtp46fplr5mt6RnnaSQzMdr3nwAaqnbM0Ge148IdhQwsxs4XO0ho3Jvi+u3OwwbEKLlO426fxu1fnfKHnf7+XbQHDEEPz2F8v2BQHn.KBvqszX.TEiJ4sN9l3BI+tp8hj1CJYLT1M8EMDuDwxjmXwux+RlUebkpEXIPWh2k9uWhsFu3K4.6SXhp3kssZbVO3rgVdnWwvsBAtazfwIgtEjBlP4w25S330psCuuAyKJXDKqzjebud.SA4YnmTnsrsSZjjhfYbHwCz0m..ftSRzjxrMwJn6waaEHkytVm3G.cm3d7JAHo3PLa4xMx08.qniiIPlu476dfzzlrMcAKkx+QiFvDvXwLnIwdlFl0gfdhOjwyfz0zzqUOyOUWvzgjeAsMdnSXzVADqDFk2BUy6WIkhgrC8O8.KaaPAddKWh.ea+Qd1Hm9LVF66Gv6jxlSpxY1bhkyikaoKTNI9M6oxz5GeSmca088sG4ZEIuG3vcJHOCLV.wMdFt4xfdunyEWIru11XbyKDeW0Cbh5db9XbobvnhxaELx2Ng2TksLQo.7Jp69qdKs2AWRn8UYseI0jWOFaSCl7Vpjvv1i.Tl4MD7UaB9NOwgbJ+c+k7pOKr7bCXioKuXahg96aEE3fdxAi71vHDcIf3xyi3huS5BKgN0YOqGqv1l3YSe.GSlmoA9bAdlFwYlidSo3gW9UTYxMTS2.h4sSJK72ql9N0GFPvXDOx+.HVuJgVCF5R.mOjpZcb869JTBN9KhmuNZaiTToKm0tLuu9U99jfO4M9q7HRzo3a9DeEy7+FB8hI6CoB4W16L.97IXT3pp5z3+2BemoX3ANbSYnSgl1A9tmO7XeOmtXRLJhg9VC.OcQw3O0Ov1w8OwrxO2J7HKGWzsP6QgCAr+Xu1P8P23yfYYgGQWs8qtqUWPleNNzE5dA28CfsLInV2DaZI1HUEBE9r3LukZ77SNhDFof8YGXE.YEA7Lq+Bas3.jX.D3KVXqvjNJrLlOSBRg0JX6dUUFFlADyCQwEcda1kDZ1qodVOKbcokZ2aSaWP8sFO27Z1jhNq1UXOHvbrgOAtsWBAv6fJrBBvmv1SCKqZR8AKR5J3fDjXJTUOb+1fh5o3XDGYEzmDQqewD3aDBOB0pLT9Qtf.WP7qp1GDf0URvAl3JzQHkag4sBWgVg4WeBLKtGwieB7osuiWBygFM6acVxyFvyL8DVRaMJxe.36HdGwKoJENz0IZxpRrryWUhk2kSUhpFV+xnBmT1ErguJqg6DX408X4F9GHzv77yuk4Y9lXHurfX3lpg98hdYGZaICoenXef.Q4gKvOT5Bg7FZg0dfuezwzYeMHw94Jpl5iYhcC08BeBVScsbiIDb9FympRc2ArkGQhEutZuypwyHewMOyYvRKIYkr7hZkTTcGX7bfiUDHcMAaOHk4yZi8RF1gzyZjajTkk0BbQqa96YYtpZg9WEIcsH70G+xvy85ZH2Q7dItvSII2dD45XVZZoCBm5xMeWfWS8KroJuRNAuN6cgPUDk8Ddk4S9shpQKHg1IupdwNK5KSet6XLxVwMmPEeC08gdHGvyHTGREWrtWYVc54U0EUefGtskrkq2wUJl615ZpF555RM26AjfIh+XzXCcCilF7yQ1uzC62I1hdFX0nLDtJ3sfAhInJVDLr6RbNgj08e.K9zZwYmmNXZgWH2BK7fmBupq40DKQMVhstIjZ3vZ7rx2QGOyEhiVZ9LBR6ieE4TFvX8x00MzqCYswFsZrw55Fb6B1g8KagUdazXhF3yqLdE0PHjcYI7sRTbn4kmHlWrYJfEGbrvXC3I37hyvoZiRdnjeP.92RbDeyK+P9Egg7+t038WQfKugv3DWxgZjphu9FooH2Ty3OMTyeTLTSoX6SiKyXMBk96bC1jpIufi1jVv+zvMyTJeU53FFK73Mwk6q8AbDTIuDi3Xb4GwoDaRlyw7w9FaHmBYhoDAmwhMGyzh8mlj4kcRlSTMTxO3Tf.t.d4OxI8zzr.wF1erkE85fJd.oV+IsZR7xbo68EFx6ZpejgdVg6bLjmnyq+L00p0vzzbc80WuQqFF3YtgwZzEDTPR.1ABv3pu4i7Nm9PSrdi0jAH2TuVCrtZUeM8lF5qmQGZEv1dxQJ71TrcC0Cw8A.qZyD1xjUgmtO4I5RRdsMMeCVaSyK4qEn+3qo5rz+iKz22M.V4aOCf+HP8dhUvWuUcgUDcowBLNYgsm1PXl4LOlGbFTMdVtB6I.n51wIjMwFYWTfNtTkMeu5ljWHfzjIiG1RIKyDeZBV3oQdoYk0ygUVJWVQZ91YXG17WUxsbxKIb9ETzvPLHlYETxkjsQyolLqIy5f0Rq0Vei4TJj7JGxvHL7pLgkTHNDx7KTVtmGl0aQlGbgP+YC7DO2nt4aDyyg6Bw6wkIKqKLM22hrOzci+zpdcC8larwZyI6KLyJIlQ.zSVHvVCgIVtrBhqo9TRzNAm+VULzhJFVu95qWei0ZVet8oweU8YzlY07kxE+k4lFPbC77CYYdc0mZcBgdOhQG86Om9bO+fAZeJAhqB2QXFS4Bt62MuWvcCm6K3tG2MBfvQvf.gC8CAMGgZtMYfyQ9djPoTyTBybKgTp6PhF4IW0rjjnBEE6BhBA5t1lwIZJl3AVdRUF7rTMsuivdo+2+IrEBrMA3b6GG1EDLVzXRR2reGLxMjPc1YHVvzjMES9maEXSOCqhaEukm107mwk7Z9akuycM+88fMbozMQXwXL11A2waOv6DhKX4Rw3OPk67INUYSu8887i2qVoczGRhBb52mHo+jKCsUTD54T3hK3PhKwJTvb7uZyGBSmxJftSetbxBiE9VYL29qejJCtzism12e2nrK++q2nryu0G3B7618h+PUvUroFsqT6am9xuI1KoeSzFCr5F3+R9akDM5uFMEfu83qP793yZFYuBkTTF.CY7xtckqpwJn4ksf0urErwksfqcYKXyKaAW+xVvVytf3H570KBsMfHaN3AraxoBwucSvLQgLnCwFhifsuuoKuUO7jGUXI7WrV81pxWRtwWFZJK8ucEUjD506jl.Q3sGZoh24Nzzzr7r0vTKUjcso5Z0S6dw2UncCHfw3m552wxkeN2RqmJza.Qqd0BH8cBgnw2kuuwqT1Nv5zC8wyZE69hnb0jMUdk9U0767EqVpHd6dVjdKsBMHjTMKn0tKOsnicfAstmVcoDLgTLkRoNjRyZqg2uh3+AbUaRjFqU0dn0tPZ8YWNdXnwUX+Jr1oNQGuk6vispfMb5QAynpldMi0VkdMm1uFxGOv00YXHoxyZPu5Csdl4Kz9HsV3eUm9WunJGs2Qqd70ipTihMQ5caDupgdP2YW0za+ywqs3CBXd0kgdU7TXEWal5IUmo9KlH9DDA4w6.lZkTkFMSpRil.2Kx0RPYipZajVpT9xnEGH7e3cngfBSjXOL3MDdjk7GnYB+OBUp00if4NX4BSk2FpOJEoXHvGGBoBT5pZOi152AuYRoMN7WyiPvLOIabUAsHW2iVuFlTgSK1s7YohWv5ztyc3mfroYjbje+9twm1sbMR.XnkmQhF9+IhC5U+q1mnMQEEsep1r5x0Xr6g34xhXeHD5ikG.tJVn9zpIs4Lzr0XZNagmwUh8QPlITUMgAppUtK3iJfXWlUHZcyEbktnjhxX949Qp4eiem5u6wuqf+tghjogGXE7hCMZzPsjqbb7tBk6z6LTqSW+twOiWT0FoOFhap5sgznm9ujj29nG8RFmCYUN8DjVlxFLZROB0B280VwmLxJkSyG59Oqp14T4QZpRWqrk+3xTcrwxmdlQKi2e54VbwSCKVM5kykLgiHK85odBTkn1.DkJBVMOl1XFLMdebel1Gp0TeLN2Ply+YHmWLGBlDqaLertwbw5Fyj0S3coC+sL6SOi3zqJ8TJ3B.CyDIfT1r1M4.iiXCOv3kmDkwGjbjP1AIepjhqEJPpQStvcLx314.3hG4riKLaRINV5jjOwN7TR3rroTmdZ1x86X5Bc8YIa7d+rTLYEfrTNQcfwHbRpAEKJKVRN95STpjPAWnT2TTnjjqrLARVPjjgnwkHYHXxBjLDNQ4QV5lCqhLmRdY4g3opGzKkIEpSS75oecF+jIWFBDNg8HRkK+jKF+LGCEg4fexTxNk9nkRqo.iXQec8oPDFlOBxW+bOMsmm437+7jSXdZtieh9yiJwC0ed4SOW+4V8oGs+mGeP8Y4l8z8+b1w6OsnIGv+LEL6Y7OulU7X9mW9IG77rYN9g8+4zS6ufnPfhwJc1i7eVBx4T+mkjzC9OUhvSM6Y+Gy6YXV4dJ+W3LvzeAuojuB.DanpS32hkN6UAvhV9LWI.Omc99Y4k8VAPJyrWL.RYl2cC.ifm6cQYvXBC7gEV8irNwoODfu1i.+gz4uROV39iB0X1agiEGh72cjsbcSthOBEhF44OmENZoh87CvumFNdoUADKdwyx+ZVOglzaYc5mmiwtZ3yRXN2L7z.9c86Z4BstMACLMoT0no73doEKYlL3mBj2OtJJVL.hzMvSJSZYWEerHex8fWW6XI2uD7OwZjJTUcZEieFPxV.TlONwzloX9wYH+0GAuB6GEf2oQo0BRakUY0xEr9XTWg2aNQQY5vxyk3jMi.z1Ic8M.zjBCLqJrnknEnqWTh1iLe0Ogu3c0SV9yyKswS6Diq9UwIu8QFXAQzRoOsse+6ge3BvYdU70LYLtJGOhbJW7PSfyN3P6BcNosvcknB7QtOILzpO3f6rJ7gKoegDN5XhlWRUqUFhHIEIeH77wVgZcHDOMrore+x7O+CEw9shwe2XP.9fy.dE7tjGJmb6+q8GoMXDNiqgjtN8NGl0KNLhFZOFcb7r5Ra1KJVJoUeco4QPPkfWP6Xt.pg7+xJHGt5pSzpeLMv3Y9yFcKg2YdiXfmMPMnRsKDsS6yCgfmvVmkbEgDSwO6ixyjLCRhFaZVAIJhI5nuluvKftZesd7IqLU0bFk.UhLBUxgq.Oh7JR4DE+IFRJ03Qfwu1PkuCpgwZb3oZC4B7XGWTD2qlSHsxWc0XifhYUm90jvG4+Tvxx+zJkkD9nVELVo14flU3H9ebpkWjlMirnicB4bzOkpv2KE38psKe8GVUXsY.ZA4aHyRmo1gHMS5wYTrWMVKgU0iC1wIfP2CjUPcQNmLM+l3WsDMFUTaLbUR3k6hhwZySUUNcNFSVSNqRD90MImEg4cTk9lpkt1Kghq0bJMzufSLse5k+L266jGKlcMIS0.XEC+PxLyRkbGNWN1.7.7iPiFGEZ+0se7iRsB8i7O3Pn9vNnxCbv6DpOp9Z50zqRSvB+FIH7rzMmMFpIOi3qYaZRFr9fzldqftZVAXXLTGWzuGNIKmDtbkHA2i1vP43K1IKs8AqiZVcBqDSGOljXqdaR+i7OzxtB7GrOEXrgavLz9.sJzxevdZ2QaM1j.oiohMwPAoHao8QKQ5XdwKwXR2zyzeAJoeHNTHKbL5mpn3ZBJGNSFTLhLd7y0NBWXTOv6NjyZ0zEyBLp7eEc2zfKWVaeWGa1Jkk0slvWPHVTKZrwwQ+OdPYi0IdFMWJLeh7ZBWg6nGKwIwhzdA9CzOx2.+Hkw0B3CLB+SJeyqTvVf1Sx0gpjtzrIdOoFgwc33j77z55Dz0kNFXdu0gNHMwQKMDm5Kz6hquZRWZRWtPZLEC1qjfut7ztsg.af7Nu2w.JSrrN0CZL7d5wPv0b3UbR36TjnT7AjZEvhHBdhBMHti1i5Padc92.qEfSNY0TmdyKij9JBn953AbcAcQhSd+XdjyP2q3K+8+Sa91Bp
          
          David HealeyD 1 Reply Last reply Reply Quote 1
          • David HealeyD
            David Healey @pgroslou
            last edited by

            @pgroslou yes start by putting the whole design in laf

            Free HISE Bootcamp Full Course for beginners.
            YouTube Channel - Public HISE tutorials
            My Patreon - HISE tutorials

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            32

            Online

            2.1k

            Users

            13.0k

            Topics

            113.0k

            Posts