@udalilprofile could you explain a bit further? I don't fully understand.
Posts
-
RE: Crusher Laf
-
RE: Crusher Laf
@orange is this useful for the LAF collection (or too much of an edge case)?
-
RE: Crusher Laf
@udalilprofile You will have to draw it yourself or edit the HISE source code I beleive. Here is an example of how you might do it though :)
const var Bitcrusher = Synth.getEffect("Bitcrusher"); const var BitcrusherPanel = Content.getComponent("BitcrusherPanel"); const var StepsKnob = Content.getComponent("StepsKnob"); StepsKnob.setRange(4, 16, 1); StepsKnob.set("stepSize", 0.1); BitcrusherPanel.setPaintRoutine(function(g) { var steps = StepsKnob.getValue(); // Get the number of steps from the knob var width = this.getWidth(); var height = this.getHeight(); var stepWidth = width / steps; var stepHeight = height / steps; g.fillAll(Colours.black); // Draw the staircase g.setColour(Colours.white); for (i = 0; i < steps; i++) { var x1 = i * stepWidth; var x2 = (i + 1) * stepWidth; var y = height - i * stepHeight; g.drawLine(x1, x2, y, y, 2); // Horizontal line if (i < steps - 1) { g.drawLine(x2, x2, y, height - (i + 1) * stepHeight, 2); // Vertical line } } }); // Repaint the panel based on Knob value, attach it to the FX inline function onStepsKnobControl(component, value) { BitcrusherPanel.repaintImmediately(); Bitcrusher.setAttribute(Bitcrusher.BitDepth, value); }; Content.getComponent("StepsKnob").setControlCallback(onStepsKnobControl);
HiseSnippet 1738.3ocuX07TaaDEeEfffanSnSO0SZ3jIgRrACgNzNguCdRf3IlPxsLqkVYsikzpQZMfSmLSO1i8Z6o9uQO0q8b+KI+Gz9d6purMPR7jVyWZ22G6u2aeeIZEKrYIIhXhQkyFDwHF20r8fPo29dTdHo4ADiEM2iKsi6m3c.OIxmNfr2fHZRBygXXL8SP1LleFh5y6e7dTeZnMqXKB4bA2l8Ld.WVraqcdJ22+HpC6LdPItarSSaQ39BeQe.RSaViDQs6Q6xNkhrMkI4XZhGw39laZ+caTqCq1FarUi02pQiMar4F0bqstams1rQm0eTi0cZrQc60IFydnCWJhaKoRVBnz8DNCZ6ItLTe.myS3c7Y3h5j1vIq2lruG22oUl+IgPLloUg2ZZs25qMOg6vy2uvqcOEAqBIJ6zLl51fT8OAHYTBRyngzhlssi4QxBJHd9BylgRVrKEtaJCEMujotvzrB34SjVWPisxtwYwV+fkJdX0tL4gttLaY0kJntzxaesR0hFx7AQ2W.GZnDEdeQPjHDVTVdEeCqj1RVTxSCEctQwy4.ELewpIL4KngcYUarhU8MgeFkZ0kRfks4ukszJV0VEoWYDnfr0BtBkuPzWxCYUc6GZK4hvpcW1pxOVwB9ffDUTB5Zx0O.wyo98YUWdaqG9PqmvjVROlUX+fNfST3lJharHPQnGHTt5tj6H8.0I83InldEtFzTNCdLdWOYINNVsQYVP8+pT8n02C0m4vrbbllRUYNSyWY9tq5BIk656WUm.lrZGeH6aYjHpCvtNHldoB+IRJO1llvTT5hNNsP4xdoGWxRAnqH1pJBANbx01F9y2mdtV7G7.v0hLocuYf8p5.qbq6WXXaOL80.5U4VO.tnuYtFTXoeat1z9fBF6tpCXVOCuuup9JflWwZf560zWlGKh4uEBEo9V9.S4xwcQ.jZIf9qmZHCaLidBqkeB4.aXyPCu7S+bVrjaO5Y+tJ5e+NLJF35ErHLtUc2Dox95.WNNVhPKUxzEXv4JVTojZ6YwAFEJdO50U3gnlsxB0AQxCqwDvXgeU6rruUzJZYHWX9Qych0PnYP.ygCE17GfwmkXCCR1UJi4c5KYUKsO73ArHoWl12tx6.q5Cl8qC5THbepueGHVs53fGcPkrsSER1yCqprfJfWbTRttWKsTk4yhuVxXWr3aSvp5JAk8eHiPU6gaEL6GWq.asuoDihvlgb4yiXoqOR36fk3wmGuwAI04hsPRQHvpT0.4KSafz1m6vhIbGr6QtWknLfhN12aGxKad.URyTEnU3jhvnVzfLNfcAz+W2aZdyCXI8jhHnUd9cJXz5CdgrNWX3j5bKl8HMHibEwvz.O2AYOnJ1gK9EXoNkBW8WDkUleFK7QYbJ0WIS8+M7Phb.59m0TQOf633yZIR330aoAe9yrdK3d+1uhe9iGGTd1n6sS.8phk01IouqK+J0PMPc2fDHwHpY.LqCw3qLeYByxg4R66KsR5A5AxQ6wbNSn3WxtBLo4z.GllZrg.fwODN88oxgmIAmVKk.B+xCBfiGDBl0fxSy8ILnRsacPkOVHtnYK3B265w3TWCFgnt+KvX53cKXpm4o.fyXdzqmzY4p8IOKWkznU3LwC+tkRGtto3L9YyhROQX83X1YhVvL6USnAQ9rW.XbEqN9B6dXr530qhzPXOjip1dzPHmKYRJqM6moIbI5Iw5dBEROvryS6GzFluvlseJ5vD0ovbc85ZY0EZyBcTK9G3SJw53ZiTh0yHVTLjbJSdoHtm55H8YHOS666T36gYjDWhEW3oQovcfZuVB+AQdhPtMtkliLjtafnenLCtv6wbFk6ig0s6m.kscddXafY0KOYLMz0OQo34LqsJ7EDlepvAHM2QTavwNnEEq5snI1I.BNgtn14AoCg0xwI52hZHxnVydeKsiCPcfpjITnAuxZQiAwfWd.qlOkwzkptqCZwUPJ4T5itYR1DKjy0sJ.6EOEsSUYDyhrVIGFjgroELcuZ0bRiC+Rxc6f2XpxPkTxNPRYqHF24Dd34i1U6D5UirWscZWpFOrwui03a2icoF9kKbpsur4ZHio8Czk1G6D1suTD.oLpxcjRXbtwwHgLNFe+iGAi58tQLNKVDlQFSyWO9F0IZTFfiXxe98okD8mfLnu4FbhPWKbNjPlpTUR5XIoKSSiZ5LTXTtYn2O2FH6ID8Bnp5ASzTN+uT8JfZGKdistfLZu2QsCTQMTkuLu4I3Zq5iN5FAGmg+Fa6gU0XBt1jJ35SpfMlTA2XREbyIUvGMoBt0GVP7egTZEAL1ER3acnJHzv3vPJz+TUUj7uqq1iP.
-
RE: UI Element stepSize smaller than 0.01??
@Morphoice I think you can do it directly in the script editor (you might want to double check to confirm it is producing the tactual value):
Knob1.set("stepSize", 0.001);
If not you can also try
Engine.doubleToString
-
RE: FX chain for a sampled rhodes piano
Oh and I think possibly you might have to have a github account to search for repos on github, but if you are new to all of this then sticking with just basic scriptnode and stock effects is better!
Also building these types of effects with HISE's stock effects is possible, but would be a lot more difficult than just using scriptnode (which is why I suggest it). Either way, my example contains all three effects you mentioned, Feel free to add more knobs as you see fit.
-
RE: FX chain for a sampled rhodes piano
@d-navarra For drive you could use HISE's built in Saturator effect. For the other effects scriptnode is going to be the easiest route.
I would suggest maybe watching a video from @d-healey on how to work with Scriptnode, not necessarily to build the networks but just how to connect them to your front UI. Then you can check out some of the examples in the snippet browser and do your best to compare them to existing literature on how the signal flow operates.
For example, my tremolo effect here is simply modulation (changing) the amplitude (gain) of the signal. You can see I am using a modulation oscillator to do this to the gain node in scriptnode. The "Rate" knob is changing how fast the modulation is happening.
All you have to do is attach the knobs you want to use to the macro controls (the very top knobs), and then you can assign those in "property editor" of each component (so your knobs on your UI).
HiseSnippet 2559.3oc6Zr0aiiU9315zIY5LKCynkEd.YMZQpcoTry8vnU8dGpXZmnltyfDBUN09jFqZ6iWam1TVsR6i7.+H3mAOxi7HBIDR7Bnke.Lh+.CeeG6DebtzlFlK.BGo1bt7c9te63v5Ew7rXVmD5Y66yhHDk4aFvMYgg7.hRgiuxmQTVRs0UdQc1tC01ir+NDkGp1hF0MfFYy81sG002gQ15JeZXHyhnnL+SwMpjeAh34UquE0g5YxRmhPdA21j8LaW6nzYatwOw1wYOpE6XaWocWdi8M4dayc3cAhZdUchO07b5YrCo31lSk7iogcHJehZUyFUzOkoWoR8xkpWtb0xUqn2VuT6SqWs7okpUtjU4JFlkHJ410xNhGzJhFwBgCcKt0Us5vuzKFAuvNz9TfqfAFjV.limlrcGaGqARnPPdoJIulOVd8H0CrsrGLepb6aHVPKEBYglxbWGIYbKHIEIRZgXR5ApsLCr8iRWAom6ptuWDKnM0Lq9KduDkem51bXCdQq4ROmsW.LX..KWUWeUM3Oq7j1c8LQSAMt2g7H1y8VdkBeQg7E9xBZCuT61icMDMAbGGVvXWFMGBtN.W1qq6orfU0tf5zkMXi.6mUlla5jolwbszF4d66YG8beVx383NVnrB+9nZ.RhXCcmRnP3aQBMw8SzDsbrsXADaKTMbt2omrSf8ELhfARL82nve9uuNYJNf7hC3kzNY.+23+oe8TA9CDfeb.yEj.GARpLGyu329c+SqS9r82gFQQiqDdC3WeVPjMJVU1gcA3NGapkWcGV34QbeAy65y8PIgRtXzeu9FhTOlSB2664jv88jCQbk7fKssh.WbUkeMLnCy9rNQ3neOLRYtIilmQOMAM2QU7ciIhiOdiHVO3DVTMlV7oAvIJczxDJQd9oRw1SFSRnc+MbssrbXM4g1nQc5J+s0C61tscOzJ66Q76aesukHhbb.XdfARnPbPvsLyJ3Qkkgb4V.Y9gpGxCboN1+RlUSVfIvBPjzomamnd7dB.1raD+RvPLkc+J5FuUzjEuQMYdUjZP2hQ3trDqL+keJ7xlEc4rq+TUukrvDUQ2WFDYOgu5ye6niJME5nj3NixfCQsSmK2nwxlDELYk0qlriWFxMUqkSUfpXVJYvMwOtzdxk3PFMoMTt.2pqCZkHWCAVcUxBHYKm3FyN6AryUxLysnvB8qsvhokDefZS6HyNimFmaLzHZU8VfFSJG6dp61tMyLJk.WPcue5rV600i9LkOuXL9uapyt.6Yb9yT1UpmuTA.ujEsoKuqWjrNsY.KaQ1.iyCiFdNk4eKVS4X08eKo3WZ+6XktvzoBtgBwNh2Mx16rCnQAn+r5gccaAcQXx.J1CBKFhg0lCqXKdrNNFInVPeQhAuFdRVz.GqjrnQ+EGiWQgj3RfUFJShyCgQoGWQ1+J0zBZ8CXXXii4McnWsbnnyJLXxpZm5vMOuEjzdzpfSBPsEtikMS3qYoX4bugLVdmH0GThM4PVzk7fyEVoIeG78PA+2ruf+jD8QOxKXAgBGrEU0WC9P1zwgeIFk1NwRETMh4ZxctxuC2y1DmJdG8Yf9NjwbAz84wTaGL3VqtgPOBVO2qErYQKuXvkCEUds3dTSP7dUSJla8ApXWFfaCKXMyAtOighSsYPocbKuiYaHN52hbrvDHYWQhGnAYTM1reFKrh84TlGgHVnIHubH9WTsMsaXDICotDPpAr0hWYbjSentdZPDareOCvLIifn.yE6krsCbxP5zWD28wGLfI2Sb5jg.3CP6JIlJALgMozzHd6OB3xCr8R1nJZAPNf1av3hv3VQLezOin7Q35vSi3mZkqUpV8ZUJJTT4DogIC.0..cGFHFbhxLGY5v8Cgw00EOFFMJp2nXiokRfzKcAwhFVjXxo8HX+0R1K7QuDbpiPc5CQc245jLFYjL4W3u75W+W+5pem0QBHt9TIFoXkpkQbWpRQ8hUqLDlQhqZLqVrT8xF0qTqAA0ztPXGQEBsNmcYrAnbBBRqKwpJNlFbFKRjoWVGqHwIKlRUo7TZRwT9J8vGGuMdxX.n+wWy+mu90+i0yxcRIzvNk8XhfugIMNmLjDGR.qbruqSS4xIiocRF2Ekgr9WRc+vWfqZRc5K7gnQaw4m6REQCmod1mlrY8KA9+mM6cZ1r7pQIB9+COIVJgNtjEoqNbRITSbSoP5mzZNojVETc4VwnOC08HIpavNFGIIc.yB9WRkGZZ6HpDlLh7AxbJs73PeF3uIB.0gNrd88r2wNzG7t1BZXMIPXlYfw66Yw5g877CLFJlYtoMuX4LQ+iyFDmD7.TJjAtaJMyhoHJGtngDlxoVTOCpvbEF5I4EK2.xMVEbVkhKianXwFMzKWoZwhkJWuV8JIYE2Kf84cAy2qFhjVTsn.KRobDMOLIggQFgQNUipSPZrj.kZGgdfuwJLX3TuxB+mhWyvsBQp2DhhqArYGZ3sTsNUm7zWzjTlOhjmVNUeF87r9X2M1GSrv37tRf4F7qVHsW0AUXLgT14TOC4hlYu.HAmQdy4clUFLwUl15BxHDOajPkIBwylTDxDXtAg3bSrraIu96.rp9vVH2R29GpVYsxEKVrldsZkgZHKo2P1.aHW6LlXSJXzvVs2QEofaeznR5FX81Ps50K2nFDdKoFcWNOpCTFAIartrl+ISRd2K4VR8HVHKgNlBO+IYbNZg3IWG5a+v9C5.o3Z0hgtLzgQIiRUFaPloq97L4ly3xKmg48do52evUMBU6Hda8Bs5GJFCsFdAS6oLnNnQuzwrWY3eXZeW89S86p+4lQ.5ONf5E5yCybvsXt1Gy8PdLcxOKjgB13znRyuMmFL1kd056AL4XgI8tHG9JTG8tQWX5ZPH6suKs+wbooK7d32Fvalqv+83aYHyUMmuOM1xFSrtq2ELGvwH4txRbq6OaVC6C3d79s9jp0OhAcwc1YrL8zOVFZynHp44oy7nMNh4vnxVve7FOCr7nAhpfmMYwanqc+iTiIWMzaT6+de6Py++zucn2IWkv6Bb3RMC3mXFeCLnc5cDy.7sWRO9Gfi0Lx7KIQ73BQ4NwzL6QMBfEmU.KMq.VdVArxrBX0YEvZyJf0uY.wjPIkOitlDxAM2UTZhhxtdTvJW3QPXtmxrrXVwW6GZZOXFOVu8rchKDpsM5VLG9uXJ4aGecm+vL2r+ZVg98+MWQlqghJDqmGDs7iCirDaeMG6Se7JOQqPAWHnN.m1mpcAaMZ7grrCCh+uh1k1Qcz9hBZZZhIf83Z6srwpZcBE+9.V9wuj14m87W9reTyMOZyC183cO5jc94OdU80ptp9pFqJticiUz993Qz+IuVJ3Ctm8gNjcEGhNbH5qUu+wrxSJ7kOoPgjqyDHFsDZ+SvNoVMyn7ojNND17.bhogGBcaBnyPfth8QFhq7EHj+EPJXoSl
-
RE: Midi Player Liste Browser
@tsempire Somewhere on the forum there exists an arpeggiator browser that saves custom MIDI files. If you find it, it should help a lot.
-
RE: Missing parameter on Hardcoded FX Sanity check
@Mighty23 Try removing and adding in the Hardcoded FX again. Sometimes those modules are buggy and need to be reset (for example, if you update HISE).
-
RE: FX chain for a sampled rhodes piano
@d-navarra Short answer is both are true: many of these can be written in scriptnode, and many of them already exist. You can accomplish a lot building effects with 0 scripting.
I would recommend doing research on whatever effect you are interested in, possibly even ask an AI to explain how they work. You can also search this forum for effects done in Scriptnode.
You can then attempt to create it in Scriptnode or you can search for faust examples.
The easiest way to search for Faust examples is via github. In the search bar type in your effect name (
autowah
for example) followed bylang:faust
Here is an example of the autowah in faust and a tremolo done in scriptnode:
HiseSnippet 2113.3oc6Y87aijTEtZmzIi8DztKjUKvoVi3fyRjochS1rLBEmeXOaDiSrhMY.AnPktKa23t6po6xIw6nEsRvANwdduweAq3J2lSbCoUh+AV.Ij31Hj3L7pt51c2tamXaRlAPjQZRpWUup9pW8deuWUM4ZFwVmnetmsgiCggPRKzzkpQ77ntHoBsG5PPRqH2ZnMq2A8vF1niNDIkWduAL5U3dn8G5f87H5HIoEdBuao7Kh7+4k6tO1DaqQhDgPmQMzHO0vxfEIsY0uqgoYcrNosgUrQWo5QZT6CnlzA.TVPVE4f05i6RNFyGVNYzGf85gjdW4s0d+sTufnt0V6TYycpTY6JaukZG0M6bwNaW4hMeuJapWYqxZahjVpltAi51hgYDOjzh6S0G1pG8JawBblgmwElDdixnVvJKDWmZpy2hbonC5YXpOxF4AVL4XVrEDVrUkaXnaLRdjk6M86PIRi3FPobIg2BIfW4IAuLfjTLHsn.RukbKMWCGVTOb77P4irYD2NX3bJNTDiEI8B4Cnv.rYkrv8I0cgFiTn31ppqq.+2ZOty.aMlA0VgZeLkQNwt3ZEddg7E9nBJi2UmNY1GeYbollD2L6l6Z3dSJVzdf0ED20UtDaNfLZfv1OoMcooylpI10wFH09HaC1INjf12rSAJvrA+026nCwLL+PIPFLNGhKyfCGoCIWBgDhin7xGR75ynNPPQpyOvygpOvDyR5NwC5B5.rGINC4GT1dFrgwCJmAeL0azGaZg3aI2zfo0KaLlKCLBVp6CLFDY9kjq0oCQiEAvEkq+8m2vvad4kxk1FUHHLDVyIyjFF88qji7zcbINXWRaZSS7vhdXKGSxo..WW4BSpV+VFeHIc3giX82mOhhZ8v11DSu4IJZo6HlIzozALC6tMvLWiqAtyiGX0BH30HGDfNPlTNd.jnsJuM2onEjnxuw+D9Inyx71RAcVNryXwdGSXWQc66SIF72Hok4F9ubng+7fyiqQ6YZRu5.pkiQfiJbR3KqI0bnSOpsgFWjXDg3cOK5.XoB.MjQpM1vj6Y2ZfGvUnehcKXv9oAkV3Lhqm+DurrZI3efGxwTcnqkpi0.y6vlXVOdHCm9A7OItkzF4mlAhi6yHxJlwf3qPXVTgoD1AVb6COGpe99P5HQhCdKHdLGeQWQ9Huy38pgMQmwcJ36M+4TXTEvmOzkk6fG3wPI1Jq.aEWRIQOoganNyDFyMFFyKefILuGoGBv2XjQnt+riFSg2f600D6BP.Rk4EplXgQw5fuxgs.v1vvNXnQbUMvWOtrpsXDGd7Xfru3Ou8We2V8IWIrLwYi4nYIeNbzXyxK28PBXaLYojilQH8a9zO8us6rAoGJ2Z.XvTdFvKEapdwulOUYiq3Fto1T8xYDWxxign+5e+m+S+7rPT0M27urKp0U7TOswtcILuwNZQ6So8sv9jC2U4nSQt21kXwYC++j6uRI2yKyBL7uF4zWdJ3zi.ZZtwn9tY1Q9IULGa.l+6womKFmdAYKpt.tI1MqFa2LZDo2BwT+9LKTbDuhL0SCtOIuHTTpS.HUTrtSC3DZOKPl2EDydcHMxgFdNPn79CfhME2HKgD99Bt280gd00f.Sc35D9pG5omHQzRyN65aNdhHAi6MjHpA2NlZlmFB+GDGROe0O6I+oO7WtaZHUYbHAIm9cogT0eg0eHHQTcWxOa.DqMLBWq8i9je++n3DRP9w8qxS9aATY9Wv3VxJ8xL.o5LZ2VwGjJmxIXt+RimU5xa8.8IfY3UNj.F6IBokka1C6MmNY2SXZlK.KFcyRxNDb+jDMOTPz32QZJl.MtExkESPtDc44Q0x3WohMQSjTymADJ.Fl8t78xHilPl+969lhJYiD1ntoRfDXi5lcdi.MtEaTtD1nIV19CR607CdQFksilJpoWz8291UmrWyjcjmEVoL7pq9ISG04O4qb3eLrFdKJk0CpGCkhENaPVo5sfq6B61JxmR7HAK8bPCHpOHFLEGF7pkQ28IgFoJLae7pelb0IQJDOdbxgmIpuHQPZ7Lc2oWM4cDc9P3pSWR7eGe+JOea+1cntVJOg.kwwQT4a347+7o847cl5my+DMF.g1tXaOGpGobBeJhkQapMwKgzwzXiL0Xij9SrA1ImZgnDihaJpClhXi6AUCEtQbgMw1IlLnchYpA+dOgM+hcqYigaN0h.6b8ShN4i42zbfoG4YF5rdkiqXj3MhK9Cvt5vYnVhWKcga5iZLwquk7giiM9LdGykdM7ENtad84WiOPdhOBS9PL1xfmDtl8kDSHLN3g8BHUBklLNrA0lFdS0nS8SIvcr61kjrZlr1P6wXXs9QRVs5oDSBuHrQh9FUeJbUNrqe8+ymsX1+fTYdd8UkEvUgSdn7eueXiE9e5OrwzG8A7g+m8o36HC7xan3eTp754r7Uwql8pXMrvZtzy0DO1HOn+A9Rf8scvCZ0f2VoL5xwKuyBRYbtlVxoJkhaLuJt47pXk4UwslWE2ddU78lWE241UjmQO39K7XCnLml0D2CTRTgieXBhDbEQwKbycsGIwlbccCSwi60wfGVji+KAR9ZhuBz2JwWsojtmS3mgGk68kjgDmTWVwG4wz8GdISiKdzZOVoPAKHCInmx2Q4RRIrXRJZRfjoqobkAqmxyKnnn3K.FikgcwxqqzyyzPm3V7QOC26Gdxyd52t4dmtWiZsqc54G9iez5pk1dc00KC+VUUs7ZJeS9TD9SdkH0G8kRFaRp4OIpvjnVZmvoYsGW3idbgBAubO.Fk.r+t7K7tdhV4ifNuIL3QqIullwVt8fkqr+xsQ3hwWq7EPn+EXNuk..
-
RE: FreezeMode Functionality
@bendurso there's an RNBO effect which does this! Not sure if something exists in scriptnode but it is another case where an audio buffer node would be useful
-
RE: Connect Button that moves LAF to a "Script fx reverb" effect
@tiesvdam In my example, the knob is styled as the graph (in other words, the knob is the graph. You are saying you want the KnbSpread to control both the graph and the reverb effect at the same time correct?
In that case all you need is a control callback. Right click KnbSpread and select "Create custom callback"
From here you can assign the value of the KnbSpread to your graph, as well as to the reverb.
// Control Callback // Pass the value from KnbSpread to both the Reverb Effect // & the Ellipse Graph inline function onKnbSpreadControl(component, value) { SimpleReverb1.setAttribute(SimpleReverb1.RoomSize, value); KnbEllipse.setValue(value); }; Content.getComponent("KnbSpread").setControlCallback(onKnbSpreadControl);
HiseSnippet 1476.3ocuW0sTabCEdWfsSwoISyL8APCWztl3XrwFBcnc.BFmxDf3AmljNYRSk2U1Vkck1QqLDmL7fj65SPuu22a5yQuJ202f1izp8OfPnLsQWXPm+z24GczY6I3dj3XtvxtximFQrr+Lm9SYxwaOFSYV61wx9VN6iikDAJgz8mFgiiI9V11y9.EA64myRu9qMtON.y7H4jrrdBm5Q1iFRk4T6s4CoAAcw9jGSCKHc6M20iy1lGvm.3YVmFVQXuiviHGfUhMii02giGaYunypde8JMFPZrxJq0t0ZsauZ6UWowvFsFNXsUaOn08Z2xu8JM8ZYY+I63SkbQeIVRhsrm69b+o8GyOgkb.OgFSGDPTaZZ0GN4Dxc4A9JWTQ0Z6wz.+doApXKvJ8xCaylD19Bm8o9zL54guOWy.kqQw.n8Lkg2rkfWyhvqQA3cAPxt.jlKAR21oumfFIy4nvyMb1kAYygXHOUDJIxZMyu+INayAIXx5g3iHcEvlLMba0nQMD7S00qTYokPOAKnX.fw2rBj4hkniwBzCYC5GIHXez2hRM0HhbadXDmAabWHShE.6TRwcBBnQwjKSSiHkUsOMLJfbH4XhXPSPacMrR2cFNj3AJlH.xHQYkEZhuL.Orv45A3SR1i6gC1iyOZKleWBIvU434xWWPFQUWN5Ng4Iobl6B9B7IGxkXwz9ATehXgZngoLGUCwG7yUq7FUr6gL9.TG3B.KF3EivLeTOdLUIYEDrTP6DpubLfJPs5X.QOe4WrdFywD5nwxhbaUfqGQk0dFvNwHKgV9rL+AfowHZtZ1.zLoutXOn1D4pP5WECI6fIjpYlHVKjQlDLbrRhC3hPb.80D+0QYVLMu1mHkT1n3LqvlDZ3ECFYk0UBevjvAP+F9PDwvJ+PkB9QjmZhJKqEeOJifjiodGwfx7LQCwu5PrOchxt6igpgPJyUGJpYb5pZuFUv3jHP3bEWpD7VrjKWv45.o7TOL47GpBaTvVMVGQQeSQy.DtycRhhuQ+a5oKRAqFFKpz+NnlUWujPbniHUNM0kDX1Hhay5MP2E4JRAclCTsFpQc3BKHPUS1UsFUOVcoR0l0M4Ow0OgJGuUPzXbNkwTIoV5IVs.PFUWUjabH2mmVncWiKTKq5JiRlpmYYf7hnkqU3+eQsh4YyAeZkSU9vGtsfx4N2017qrJin6corjfGf1FGDL.dmQQqGzNDJkHHckLZnfGVncljiFvgBOk.IMRPIsWTp9kZxo04OPfiFWgxBT0lo2+QbVlwLmtqWpSTK4LUMGluT2Lk+rkTJnClHItkYcHmG1Gtpkp75UlOOTnTTem0Mk4oWV.LsibRwgFcogF2yCbvZ2rRAG6.tj7HlqF9UNsB5rrFN7B4YrV.QbgrUyGHtLEcY5dEECdJAg2.K+vpy6+g0hu66kDbJHHmsKiJeTDg89lFvxDQgGgmwfJPTo9I3aYdBN4o.KpuZ9p7LjkF0lAfP+5Cd2FVWAKbCmrjwEXfue2NXIVMQfAW.ViHBIUEFr6PNFlGKY9f4c5PhORxiz.2TJ.SLc0f9qJNk2zhaz8XyI7ialzsMixl+zlVWoyqni9php+u93N+vQvXYb+IAXY4Y0TSzZX.0YkFPRMDD7TsbZwId+Oa.tqJDusSOpza7EiwYt.LpJK+e.ilwduoSRGvb.NmS2m8QXF24ebZUSgFhljX4Y8JAlzFlEuxzAGFAyjXHsYqV+4FOEdBAzNvP6Wd6a+iM5HldFZuaimVn1SSnqfPdMAxNjbp+1F1ydkCAMu7Lvg7Ip4mfG+ET3JgCLpTe30ZOBj.XLRfpUm8LplRI6an1qJB5SX95M+MrLLap1aaX1Lk4GkyHD6I3uzKoYmJ29oZJfeyzeq27vGcB6QMK0gSuBgOm5kddkM04Tb4qqhsttJ195p3JWWEW85p38ttJt1GVQ0W6t0DIOLo6jk0981Q+hjs8NL02JpuGZ8OvpSKri
You will certainly want to check out some of David's videos on this topic.
-
RE: Connect Button that moves LAF to a "Script fx reverb" effect
@tiesvdam Here try something like this:
// Custom Look and Feel Class const var KnbSpread = Content.getComponent("KnbSpread"); const var reverb_laf = Content.createLocalLookAndFeel(); reverb_laf.registerFunction("drawRotarySlider", function(g, obj) { // Knob Dimensions and Position var width = obj.area[2]; var height = obj.area[3]; var centerX = width / 2; var centerY = height / 2; // Spread Factor (Knob's Value) var spreadFactor = obj.valueNormalized; // Ellipse Settings var numEllipses = 5; // Number of ellipses var strokeWidth = 2; // Line thickness var maxRadius = Math.min(width, height) / 2; var step = maxRadius / numEllipses * spreadFactor; // Draw Ellipses for (i = 0; i < numEllipses; i++) { var radius = step * (i + 1); var opacity = Math.range(1.0 - (radius / maxRadius), 0.0, 1.0); g.setColour(Colours.withAlpha(Colours.white, opacity)); g.drawEllipse([centerX - radius, centerY - radius, radius * 2, radius * 2], strokeWidth); } }); Content.getComponent("KnbSpread").setLocalLookAndFeel(reverb_laf);
It is probably worth spending some time on with David's videos, he has provided a lot on LAF for different components and Paint Routines for panels. Even my version here is not heavily optimized but should provide a good starting place.
HiseSnippet 1200.3ocsVs0SibCE1CvrpjVV0Up+.r3kl.YCIjDVpRq5BIjVDW1Hx1c2pUqPNy3IiKSrGY6.jthW5+2J0+AsGO2Cf.1HU+PxXet8cN9bwCjBGpRIjHqRucVHEY8M1Cmw09c8ILN5vdHqmaeBQooRb7Q6OKjnTTWjk0x+h4.qUWAEs9medeR.g6PyOBgdmf4POlMgoyOcvqOhEDzm3ReKaRAta85CcD7th.wT.OKaWGERbtfLldJwv1R1nekn7QVaXuiyOzt9HZ81s2sUyca0ZmV6zttW8ldi1cmViZ9pVMca0tgSSj0yNvkoExgZhlp.ktuvc1PewU7XC7NlhMJfZ1z.MDrb7wnt9r.2AoAGEBYsxf7P0xwgpuy9DlKK677P12FQ.mKQwfl0RODjZ7E.IqBPZkXH8B6gNRVnNmhAOes8gb3Fzi.2MEgRLunk96Ur2ZKb2oJsXB9Xg3BLg6h6SoA3tA.2qUBtWTZ7kDI9H9nggRJwE+S3tBPsbcswTcWwjPAG1Td8LNVuRmBBJoWRkiNOf3UPRGfOM8XgCIvX283tFqVFDrTN+0jzwLSJX+obGMSvKutqjb0YBMQNaX.ykJWuJ1Kk33pXwn+nRoOWBbpi3hQ3dPZFWAzTQN1.ghY3rDFVFncEyU6CnBDqFAPzG29ScxH5SYi80Eo1r.UGpIx9AfbrR1Bu8sI96.wDkDQMhL.sjvXehCjMfKaP52qvuiDLkVISEpHlR3IFCWZ33TgbBIf8mT2N3LMdPP.KTQwCoZMiOVkoE9zIIzTfRZ2wv7oSmLBppEdXZBobipkhKnuOIprcD6Gy3Tr1m4bAGRrxXcB45yHtroF8dBQ6WaBiWNJTTMwoqD403BJmFBLmK3VyAuMlykK3b8fq7TOL19dlvFCzU8NXF9GKpF3fM2LNJ94neSstLErQvXCi7ahaToybLIf9NL8rTWRR3iokaTqN9k3xxTPm4.UphqWqdULvPkjaWyZbMkorvzLqb7epZWwz96ED5SxOwmooUSsXkB.YbMSRdhCU9ioIZuLwEplkckcRln2Zk.4MvaWsv2epZw64DCeSoaL9viVXa7s6T0lWwVoyZkRqGwB9oBM8M7xlRxUKcSI7sI44cuzLnPJBBnx6krY3g7gDrLOJEuJ9x3ZpDFglky2A9YOsNvNwAkBLJ3GxY52DRS12WD3Z5rZ99t8qQIQUSm6DDBrpi5a+7j91wcyPLWSS6r3MJxAJNoE8aG1inIopBzJXoPpTyLNjUO5kvX23QBqZ2iptPKBi3M4xDb5mjguFYYasOXxYlOlAeDUaa1bMrItB2r6uhFrem4QvjPg6z.hd9wilGNjP.twlaljYREzqVOqn69ELyr9CNy7oBwWXOfoc7ueLtz8fQ3l3+CLl7Ri0rOvyi5nyA3J18+vh9rhGw7mIlZld.s9jLy8OLnXHzqxgBVmyoAJy88Rl74380M6MQfgTtazl+EVIDaX1akPrQJQzDhiTbtSbUf4sLeUzI.l3Qu0aU3Qmvdbiam5iPSfmVctiy7p5NBt8hJXyEUvVKpfsWTA2YQE7UKpf693BZd46dSgGRFW1fPmL3fnVUVVGvIPFXT1J5+Pb8zXk
-
RE: Connect Button that moves LAF to a "Script fx reverb" effect
@tiesvdam Ah but this is the whole project. Are you able to make a minimal snippet of what you are looking for?
Your main issue is as Dave says. Currently you are using a panel and a paint routine, whereas you need to use a slider and a Local Look and Feel.
-
RE: Connect Button that moves LAF to a "Script fx reverb" effect
@tiesvdam Can you share a snippet of your HISE project (Top bar, Export>Export as Hise snippet)?
-
RE: is anyhow possible to insert a plugin effect inside a scriptnode workflow?
@JeanC Yes, after you compile the effect to .dll, load in a new node intro your network and check under the "projects" category.
-
RE: Draw trapezoid
@mmprod Maybe something like this?
HiseSnippet 1044.3ocsV8taaaCDmxIpqwacXEXO.B8S1qdtRw+IoHaXs1IdyXMoFydECvHnfVhxhHxjBhTMyqnOK60YON6MX6HojkbSVZqAl9fft69c79w6NdTSR49DgfmhrpOacBAY8E1SWyjQCivTFZ7oHquz9brPRRcLpFrNAKDj.jk0d+nRg0A6izO+8OL.GiY9jRUHzq3TexKnqnxRsSd1OSiiGgCHynqpft6yF6yYC4w7LfO6Y6hRv9WgWRt.qfUyF8SXQDx5ar66+zdtKHt85cb2NG2sa+t864F51Ibww86tnyQc6DzsmmeGj08NKfJ4oSkXIQ.K5.dv5oQ7qYl.7JpftHlnD7PSgHaTiFFQiClTjbDHj09SJSU6YRUes84z.5F8koruRavozipIMqZ2Ek79DnjUEJsugROzdpeJMQVZQwmO2dLCpfgXn1TkJFrnZ+4d1C4.Blr8J7UjQofvFOZbnqaKG3UySpWGpOBoyavoNSvLRry26T33RhbHeUBmABMdj15iTd7jm3LkHcxRbjQDvKJS9K7LIkQpqA0VPjU01HLi4KobVikMq+15NviJb3TBFhlLhJTg5Ebeb7.dFKPzX9kPbT3V1ND5qddbbCSOjn80QTIo4IN.IL70XntFNnbVJNg7GbZfSBGnfXS3LhP.mqUodl2CRCd8burk10Aboju5aiIgxRHdkXJgjRWFUEyg8Z4rYYlwSde.GYrWPQ.vlfb4I0y2oBU5VsW1rWWDmkuUK2U+ma2IXYT4lEDpTI8gTsjnPzHOwpeoP0VHwoxKHWOMagFfIOM28x4pMTojWQMIjm5zfBqt2INTmuKGR6XBaoLBT83G2Ti6sa1+53DCcBy3EKOcqkmVY4eWI07i4BRAuZtIQoZILTEd0R2GYxRi.C5dRkg5uC7nnyygytfKIuj0P0AdPcHHuuovva0lJElxiiIo2pY03tz6xwFrrUKHosfxhpZV.DNdu8Li68wMyv2TQq.jyFynxWlPxkGwiCTyBTeeyILn7VB3qec7oXIVMzIWGfKgjJoJ5XcJ4MvXdyHnCrOkHtRxSzXymH.TVps9fhATpiiHJD5Oy178uW8Zi0UEtlFHgw91V+EHDQTmVJjP2bDHL7kGjEikaOQVcWUtAHku0XP0nNlfJWW8trOgwzt24X5OVJ9P6IToezsywZ2BGghw+GbL+xsGXeVXHwWVRv8sG8a65MYefval8u7brLkB8A1WjsZJL3xm.QmAMGBU8tlpgzH6pjUYfoDVfV3efmbidJYqbidEFQqv9o7W6aNnot979ZM.mX5eu3.3+b.YGOj9vW077J317W66u8RcCGObWcryt5X2c0wd6pi82UGOZWc73Oripe154YvUsliMHz4SNSOsxx5LFF5.0cqn+EfMoevb
If you need a stroke style for it you would need to refer to the documentation:
https://docs.juce.com/master/classPathStrokeType.html#af1cf21018ccb9aa84572c1da4ae513b8
https://docs.hise.audio/scripting/scripting-api/graphics/index.html#drawpath