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: Roadmap to HISE 5
@Christoph-Hart
Thank you! That's awesome!
I'm ready to deep dive into the new wavetable engine! -
RE: Wavetable Post FX processers
I've checked the wavetable creator before and didn't find it...
I think this might be a part of the new WavetableController Class, which is probably haven't been documented yet
there's a api for this but i don't know what the var supposed to be here
So i wonder if anybody has tried this before
-
RE: Wavetable Post FX processers
sorry my bad... here's the github page:
HISE/hi_core/hi_modules/synthesisers/synths/WavetableSynth.h at develop · christophhart/HISE
The open source framework for sample based instruments - HISE/hi_core/hi_modules/synthesisers/synths/WavetableSynth.h at develop · christophhart/HISE
GitHub (github.com)
basically a bunch of functions in the PostFXProcessor.
-
Wavetable Post FX processers
Just discovered this in WavetableSynth.h
Anyone tried this before? How to use this in Hise?
I'm wondering if i could use my own warp functions here.
-
RE: 'MACOSX_DEPLOYMENT_TARGET' is set to 10.7, but the range of supported deployment target versions is 10.9 to 11.1.99.
I just ran into this issue with xcode 15.0
Anybody solved this?
-
RE: Create 4 input switch in ScriptNode?
You could simply do it with 3 toggles
In1= A0 C0
In2= A1 C0
In3= B0 C1
In4= B1 C1 -
RE: How to setup a WebSocket Sever
@d-healey Thank you! That helps!
I forgot there's also a document repo on github....
-
RE: How to setup a WebSocket Sever
yeah, but seems like something is missing here...
-
How to setup a WebSocket Sever
Some codes in the in the document is partially missing.
Is there a WebSocket Sever snippet?