Just finished the UI of the first effect pedal in my synth today.
I'm not good at 3d graphic design, it's way much harder then i thought but i just tried my best.
still got another 19 pedals to go...anyway hope i won't stuck in these ui things for too long
Best posts made by Allen
-
RE: More Positive Posts?
-
RE: Saturation Models (Neve, Tweaker, Oxford Inflator) in FAUST
Thank you for sharing these!
the inflator algorithm looks a lil bit weird, i think it should be like this:
a1=1+(curve+50)/100
a2=curve/50
a3=(curve-50)/100
a4=0.0625-curve/400+curve^2/40000x=a1・x+a2・x^2+a3・x^3-a4・(x^2-2・x^3+x^4)
the curve value should be in the range of -50 to 50 but you could intentionally set it to somewhere over 50 to achieve some weird distortion effect.
also, the inflator is mainly control by input gain and curve so you may need to add a input gain by doing something like:
x=x0・preGain
(the effect param in the original plugin is actually a little bit misleading, it's just a dry wet mix and seems like it was only designed to be set to 100% or 0% to make it sounds "natural")
I'm sure several inflator clone use this algorithm and with linear phase oversampling it somehow even sounds better then the original one :)
-
RE: Creating an array from an image
@griffinboy
I found a weird way to do this, actually we could turn the image file into a big array externally (by using a c++ or a python script or something else) and store it into an single channel audio file. And then we could simply do something vary similar to a 2d wavetable, just read the rows/columns as cycles and interpolate between the cycles next to each other. If there's more than 1 plane we could store the data of rgba planes in the same array in order like this [a r g b], and then read them separately by transpose the index. This will also give us a Z axis so we could interpolate it with both data from rows and columns to get new values.The whole structure will be like this:
I wrote this simple demonstration patch today
HiseSnippet 5828.3oc6bsuchijdG2yvlwryrYm8jjyI+Wc58blfagkk.CHld6IsQ9FtAKY.eq6i2cDHInrERXIAFX8jLIuQ4MXdT1Gg7DrcpKRnha1z1t6LYxpdFrp6+9tTe02WURR00oogmmiarURTeXWiXq7kwqMz1usbaMncrRaiynTGsVFa45pMLVwgc077LzisxJe1d3ZrxpedLx0+8+ZQMKM6lFQYEK1INvlFkgcf9Q4p952.sr1US2nNrCSs270kZ5XK6X4zCglOKtPrtZMuBMxGpgq1yhGaeMu1wV4EwapIjyrYiBlBFoyap2HeCiMyZTP2nPNolYMkxJkIsQFobwV4WsiNz2wslulugWrU97hN5Cq014Fa5.bBzC1vx.mPLVMzHSydWGKcLIhyMlbanktZHaxKFpWTiXZeFko8ODuBTGNN+Hl2ukT.HpErLvUd1jv6yl.dhrvSfAdyARqv.o3TH80wq0zE10OpDLd90wKY6a3ZpgjSrP4vdcpYA0MbUQ7bDThuxmgDIzdH1yF8GhK6fZmsOeGsqL10EkXb+jLmfPJ.5m0dYhDI1Xi0uiqttFc0bM.djwBKe8.eCvDZYf+quFhZ8tq1i6eKGMcbKRrK5mZC87M5viyamAZc5ZYrEhj78Rh.CRaxyGzWyErUOcnCt5fWA1wtEz1fzhwY6gHFGUGGqjq8NgKXaoYcmpFZ5n1wLZltNcpZXZ3ZfT2q46BsakbbekhslQivX7znmIpknNLnqoHwabMSRYiuHw5+R4JA3C5JAa8SuMnxV0qV5LPRMfGhQijgtsZ.bbAZVcaqA5hr4X.bLAZ1.H1N0ZKpeE2FrU0pacNpmrAZX1MQwasDef36maWKF9MG1zxnrgcK+1exPiKd1hqyMdIGr129nPO451Os7x2sEnHPFrMXGvt777W.RAd2df8Ak.G.dCnLNqT.zu2O5eUz0+qqHb6RyPIZLkr0MF7sOVz76+8TcAMKKfGwxrG.ZCbPyVIixbgaRA7zWFg.J05q+c.YbKDlo5r4HxZ0f49LL2u4cBWcMeMfEc5BRpkVGzQCYbe.3FnNMqolPMWJPDSAL5LrTfXjpw28cX0sIHU1FcHnBPAnBNBTETCTGbL3Dvofy.7i+2ES1UODkijowXkcnXvZ5YUi98QW2tDpW2trJsQZc3wecPxLXbwR1L3JybUuQVbPqbubX416w5USGqdcr8RNbrAr4x71DCRdl+w.xMW54fO.PhLRsGRpUKz.UQjdSEP8wFmlGZ4C9kEs3LhLkM4rAlku+ft+CSAbdC9Xd3gKmcFpzhH7eHlmNDMUlw7jgVy1T8QukEvKw0e7wab+trO01.1psONuNZCXlMst3SnqM29wbEpG.bdp7ONjz9+JtG+o0aoeVCtORnaQAJ7fgVFTPLZCHSUS1Vqug8+hOJVEjImNnHpMzuuNt+GK2zaX3eiggMMFJujiV6a+YdnPXi0z.9P15dm.WRj0Pg0EW6EcsfOgpDA1XwAUN1JaSz5CO4WhSPAKD5NAVJbt+dzDEXL1EapHEP5909XHJROEzcS0JUiTZgC753kwAfMn4C1XYl7e6LlFeDlLtCOiyrLb8Hd9s2eOh7i2ETzEH6B11k5T0Vs.EaAjaA1tUPFM.Ea.ja.1tQPFZfhZ.YMv1ZjLVFGXlvesKRrHSYznJtcoL4d68myclwhbgbtlCQylB8xinebaPnO2hzTl4h5VFxqLjqLIgqMY3d.XjTTbpzomtBYlLYj0BFGAYbBTGZR1bOefmQSenisG1VfeaCJcLG6Ae.yP+XdIhB2FuM8fjP.G1Ll.3EnYjv0RAzr0QjlugaWGKMeiGrsRp4WhLAjD20eKvn02BzdkPJf6qDSAZ8pzo.MdUlW9XIlafHavXldSGWWCutN15P6Vj8VZifPzl6VF9f8O3iYs+YzERMswPvVVH0iOLB9WL6G8K1fbPEQGBANxJlM8O5jP1FUvVQGZPSjkBeisr0qZzB5glLMYMSJLwoNLYgEW9tQ7N5lJZP6ktiRi5HDcZ3WUytkQhonK9vBRJvmBHh9eAdA7XOEvWx5gQ1Bq5FaXAsuB36.VHuVDwfBOkoVF9xNcPS4QIR9bl577EvZRuDMN8hZblknwYd9DDrHuK9.fp6P3yyxHlnxouiJu0D0LycTyh3CFZiMHGRFCYTGmdw7NZwOmHBZzy22wl3iHxfpgO8.2R.sQxFCfYOaxhcH+GKRpnHtGccrR1Lr6RgFQqdFqk3OmXUZGyS5H7YVsZhUQcbR3qDdI7OvrQoT.WqolkwtZM8cbWW7kPNt0PcQXenoqStS0AsBERyQfn1f6ye3kIP+27or.P970vJcAPUVyxpAhekbZZfbnZ2ygSFcExJ7VVKJj9NbuQC1eaZTDafVuJ7V5pV.6dcZX35wHCY2W4WAxJl9kS0izlf8Bg5eMSaIYbXuNnFJNcyzctw1Cy4AlDVOQzOsBzzxGbGka5dJvWr.b32Vym50TWTJKGmtL8GtpH7nhrF0DE.8bfUKrpWaiYopo0DQUTMf7RZlJjRwpNIV0xAAYPWJkaxGvhCqCQez0vumqMoN3z+v8iC5N+gkYd3iXLrBABN5XLOTR2vRBJYjkyEwHsWUZHrKh7dYTkaRIuJZ9s4MQ7Y2jgMeClwYMVps4hn1wmL2Fzc4lPpfYnFbgUQ0ZqonknsUjdKZXREHpoj2Fu.+qH4JwpBjqnMVibbGzBAAkQ+yEfvJiaNZo4wDuFhxe2EXZA2MZ7nAUykg4zfkQQO9f.VUGncx4fWVNqmulqOwfCpQzV+BFxkolF15g0KpQbSWWpsunJfLBF1vWxwAIl6ZPzTQR8JZsrg98zMRBSENeACtU03g1dFt9n7aDX+KRxp8AHVSR7PmSjLim52+ZKTTW7gIpCkZAR0IE0Ax3Ij3yHpepkzbh++.YcPrOaLuiuPiJ+mqjVF2tYlVa62tFp8krIlvlu7FKTPh7wQ8HRkgQ2N8z7.YO6etXllR94oa997HDVyiyQUPX9R9PdviRVypzrtHGEuexT.V94+TshhOAZEBhiEszam1h.MyI9yEyzzOpZEg1G9EmdA1Ydhq4d3PrlJv1oE6nJeBot0clJVjhI8lLiTSltXJcRt5j6otCQWQfw2eq.ZaLaXUuYi6j..rEQRG9N3EDJepZVblZVLrlXNvOLES.SkZtL6xElXCNiis9lhyxGlh3mng2KmXxzxoHreVdRh6hmLUqYIzoFHDE+BReyMEhvEjTjecZHYgJJ3oPeTYL3GURRzZ2KGhDXwD7kTdQgYL1FBcdFpB0PSWBbimodujtQaSwMqwEwKIiClCxDDILEbCb0lkaxwz2KjyNYkh3xoD3mgQuzQUdBzqmlEbjg6xGUIt2ESKkBaz2wkIJKUTL.VnRJhXeWsvn+mnV3MAXhLv7LUMD6ppSOejFPxPMfjsHg3SFHr8W+1PObOWFKpJ5zyV2irWWzZ30sO9Vz+0h2DZYskkUxvVj74MZQejteNVEkv1.QRRDRFuY.snwwiqaR5e7HOosmXzbyjuCIBly1M0Z7zl0R8nJlSfOaJQ9KHyiVkRGUMZ5m7cvTBoBolSwOHXIWiHQDyJDXJJwODt6BDIUCKzXbZanuwhDWEGWikSvEU+YDgQE8KKg4SSMBDmarAq.UHEDK7FKT2m7zyPkpW7nD+HiF113ynn+3Y5Lp.zGVGpQfEJ2YqDVXyl9djvANOEI1B46DEx0dYXEHaZD1oJbh2gXDXRIEIg3LoFmf49M1.+6ESzgM60vPE4zkROeFZit+z37SRGelpg20ui5oo6BwmGkqlUxtuCM.ftuSj7aZxuYtXs4NNkrqtLiCpZO1wYukab16wNNEWtwo3G93Lu4h3CWqnKVw21vyKJarkD7tulcMZ6oZSDjvH6RMgfDoAGXFQjWXs6eb2B+f6ONGWC8TicW+M1NMdazjX7b30VLRPR2TSHpebHokKxenEik0E4uO3rWpIzHdbvoA1uoEilz2KZJlZB8lEglkGQCMrrbtAqdHMw3RsTlUfCCxyY.4KxvmNKxtQpLoPQ3gTIIwLROJHxw6N7JTKdZAQp.bb1L3.AgTYlCHF7zCBtoEWuHS5Thalc84kOhCEfpIw0nw3JbIlk2WS5Riz862vy+CxeyvSF8LlEuHbzEtpEtTxYLMmyRhT1cdRRPyjjDe2qDB1dQ7QVRdVVI4SnBJjHERkt3icBsb4fmmhc+2oucUXChrA5SizeC5NlPdLZw9hD9pXMSDyfs.eCnXhUuq.kSr5TYkZ5bJlBGzd3loGAL1S6IEyN6GDgA3dImnSJH0TG1xZLCYwOcC4L6oBQKdggbRYujmHE769FtRN.4Dqd2wiubL7YcIDkIgLWeV5d9HeLjnGT1pKYzvKG9nm34xhITpoOcNJLmLLN7KUINnWbYKJ5.15LgSkrEPOt0D24j74eZqryxCcGNzNx4SYG476zNB4T5muYjz2oYjEQUK7.jCFsESPoW.A81oHn2dmDTl6vvXlmdJJycQQYlfhXtXv0gN9FJ1IIHHwOj.LcQllysrfd1xvctEieWucuqFljdJrrzOthwV4ym7kjN9heIoYeGtaRYPLUDOYE5qz0vdQuY2wB3pwhsxWDfJzv6Sdcp+cAuN0QSoiA0isxWEm4YBIFA53Wd5+5JwhgWII1y9udV7rho44u7nqywq5a0WlWpfrBuZ+Cyy22wsur4tGWTg2O2d44UOUCk1WZKE91CJiRebmaj6uYtRJ7keyf77k6XLTl2cyJJ7us9v77ib2dnbeuRnzibykmucwRij6O5xiT36jaOI9hBVij2endMT4EqKwef0kBx8GXdhBe19GKwq6lEUd5AUUL42rhD+9mWAUd95nx61osDes7Bhx6eYZck8K+lcJX50XXF4h4UtRY+JkaVnu6AkxJW28DGkQmw0ofpUK6rxGWZ6qU5OpkeA9102NmrssrmhsQuzETOH+04j253S6ob4HQtB1iNbm7xx61quxgk1cGNdug54kqT6pAJW5zqLm44CykWN8IGMRw7MUpw0WVotDr7kWInzs+NmxwmMWSI3QWmUPw+f9nzMrMjjKqwInLP3fy35qZcoD7LWOQkK22PiKyUM8jf84FHpXsqrFm8MkbQk2ounh3o7nxGz9ZI4ix1UTonPi2xcVmycjjGU3RQEa2cdKm8kCsjjyT3XT6aT5bt9U7gRxUpVVTY6dcNia+NYMkfRRYDTJXk6Dt8eyguUBtSZDd4EN3DNdcySkjUt5sBJMR25Xtypz7XIXU0pH7lVrNm5YiNRB50kajxkGXTiKi8ApRxmO3PAk8qk8HtyL5kKOrlakQJcKebUt8OL+NRvcKUBkt+kJbps6HkGVw2cnxA816PNjlkPdYeQoAJ6mYzAb10zbxC0S2bfR+iKVhKS0CZmGd0gGgJ+Zt8Q0W2HuLcZ.Q2+yn59+lIz8I58+cwIV7C03i9hOD6ALwI8eahyeahyunl3r759YtCce0VBk4N6vVHrWsj4HkBuoXct9JCNVRVzQEwKNsTUNUqQ4yK6AsGpjuLuJ29WcbEjrXGT46qr8IbpCapKI2cmcP75cGVma+baVRBN7xNiPklsJ2YbNmHA8GUTTIuu0obl6cIRWoUuMQ7lA0P7V8RmJAg00ETJepPcN9aDqJA6dplfhqfzwb7s6TSR9lpEFoTV6zi4rgZmKIeVssDTpdLrFmsnklD7vS1STo74H7vqb1gRP6BuAU99pmxclq4gHcgcuFMdEPxR9NPT+co5dBJucTVT6GrYYIXO+9HYqXODdGnpHIevgXY61bpb74b7Pz+YVCTNQLWEt9cFdfD7.jbSIyoZpbmooNJOrSt7CTrNIaINd6Q8xCKj6MiTZebspb7E2UVRdaNwgJCxZWgKyw62IubsKGbihU8C1m6LKOjrezVWNPws4tGvolYzf7x417ngJlCyThyLeZMzbwhE5qT.obfveNk7vAl6dihak9xb629sGlGteFi9JGbsLp7tVUxCOogaekKMMQykqbIed4rVW2WQTsPQt96YLJmb8sy3prcgqGTfuzk54j6VSyGkVYyBpoycUNYs8x6oj47qGVP0c2cyIei1tHaEWMHSA9706kSNyg65qT1oxnBlU56lSVLikmR8ruwt.+9Vi1TtBJNAkxv7cJXltP+rx5bCcUT2YTNDMnZmSlmyAYKJidiB7cMs2T1qqoihpWgKKzuQ5cxJO7sGXqn1b3YELGl9pLyQ2+qBz8IQ7PT6+h3znelcQCpV++zyhmoPNd5EwBMe3kDeCspQoMk3UG5GktuD0B935WfubkyiRueA9F9FQoUKPsvGl9rB7CbSGk1r.u5aTEFm9xBzU.BSi3htksiR6Vf2V9znz8KPWgHL8HT+64FkFIkJdIy3ku.cEjw3miurxUQoQZM15GHNN81bzUXBSuKRKdSuzQzKmYe25YFm9.N5JPgoQqPvyUaywoQV7F0eTTZUN5JTgoQyR145iiRirJ.kLhRirxPVAaL+jS83h2Dk9sH7tW1nzM3nqvElVmi+frpQoM4LKHoGjdw9iPeDeI5VqFO3488t7H49bmI8iowYlSiQqni0risxJAQVfh1nqgqODGHyJaazG1zf90ZZ03aa3ckuSWRcCBnCMkYx4Rjf6Ii4mGuQqXCXGrgrIHewJFmwO8e9Z5qHNaNPeiNgersV8Wgx683BhxMMa1q76X.0udQf52DmMhUF388CdcD79oad8jvKFbZ3gxA+Yhx1mYTIT7rvK1jnlM2vCqDm26eOgNh4aLve1biMK0sTw6wH.JwPg+36lhB+K8llB+QsWS2Kgs53zylgx+wWGM.jmMHrmAOaFZ78APeJFRHAMetGKY9k2qq8QD2OdDCwEayW2Qigv+tokl+wYjlkdMlsi+3igOgTxCqZrkR990e8WOOI46mUlmISlYjjI9.B.YARxu2aZpSeFI4QKTR9DKx90e.NUxPO1OYzybzLW4oWyb0IMuTVqQf4kuHN49ENs6uzMPO6qiy7Ek4UuB.iceDMRK1DYgtFbzDePBe7fM8hjDiA6+3zfEvAD+3A3D2q2YKf6Fa38ZT6mZLqJer6PWfcZcvBMKg9wWsDNAr.ZP3+Hfo+kwIu2RTpeJd84ygWaXiqI9S4XYCMWa7WLQnWEG72uAMWT+uxyVJ6Y+0+56my5UyicLuUlRrn0c+6iOwt9yP8+kQrRv+3qa33hlAWUSG1yKJ+mOkj86+9Yjr+oWqgOwyvsS1COnaYYAhxXJZB7qd+xINWHU8OGeAmkwhnue75kj9d8LzGRn+wh99x60oyHx4mrdZVn82PWnM3AE+SwZse485c7B7FbZp7KVdp7qnTI8cG6SAQdeF62j0mo+7j1NoP92FO78yA6DzZf621ylywNexmfElxxNK5GYcO+1wrW5qR.cs9o.5gKEP+lm.flaQ.8+9GF6VYx.M80dXv7ofelmAlfaYk8+aimTF7sQANOFZ8OYHUh0fCKRe8+d.R+h3Ica0P6olax7MJ9yoQ89aiWwQumkl+jexjweXoCJ.hVZm86TL9qNrsGzeH6Gd5mruixKKD+53pP+lsmOFe1bvHJB5OFXL3qO8WEeGSSil9Q.7yiu6Yeb9TSGi9vm1pBIReTH.3ubzHalMMPitMZ8Zuv.VCRKfSi4.0Lr0IIvFbCJTLLFBbghgEFqiVSWm+TS5Vuf+9V+EjbPXxl7s.e03UvoAyY2d5f7Q6O0r4jc0LML8CsgYdnMbyGZCy9PaXtGZCy+Panz82PrKza0y2oCcZSrXUT2grGYqrxNDerIZqw9e..AlTtD
So far it works well, but currently it only does 1 plane row scanning with linear interpolation, the column scanning is implemented but I've haven't tested it yet cuz I found I need to prepare a new data array for testing this. The 3D plane scanning algorithm is there but the function itself is currently to be implemented.
I'm feeling like this might not only useful for scaling spectrum magnitude and phase but maybe also for something like partial envelopes, modulation tables and even maybe something like morphing between a sequence of presets of a synth.
I'll keep polishing this patch and would like to hear your opinions on this idea :) -
RE: The world of HISE
Allen, 23, Tokyo,
Whiskey lover/Music producer/Songwriter/Programmer/Visual&Interaction designer/DJ and sometimes play guitar and keyboard in bands or solo.I make dsp stuffs in maxmsp for about 6 years before i found HISE. And currently i'm making a relatively large synth project in HISE.
-
Parameter Smoothing
Recently I made this max gen patch which is a collection of all of parameter smooth algorithms i 've ever used in my dsp network (which is basicly for fun)
I personally use the "Chaotic Good" one the most , which is basically "delta value threshold + linear ramp + 0 detection" (almost used in 90% of my third party node)
One thing i'm pretty curious about is what is the most common smoothing algorithm that everybody is using now?
I found i really got no idea about this... -
RE: Generative Wavetable OSC?
RNBO is also a nice way to go.
I think you mean wave terrain synthesis for the "random" generated wavetable. It usually implemented by reading the data in a certain area of a dynamic 2d matrix(like a glsl), scale the data size into one cycle length of the wavetable and play it back.
There's a book called "generating sound & organizing time" which has nice examples of wavetable and wave terrain oscillators made in gen~, which can be your start point.
for the drawing case, I think you just need to add a multislider with the size of one cycle and write the data in multislider into the wavetable buffer with an offset of "cycle length * cycle index"
-
RE: A pixel drawing program, in HISE, [SNIPPET]
Thank you for this cool snippet!
I'll try if i could make a conway's life game on this!
-
RE: Creating an array from an image
@Orvillain
Thank you!@griffinboy said in Creating an array from an image:
I would like to create something where the user can load images
I wrote a javascript code that does this. I've tried to embed that in to this project though webview but I found out I can't send the array back to onInit.
https://docs.juce.com/master/classImage_1_1BitmapData.html
I just found the BitmapData in JUCE and seems like it does exactly what I want.
Not sure if i can do this but I'm tying to bring it into HISE now. -
RE: Default Oversampling Filter
Well, I guess I didn't read the header file carefully...
Seems like the FIR one is disabled in the header file by default.Make sure enable the filterHalfBandFIREquiripple in the header file before compiling Hise if you decide to use oversampling in linear phase plugins.
-
Default Oversampling Filter
I noticed there are two oversampling methods in JUCE source code (FIR & IIR).
What method is defaulty used Hise? And how to switch from one to another one?
Latest posts made by Allen
-
RE: Crash - can someone confirm?
I tried this with three diiferent versions of Hise and one got crashed (961d7d9).
Here's debug result
I not sure but seems like there's a conflict occurred when the floating tile loading contents.
-
RE: Parameter Smoothing
sorry this example maybe a lil bit misleading.. the "True Neutral" one looks lightweight because it is no smoothing, like a control group.
For the cpu usage, i'd say all of them are almost the same (excpet the "Chaotic Neutral" one are a lil bit higher but it actually does more things) Some of these are pretty versatile but none of these are work perfectly in all cases...
-
Parameter Smoothing
Recently I made this max gen patch which is a collection of all of parameter smooth algorithms i 've ever used in my dsp network (which is basicly for fun)
I personally use the "Chaotic Good" one the most , which is basically "delta value threshold + linear ramp + 0 detection" (almost used in 90% of my third party node)
One thing i'm pretty curious about is what is the most common smoothing algorithm that everybody is using now?
I found i really got no idea about this... -
RE: I wasted 3 hours on deepseek trying to create Autotune, Reverb and Delay in Hise
AI is currently really bad at writing DSP code.
the reverb&delay code is really looks like something from r/programminghorror btw
I can already hear the pop and clicks followed by a loud-ass feedback lol. -
RE: How to use a mute device
You could try something simple first like one button mute one device.
the only thing you need to do is reference the device and then call .setBypassed(1-value) in the button callback.
Then you could reference everything in an array or just simply write the same thing for each device separately.
-
RE: The world of HISE
Allen, 23, Tokyo,
Whiskey lover/Music producer/Songwriter/Programmer/Visual&Interaction designer/DJ and sometimes play guitar and keyboard in bands or solo.I make dsp stuffs in maxmsp for about 6 years before i found HISE. And currently i'm making a relatively large synth project in HISE.
-
RE: Animated images on the interface
that pretty cool!
You could also try slider + ramp , which is like a normal animation player.
I remember the linear ramp node in hise has a 1000ms limit so you may need to make a custom node to play longer animation -
Matrix node issue
The martix in my scriptnode synth suddenly stops working after i reopened the project. ch3 to ch10 are just no sound
Has anybody run into the same issue before?
-
RE: What are you using to build UI for your plugin? What's your preferred way and why?
Most times i only use filmstrips in Hise. (sometimes i use the graphic api as well)
I make textures in Photoshop, make some of the animations in Animate and Asperite, and render everything in Blender. Sometimes i also do some post processing for the textures in maxmsp.
I think there's no need to use webviews for UI unless you literally wanna make a game inside the plugin (like something with complex interactions). I've considered using webview before but soon i found out that almost all my 3D scenes will not likely possible to be rendered smoothly in realtime. (i have a 3D scene which is 10 times more complex then the gif above still working in progress and it's just literally can't be rendered properly in realtime in something like threejs) Rendering a complex 3D scene in realtime will cause some extra problems on performance and stability. You still could use js libraries (like p5js,paperjs) to make visual staffs, just record everything, make it a filmstrip, load it into a slider and control it by a ramp. (if you are okay with raster images)
@d-healey said in What are you using to build UI for your plugin? What's your preferred way and why?:
Using filmstrips has three issues:
RAM usage.
They don't scale well to different sizes.
They're not dynamic, you can't change the design on the fly via scripting.One more issue i found is lights and shadows cannot be properly written in a png file with a transparent background so you may need to render several extra filmstrips for a same knob with different backgrounds to get the whole scene looks right.
-
RE: Please Increase parameter limit on Scriptnode custom nodes!
@Allen said in Please Increase parameter limit on Scriptnode custom nodes!:
I just found out one of my node with about 100 parameters won't update the internal value and ready to increase this limit to 256
Haven't tested all the params but just wanna comfirm so far it works in both script fx and compiled fx with max 256 params limit! :)
I found there's also a similar param number limit in the rnbo node so don't forget to change that one as well if you're using a rnbo node