Best posts made by HISEnberg
-
RE: ChatGPT HISE Copilot?
Ah I have been unmasked.
So I have been working on this since the beginning of the year. I simply fed it a lot of information from the HISE docs and this forum, forgot I had it published. If anyone has a problem with it being there I can take it down fyi. Just send me a message.
I meant to share it here once its performance is optimized, so the fact that I haven't tells you all you need to know. I also figured theres a bunch of users here who probably have their own versions (come on guys, fess up) so it didn't seem worthwhile publishing in the forum.
My opinion is that it doesn't understand HISE scripting even until this day. It confuses HISE for Javascript constantly. Even after months of training it doesn't grasp simple concepts like the
inline function and ControlCallback.
(I don't know how many times I have tried to get the GPT to understand this but it constantly gaslights me on it).What I find it good for is mainly debugging or writing out redundant tasks. It seems to be okay with LAF as well but that is about the extent of its capabilities.
As @d-healey said, beginners should definitely stay away from asking it to produce code. It will very easily provide wrong answers and tell you why it is right, so it can lead you in the wrong direction.
However, if there is code from the forum or docs that you find, something about the ScriptingAPI you can't understand, the GPT is actually quite helpful at explaining it. This is where it performs most optimally, and it is also helpful for checking your code against (but always take its advice with a handful of salt).
In short it is good for speeding up workflow and checking for errors, but anything more than that is asking too much generally. Its also advisable to know something of the topic you are talking about in order to prompt it with the right type of inquiries.
In any case hope you all can make use of it and if there are any issues people see vis a vis intellectual property, reach out to me and we can talk about it
-
Free LED - Activity Indicator
Just wanted to share an LED Indicator I put together today. It comes curtesy of a script that I believe @clevername27 has posted before on a VU Meter (can't find the link) as well as @d-healey 's video on LED styled buttons
For this one I just mapped it to a gain node but it could easily be routed to something else.
Enjoy and let me know if you have feedback.
HiseSnippet 2181.3oc2Y01TajbDdEv5Xzcj5tTWpKebJW4CqHJXsB33HTjCYIAnJ.RkjNewkKJpgcGIMm22pcmErxU9eZ9P9Ij+AN8Ly9xrn0XLmOebYKaX2d5tmddlt6o6gAg9VjnH+PsJUGOOfnU4y0GM2iMq8LL0SqWGsJ55NDasmMO.GEAuToxxGwGpxpqnId9ue2yvNXOKRNIMsm6SsHmPcorbpCN3ePcbNDaSFScU3dqC5Y46012wOFLik0anEfsdEdJ4LLmskz0NFGMSqx556t81lX6I6LwbSycuzdhEYycZ7MasSS71e6jI6zvbqMs2YxVfQ9nt1Tle3HFlQhzprxy7smOZl+0dxI34zH5kND9GlZifYVR9PeGa9RjSUq8Lpi8fT7IRCPhA4n0xRz5qzOkZSynmiZegX.TtDp.XkkJZdKWv7LUMuFJlWIlTEESZEoI8k5irBoAr7Q31ymo2yiQBmfg8IUSQxq1R6uldaefCO1Ft3WQNLD9HSBCyFMpifeTaupUe5SQ6m8fNoaGTqy5cZqw85elx.b1FOiFgf+4hCBH1HlOhMifNEGApEwchPt91wNj5nKiYHJCY4G6Xi9w3HFBGgH3HpybthtjfBIAwgA9QR8.ZDg8li7AEFhlD6Ywn9dHCg9v72qiNsWmdHxUvJpNhvr1n1Zbam65EVE72f43JbHhg1G00aJ0irgUHA1NDLz+xejXwLfk6ZJ7NvyokG0UnePrT7ZJg012Mv2C9v3IpL8jZ6oJOeImr52GIhx3x1cxD9b8D4HbdDhkJXmtsa8hKF1ZbWPnFar6dH.P5PrvyQCAyMksQm1u+3i6c1QWbXq1i6ODX1D8WAA1YagDGReM.cQt9.jQ8lB1iSblvG+hQi6Nr6nditX7wvuOt+IcDyVCEYmMmaejHXCUHb5DOnaWNylaCbyMaPf1wgg.XfdNmun0pFRlhrhCOA1MbNIQwEoNr.UoYRrKQfBCkKkXZOAPPzQeeOo8Egl3GpX0qUkuG3.7bTLUXY4Z9libCE2gLAbPPrq8AWTGHxSnZJO7HvW5ukBkN9Wyyjw2gU8D3azFOgxHtx7bJdFynSmcWDoYhaA0ygaLYN84lAQnFCvDpKzZcDD7BoYpg9o0phfGGeKrSBQX1NECdfgXuoDCIs57EMDnuQC9TwkHjvhC8PRKHZCW5qKQ8.uuIam+RpUQjIyRWzzs3b2SkYiHFNjGv5Y+wy5E5D8WPFfVgXBwm0PqiRjCdK6EiMAFZlQol5Za.1i3fxy.Xz0wgFDQPWSYyP1y8vtvZW3fTDAfLOE1XiHrAPXNaneLCvCiT7vXZ1Zk6PhgEIDrFwcDNgu1elermcjQ1xiyjmenK1g9uH1hDpEfkhwJKBOb4sjgpoNfk4LIdodteZ8aLoR2RtB4wfPx.YFs+FpeLOU2zPrMkmMHZF11+ZQnCmqofpQDAqRomxAliR39PnTAiWl52wQ3VNAyvFYTlAQF7kz10pivur44nmhZxeaS4aRUVxy6VkW5.kcvUYSgJabN3xHz75.sM2YaNQSIwMUHxBiImmBoS2XBX3INFFu7lZoQIJQRKggcqmOvtmW.Y644QxQtO.HScKVt+WDwLO+CAsJpsFar0B3+cELLaVBZjPLgEInuY5GEAj1DtypvuzA9+OKuns9YgIKnNyaCTrCwW+wDTpiZJioeC+GUYb.PTESariykfOcdBFH+RVjOOz8DxDdAP4ElHJlQtCKxZXXVaODpfLC4X8sKjnNwTYBH3WkcPd5jppzLFFlvfXFRz.cBxPQC+875HRWK7G0hKx4dOw3uAQbfjzkw756qTdUB2het3TOTYpGV1TOTcpG9dl5gkO0od1sBBblKOc7FmklU.mf0EpSprCTKvS87Ue8EpYr1dKp0g2AsNLWqCKUqB0V3HPnbd9IfPE1HtaqnqhQDlnAAlnDcvMleNsvQ1PTjYs8xJbv26LeFoO3PW8mptZUXS6lCMYRoiwqYOz2wAzYYCKmsaQPCuX2KIPhOQIlYLBMeUriN82cGcpMbZIagPgQeuddTV+.h26pMTsj9Nf299dcvLLuMvDZ.eAjPFkaBU5PtBZBW1T3p5cHQuh4GH3MoYEsJ+NlXz0RaYjWgiFEZL72qqtco8Z0d6mq9wLBOXMmxKNPohUf7id6+V6s7AxIyo1XcIUsE6eE5bV1EWw1oEoaxZuqPOrbWSuHJat5kR7QqG66pI9k5CnLqYkaiKUhMB6a+RXiI2LwZ5xxvxMvUzO7e9I3ZHdb18HQcCbHGkN8etddGt2x0Ioo0g3fK.S+.0lMS0EqjKbpm2Ufi+.H+T3MA4kuyqRyaeUtxc1SPTK9CZu0+ft.lenajhs9G1F4WnCoM+UxDkcPNE54KjB4n0OK1cDjg0h.lGztfC+jnJKwOyP9cC92biXDzJr3i2BOICZx+tRxfloCpBCesDF9L8e.eEQbAVBD3OJ9F5qyEcDAZRgiOleLtw3f67MF22hAlvXnu2H9kDZpp4QDW5X3.unBTugDMKUhlEyKwh8JpZIoBbwghCAnPguGePJwlpDA2lBJC9tflNkpbr6+4655gAmhQDXka2OxB.FNNqhpChgpMEQLlpBlStoJ4iwg1vdn0skqbk6Vtx2y8l+nGb2a9uAJ6nvYpqlZixyT6BG14.U5kkIeBN1gkRsXn2o9d9Ay78nE1nGRfLFSmRJ3+T5BpEiAsPlS4qNXHwgfiTBG+yGbB0ifCAbhbOwByO3+LGkte8mzklKhmu.8a2xEW9+qKW7tG8Ao.eXuK905Pp3lHwVI5Wm8xOE0.7oXNbwVg9WXI6ylGz+XAEXc6I96.uJz+.7MxTSz6sJX5BGYbgkUQUsffMuuBt48UvstuBt88Uvu49J3N2WA+12uf7SzaEy7StLAnxlAcEWbQkJxhZDgIZ+OvkIPQf
// ========== LED ANIMATION ========== // This is mapped to the Master Gain module, but it could just as easily // be repurposed to map any other function (modulation, MIDI event, etc.) //Timer const var t = Engine.createTimerObject(); const var PnlAnimation = Content.getComponent("PnlAnimation"); const var GainMaster = Synth.getEffect("MasterGain"); const DECAY_RATE = 0.9; // Decay Rate const SMOOTHING_FACTOR = 1 - 0.75; // Fixed smoothing value const HYSTERESIS_THRESHOLD = 0.0; // Fixed hysteresis value const SPEED = 15.0; // Current Values reg curLevelL = 0.0; reg curLevelR = 0.0; reg smoothedLevelL = 0.0; reg smoothedLevelR = 0.0; // Last GUI values for hysteresis var lastGuiValueL = 0.0; var lastGuiValueR = 0.0; // Define two colors for interpolation const lowColor = PnlAnimation.get("itemColour"); const highColor = PnlAnimation.get("itemColour2"); inline function interpolateColor(low, high, factor) { local factor = Math.range(factor, 0.0, 1.0); return Colours.mix(low, high, factor); } // Cubic interpolation function inline function cubicInterpolation(start, end, factor) { local factor = Math.range(factor, 0.0, 1.0); return start + (end - start) * (factor * factor * (3 - 2 * factor)); } // Panel Animation (Ellipse with dynamic color interpolation) PnlAnimation.setPaintRoutine(function(g) { var a = this.getLocalBounds(0); var normalizedGain = Math.range(smoothedLevelR, 0.0, 1.0); var currentColor = interpolateColor(lowColor, highColor, normalizedGain); // LED Effect: Outer gradient shadow for LED glow effect g.setGradientFill([Colours.withAlpha(Colours.white, 0.5), a[2] / 2, a[3] / 2, Colours.withAlpha(Colours.black, 0.2), a[0] + a[2] * 0.375, a[1] + a[3] * 0.375, true]); g.fillEllipse([a[0] + a[2] * 0.05, a[1] + a[3] * 0.05, a[2] * 0.9, a[3] * 0.9]); // Inner LED glow g.setGradientFill([Colours.withAlpha(currentColor, 1.0), a[2] / 2, a[1], Colours.withAlpha(currentColor, 0.4), a[2] / 2, a[3]]); g.fillEllipse([a[0] + a[2] * 0.125, a[1] + a[3] * 0.125, a[2] * 0.75, a[3] * 0.75]); // Center highlight g.setGradientFill([Colours.withAlpha(Colours.white, 0.4), a[2] / 2, a[1], Colours.withAlpha(Colours.white, 0.1), a[2] / 2, a[3]]); g.drawEllipse([a[0] + a[2] * 0.125, a[1] + a[3] * 0.125, a[2] * 0.75, a[3] * 0.75], 2.0); }); t.setTimerCallback(function() { var GainLeft = GainMaster.getCurrentLevel(1); var GainRight = GainMaster.getCurrentLevel(0); var peakLevelL = GainLeft; var peakLevelR = GainRight; if (peakLevelL > curLevelL) { curLevelL = peakLevelL; } else { curLevelL *= DECAY_RATE; } if (peakLevelR > curLevelR) { curLevelR = peakLevelR; } else { curLevelR *= DECAY_RATE; } // Apply cubic interpolation smoothing smoothedLevelL = cubicInterpolation(smoothedLevelL, curLevelL, SMOOTHING_FACTOR); smoothedLevelR = cubicInterpolation(smoothedLevelR, curLevelR, SMOOTHING_FACTOR); PnlAnimation.repaint(); }); // Set the timer t.startTimer(SPEED);
-
RE: ScriptNode Feedback After a Month of Heavy Use
@aaronventure Not to derail your current conversation but but you make some excellent points so kudos to you for putting it altogether in a single post. Coming from more of a MAX MSP background I am definitely seeing Scriptnode as a robust DSP alternative, and I think it is part of what is drawing so many users to HISE.
I have been messing around in Scriptnode for over a year now and I have noticed most of the issues you brought attention to. I think the docs could use a healthy touchup. I personally feel a few tutorial videos on making Scriptnode networks would put an end to half of the forum posts we see on the topic. My personal feeling is we need a D. Healey but for Scriptnode. to come out of the woodworks.
There are a lot of functions that are hidden in Scriptnode already that users aren't familiar with that greatly increase workflow (wrapping DSP networks, the importance of different container types, show/hide cables, copy range to source, loading DSP Graphs, etc.). It took me a while to figure out these things were there.
I actually agree with Christoph about modularization, as it reminds me more of how MAX MSP operates. It really isn't the cleanest, but encapsulating certain aspects of DSP and recycling them across networks is a more ideal solution. If there were a simpler/clearer way to share these across projects without having to drag network files across projects, that would be great.
One feature I personally have been eagerly waiting for is a buffer inside Scriptnode which opens up a can of DSP worms. I know there is the Recorder Demo Snex project, which is perfect, except that it still doesn't compile
Other issues I noticed is embedding RNBO .dll in Scriptnode requires you to resave the network each time before compiling .
The IDs are the number one issue so glad to see that is being addressed. I have had other issues that I can't recall that I will post here after I give it more thought.
Also, sorry to derail the conversation further, but how do you add comments/labels inside Scriptnode? I never figured this out but I have a few projects I intend to share soon to help users cut their teeth with Scriptnode, so I want to be able to explain the signal chain.
-
RE: Best Practice for Creating a Draggable Filter Linked to Scriptnode
@Noahdeetz Okay here is my hacky solution to creating a draggable filter
HiseSnippet 2683.3oc2ZzzaabbcojWmH53TaizlzdZfPQAoirLIk+rJFlRhhVBVRlzT0N5TvpcGRNvK2Y8tCkDcgA5Qeq8VO1dqmKP+Aji8PKPAxef9Sn+CTeuY1OlkZEEsbZbb2CFZdy66ul2LzsB31zvPdfQgh6NxmZT3SL6LxSzes9VLOiMaXT3plMBr50yZeWZSlqfFXr5HeqvPpiQgBy9HDsBycAC42+4gqZ4Z4YSSAYX7LNyltEa.SjBsU8GybcaZ4P2kMPC6aUeSat2ZbW9PPkl0rhguk8Kr5Q2wBQaFSiMrB6aT35lcumSUaq6eKGZkaSocqbGq6T8d62sxsueMmkpYW6N2892s18pV0nvEW2gI3AcDVBZHvzU4Ni5zmenmR.OiEx.aCWT0nCHYEXi05ybcZE6eBMLJX1J0aMqxa8YlaybXIvS8ZWQtAIkBcmVgYljJU8sPkJnoRWPoRW0ric.yWjtCpOWxbSOH100BhM5phBWiYtwmZdya9f79HIgehJ9GRxEuhmF8Oakmt4Jqt05cNE5f.dnfbfUPD+qRd.QlCtXOpX8tco1hRyGs07kWtHHH0JRCVnuq0HcNHTaEsCxp03fg6IPlsFefO2CV.7aLDQFqXSWwSogBUJHPdkitWklxuTDVwVvNfpgRylwnTbbFuXHEDGSPGnve9ExHAk8PZY4Qc0riVdtnaO0gjuUjEsTavGYml9sTE0mTXO1iuenlrdr29MCnu7zkRLBo7Ohr1Sjl1wQKxldLAyxEHycHMjzkGP5phf9VAPgMlTULf1iXOTv61EE1PpmsL7UUp13lurokMTzHAtnxTHOkJBXzCn.kAAff0EghYDKOGRaR2.9.hnebNbQzBTH7LjBfmQNQzNVQ.bc+gBZopfEfn9xIhUsxINVo6Hf6VrHyyk4QIcG5AYKbOB2K1OFgRI6X20BJ0tbweaw4hEPnt.hAl3YhoX4huFD8YE1PlEIz0rbc2GZoV5DpCZC4qzseGz31Sol1dRpY6L53o0mo0J6r9VjMVYmFas4NO5TaRQtA9EgcU0phYKjPEoEzIW7T9PA3OJE6OJ0CsXB7gIEGxbD8gbBQeVHZQOGWWBzwXD5SY85KzvXCIfXTj+SuEgRA2UbcKoUzh1ItInsfmvdnKbNAwmGxjAEL4FSkU4uIRylEX6R+ZPbk11B5d5x6UROE+ljZUJC+axlXoU4xjqqLj7D4doBk2UISoPH6aAme.YGPkkL7lnDiZwCUVGqKoTTYyWIqXKSTtN7CQCUzXLtAoxhKgJWI.wnU3xZKq7RulPcComjAUV71juTmMR4.r49Kd+nUJ1n3xX9p8.NDEitdrjQFWFjZwWG07Za9PPxwIjDAmzGZo.9.G7bQlWOYGl97CnAvhbxjjLHIgNIUB5Z4IjEPnBM.QBicRvKdzxZf2KA7H.bw4.kZcuvgATYDQhBgEBQQHMySBSlJQ1mOzywB5OFpXlDZ0mGk0Nlhpm+pg8FwovmD8zj4j3sRKk9Bn9iTsrJ5kF1lpSG0OdEBEXFI3x6QQeukbOhMrY.l+IkUB6GSICn9XUbb81qUZiLSJGssx4Sa0OKmHORB3m.00.XmHM8v9TOhGWjlmLkp739VLoq76tSMg1j7NYWgAVGUpxBQ+MyqjVFyBQnVdbh2axDqxRhnduxwYKQsZ1h2CRPE8GvrICr78wxozytSvDyG8nGtl5D8G.MxfBVof74GJ6iEqdPwtlROlzvibfCmhaZk1EaTZeNrJB6aPrDjALGeNDMxnGQcdTcKJE4BtYlxkxQcszZTkqGp5Bp1M53GYpsS8xXvWxkuBa2o2EE+PbkMBWBaDl18D6nIo55jZZgrSzHUiGHweodqSjGJlbCknGiWoN2bmA.LujflFY4haMIts0PKd7DDOY28R4wL4zAYPQmGSeUVb29cgSpI9AxhsPsdox4G2mh4mx99XdyPQHyAZk.HBywhSeJwMmi.ZDcTwpXG4vRS2v7kWVaLrc3B5S7JIOunHbN13a0sat6EM2jKMH2swKeGLIBK4Mbv9z.8w8PDgKal8FrWb5tAqsxv0Pj6gWN3I9zn0M4tN3MSw+9j220HxyA27clHMDPUHu26mFcu2NtPPIvfALonYbRjgT+w2Y3u8W+KKeSu+Tciof9OxTldkR7+7efeyU232rYCKgEdA7HMBzRensOCcFEZPOfYSUWGeNyFzvWH39FELSB1FE9DQz6GnDZSWtELoYucYfSCE8kMaJVwyxczqfbAiizeOkQoK1qdj3Ux5mXtxPGFWRWHXC62K9kTl6hKszRGijjdr.B8Mu4MiAsFBtQiFRvB5QhTjiU.ooWXKSrIx7IgmMcl+WSlOV1UmeAb2M8bnGAvqIWAAWW9gOmG7hPeKaJ.uqEzMp3qMjSfBdnB+gBFFpQxvU+cCYLOwqcoyvqcMywOKbBttIHyrNoiO93emQZxWruNifx3qiE2XdUfOZ9uGmq+Kt5Oi26FUOC2mtOpnxGc43mABaIIcNWwLaGlymqwB0g3oYgj8eg4ZtL3uVfrgbPpeEItY23lugwwUP1Olm5iNYVYrNYbxBlIWkej9KIlZQ+YQcLSFeErjaPaLf6PGCh9SYdq5vo0IKey2UOTP86vdEU+0NCG1sKCvxzjrwq.5cf6EzJZRBDuBHZ9+w5NztVCcUmQkPe8eeccCbtyrMjl04jm0MqYaCck1fTOxjVR98cO7jZXrkjqFBvMN4CLdEys4N38Cy9dm3KAGsAxa8GYDe5QOPliz47awifVYhOB5zphW0rESX2OecblbzQ7Tl+GniQOc7kMUusYpBdAyle848chmr3KLil7mSI+qY1h6NxuO2iYG8v9nRLmYb6gS+Y9MLRKZT.qiGo1NZw2hGQtsr7Jlhund6gVti4cWk4ycsBdW87mwSjegoL83mk1If7tjGegoKHcFC5L04zXj4CG88maFEzIny9CG89SMa+iKk0TorEMSF1S8q7jL+UFcbU3bJZP1Su915sfq4vnGFMmZD3qTuvreOU5Ynd9zdv8cCjmRtyvAcfi3so364.ikDhCULCdNuZcEbMpDcndNxEvHSGGsYUbcgnMqFuotO4yUVxkLet0AT4ufjzo7Skq6xCFPdD0iFfQ1I0c6eMs+Hl9S8Oh4SrEfJrafkWnOOjVUmycnCX6By.DlA5XTTKWJx.sAULzKKqUfxfE5JZBtBM7935w.qoCDFbLCyf0Y3z1LsIM92ObcO7mHrCErbmmDZCNFzOqWSzZHLrp7YYppSXJ3Z5f2vJvAhg1YNTX1otpROyL6jIZ3myoEW78vuw62Oi27dbBrL+LzyEqicXC7coq6c.0EtarTGuFbYX4blwPyVGtM2iqFHQOpK+M950ilIYJWCZEg.tTRJjOq9SotTqPsZyeY8sXdTqfrim7V4Kd6+I4yMd8ElJ0kfMOHe3N47r+e8jySe0GzO7G2QwO2D5KWiHCkj2OwxeHFH3GBYLvxNf+M1pWPDK5+XIDvt8j++TZNysw0DsmNL1YBWAm8M11YY0IHr14kvkNuDdqyKg297R3cNuDd2yKg26rIDOQekgB9.UsALlSq0UuWWA0DNxxDi+KcEp4GB
This example uses HISE's stock filter, so it will have to be readjusted for controlling a Scriptnode filter. The code should support this ( I have done this in other projects). I have also added modulation to it in the past and it should, in most cases, display correctly.
I wrote this about a year ago so there is definitely some things I would do differently (the Q calculation is just an estimate based on the HISE stock filters, so will have to be readjusted depending on the filter algorithm you use), but this is a start on a potential solution.
I think it would probably be best to script a draggable filter using just the scriptPanel, or possibly incorporating an external C++ module from JUCE. That would certainly improve accuracy as well as allows for different slopes.
Either way I haven't had it crash on me and it performs well enough imo, here is the code:
//===================== Draggable Filters ===================== //===================== VARIABLES ===================== const var Filter1 = Synth.getEffect("Filter1"); //Filter Display const var FtFilterDisplay1 = Content.getComponent("FtFilterDisplay1"); const ftRestColour = 0x80FFFFFF; const ftActiveColour = 0xFFFFFFFF; FtFilterDisplay1.set("itemColour", ftRestColour); // Panel const var PnlDragFilter1 = Content.getComponent("PnlDragFilter1"); const panelColour = 0x30000000; //Knobs const var KnbFreq1 = Content.getComponent("KnbFreq1"); const var KnbQ1 = Content.getComponent("KnbQ1"); // Initial values for filter parameters reg cutoffFrequency1 = 1000; reg qFactor1 = 1.0; // Retrieve current values for cutoff and Q from the Filter var cutoffValue = Filter1.getAttribute(1); var qValue = Filter1.getAttribute(2); //Knob Control inline function onKnbFreq1Control(component, value) { Filter1.setAttribute(Filter1.Frequency, value); }; Content.getComponent("KnbFreq1").setControlCallback(onKnbFreq1Control); inline function onKnbQ1Control(component, value) { Filter1.setAttribute(Filter1.Q, value); }; Content.getComponent("KnbQ1").setControlCallback(onKnbQ1Control); //===================== PANEL HANDLING ===================== // ----- PANEL 1 ----- PnlDragFilter1.setPaintRoutine(function(g) { var width = this.getWidth(); var height = this.getHeight(); g.fillAll(panelColour); // Calculate position for the cutoff var circleX = (Math.log(cutoffValue / 20) / Math.log(1000)) * width; // Calculate Y position of the circle based on Q value var yPos; if (qValue <= 1.0) { yPos = ((qValue - 0.3) / (1.0 - 0.3)) / 2; } else { yPos = 0.5 + ((qValue - 1.0) / (9.9 - 1.0)) / 2; } var circleY = height * (1.0 - yPos); }); // Mouse Callback to handle dragging and hovering PnlDragFilter1.setMouseCallback(function(event) { var mouseX = event.x; var mouseY = event.y; // Ensure the mouse is within the panel boundaries var panel1Width = PnlDragFilter1.getWidth(); var panel1Height = PnlDragFilter1.getHeight(); if (event.hover == 1) { FtFilterDisplay1.set("itemColour", ftActiveColour); // Change to active color on hover PnlDragFilter1.repaint(); } else if (event.hover == 0) { FtFilterDisplay1.set("itemColour", ftRestColour); // Revert to rest color when not hovering PnlDragFilter1.repaint(); } if (event.drag) { FtFilterDisplay1.set("itemColour", ftActiveColour); mouseX = Math.max(0, Math.min(panel1Width, mouseX)); mouseY = Math.max(0, Math.min(panel1Height, mouseY)); // Logarithmic mapping for cutoff var newCutoff = 20 * Math.pow(1000, mouseX / panel1Width); // Compute Q value based on y position with 1.0 at midpoint var yPos = 1.0 - (mouseY / panel1Height); yPos = Math.max(0, Math.min(1, yPos)); var newQ; if (yPos < 0.5) { newQ = 0.3 + (1.0 - 0.3) * (yPos * 2); } else { newQ = 1.0 + (9.9 - 1.0) * ((yPos - 0.5) * 2); } Filter1.setAttribute(1, newCutoff); Filter1.setAttribute(2, newQ); KnbFreq1.setValue(newCutoff); KnbQ1.setValue(newQ); PnlDragFilter1.repaint(); } }); // This prevents the panel from being dragged outside its parent panel PnlDragFilter1.setDraggingBounds(Content.getComponent("PnlDragFilter1"));
-
RE: DSP fine tuning, that metallic diffuser sound
@Christoph-Hart do you think we could get a DSP category on the forum? It is a good talking point, one which we could see more discussion of. :)
-
RE: Change default scrollbar box padding?
@griffinboy @Gab I think you can now use CSS styling on the preset browser. I haven't tried yet but it should allow you to do this.
https://docs.hise.dev/ui-components/floating-tiles/plugin/presetbrowser.html#css-styling
-
RE: VST Graphics Design
This was quite funny, but just to clarify. Christoph is the creator of HISE, and no one does more for this community than he does, which is why we all find this so hilarious.
@AudioUi your initial post had a ring of spam, which is why Christoph suggested he might delete the post and your account. However, your content is in the right spot and some users here may find it useful.
-
Hise Snippet Browser: Date Uploaded
Would it be possible to add the date the snippet was uploaded to the git repo displayed in the new Snippet Browser (next to Name and Author)?
Small feature request but it would keep me from having to open GithubDesktop to find which ones are new. Or if it would be possible to arrange the snippets based on the upload date, that would be just as good.
-
RE: Free LED - Activity Indicator
@d-healey Ah it took me a minute to follow what you meant here, but yes it would be better in this scenario to do the LAF on the peak meter floating tile. I designed this with the idea of having any input (modulator, midi event, etc.) triggering the LED so I think the timer offers more flexibility.
@clevername27 Here is another version where it's mapped to an LFO. I included a few knobs to control the parameters (
Speed, Hysteresis, Decay, Smooth
) so it should be a bit more user friendly. You should be able to combine this with the first version in order to continue controlling the gain.HiseSnippet 3114.3oc6arsaabbcok1Fa5bwIMAon.EXfQefxgklWjrrpganL0ESDIKUREmj5ZDLb2gja7xc1tWrLSQ.xeP+EJPeueC8CHOj25qs+A8k9b64LydYFwkTzJNNNEkvll6LmyYN2lykYVeb.2hEFxCLJU9jo9LiRutY+odQi6Ll53YzcGiR+DyCX1MMt2TeZXHy1nToU1GmqzUV0P74e8g2i5R8rX4CYX7PtiE6.mINQ4idb6Oxw0cOpM6DmIJPud6tVbuNbWdLvGqXV2vmZ8D5H1CnHXWxz39zvwFktg4VarQCp8vMG1nUisFXOzh0Zy52Z8MaR231CGtY8Fq2xdygqCL4OYWamHdP+HZDKznzp2iaOs+X9odxE3gNgNCbY3CML5Cqrb383t1nHhiZzYriq8woJnPCfnGmqtVQptdWyCcrcxFOWscMwDjbLTUfktjN6shF60Pk8pqvdEvRkTXoUkrzaa12JvwOJeFjetpYWuHVvPJXmTYEIrFW5adGyNb.BunZSnOgsW.7PFFUZUudUB70Z2ob4adSxcy9PNX2cHa+ftGt8IcO5AJSffcxXmPB7mITeelMIhShFyHGRCAxRPmHxDtcrKqJYPbDwIhXwicsIeQbXDgFRXzPG2oHgFvHAL+3.ednjN.EITuoDNPv.xvXOqHGtGohfdT72UIG1cmtD1SAIpJgEYUaMAqitdAkA+MXMdJMfDQtKYWuQNdrZVALvbH.3nAeAyJphTb+HO9fPETN1ycaOmIhkAvNUsMhE0gOwm6AOT45p.ccfN4n+DuA2eJpBXgftYd3qA0LDn+DNH5KBYIDyhnOCzfKBODfYPaGlEc5hPS.v0k5qCEFUzLMj65xOUgTnQOw9eWhHPCRpcGND01WWNCBiNCbvdGcnzvxCZnhX1nUtN.CIGnDNgzINH.XQxCotwrvxArQDq3fC.uB2C.BUuV86nMXO0ACEpPl8rfqMSFN3BtCaH3JQhNkCNytvdTPGDPbvMR9bomI.1mwiIVTOh0Xp2HlXWgkH7GrcwS7ne.2mEDMkvDAJRTFfxDCShJOU+KTUT45NQrIxfn4ZuwNiFuLXzLUg8PZfCEB8DBLjWT.X+.2kASIgtN1rfvxn4vFs08fsJ.QafBNNnTk33MZOpUjX8pWq4Fx4Fm4HexX3eFCQYS0YBTS7IaknC6HWYRGpq6.HSfPEpsenrimKply13y8zlOgBUrR8QqB9QfGvZk+ikIvmhYHAH2o7WUt7RskrVHNqXgR4zJEyGqsX4RtUsXYRN24IOyp7A6B4WQpHfhbCTW2XsEKZoALlqXowJmmHglz4HQ3Tmq.k3RbHE1nGvi8rkhBrr3zQ0BinAQhP0UDvt1cH.67w91naItAJBmKgNNSl.aifYfrIKTEHi8MeMfBqeNJ.Q7vhU.hoNOEvY1i8bZKShFOWAQkEPA4r7Yd7JlH5QEHvSUQvjpjgBWr0HR9zkaQcSFKydgA0pHGqJxtUQQHwzEvhhC7HxvNg0l37rBHtP5NKSYEOvwpqZjzJBu.H6tm8KJ9RPQxGPp.zDT5hGWCT5InA+J6GUZA.zLaj0jbM3SbL0i4RxKQnrVjWvlbLjgKpGONBjuJoxWkQo7NFSjBLMriNDssGfxx8vMAgUDUfg.Aqy9rHgqtGOXB004KAOcoOxv.9DwLXRwIoIEyns6PNPcsjp3xrcTTfCTHFqRpNIAXQxyhvHI6pHKXEEFKo5jTNPvTIJYkbm6cTJgKxxdFnplwHUOazNkE9PnrPbUSwNe4SK9TjTNS3rjBPZFxhb6E+nZdhzpyH.JqOVLrrXleM4nXrJmQATaGrBjvwTa9ohvCHTi.RSXBPEHOB8K1OA38f1jp7nzsHm5DMdaW+wzJYiLFxbidvarVUB8QMeL4ljl3uZI+kfhE7Y9TbfKDa.oXSAEq+XXKffvX3lVatANXC4fsTFLJHl83DmkQ0FBr8tttN9grJO5rDodAzPNVB.aUMehsdrhRsqmGSQoMfh8.v8Jv8ZoThp1bY..ccXiG+bn+zIV8ZqOiAYIUOMZVf9IYvDPjVgVoOnph5vPOWgSpK72uKtTq+cQcLC0Zr.8gc.8zWj5ipjlhn4eURpYLX.50.67wVJJeyaTNBUIhpFxxGlE9UM5KB+ArgXug4crLSDOHKLgngSOT4uXjxBfi33ynOIq6hzEUknY.zKA.wJjPAmgjJJT32nzZyGTTItoRH9QsKnbZHMMeEg4FxJD3ab27JSR.V78r7SOE9o2xyO8T4mdmC+zqP9QohXkd2VTNFALUyEyhRwLCQ6sDDsWNQ6M27VZUGDv7whCfroDgi7MtY1gVfNxISKaQTTlQV3v7PgKiW9BWTbI6KJDJqR5xEUxsRcsOfGwNBHOT95UfxfHmcpgCKbtNoMYFT3zxUaAHVwKdx.VfRwyB.MJsp9ArYN+CXS87+rjETq.H2qqmSzQ9Lu4cpfFIUgimOXBWAfFINJt2L4n35K5d1vw1nzaYp0gngfwSOKz+9e4a+PikfHW0LqeLMB7292U9lkh.kMSamQC+u9tkq0dowWzEgF9j+59+Sk0eUI9uQB9mfGrf.8KaJ9cCcoG+.8uQMJsgYqaUS+ySO5fG9r3sZswuczlcDOCeM7Cvo1pyWbRqwGYrLL9qiL9AC46Ev9C5q9Z+92pswG2cGjALJUJwpdr7bXbPmnR6vdpiESdJqWwbGV3Sh39FkdsrlufeqKxhVADK7aZptky3YpB8T0GFyvP74i7YsUNlFT.Vu4VquU8FasQKi7YjSb6FsZsws23VnpHikLWZewbl5qYs0XpH1yhvkPA3kaIT8TmG42usj7W1LAPURekkwGddT9SaOQ8lJp0dBUQw6.yZa6xNlG5HLJYyzMgidMSI8sYCowtQOT2aUrUYIzAJaVlCi1dP1BJgyX9tTErKZdNSNsO0wFzmkLK8mU7rLK86fm7Sig0EH06Y9PFzxrSzTkCQUiKt5xskJmUZqYIbRDv2xDySgfFy7rlZnYe9Genl8Ym4Ze9ksCiGNzAf0zjb+uTWVtlo9YAa3SCnSXfeaWgCY9haL6kmbMyLDUuKGQAcY2sf1Enfo+8.Fbp5Mh8B6BdVVV7sMO1IxZbw73kJfGgXbeeviIWK1aXJaCNmAW0buO8kvcfc4rawzYhuKa+zk+0MyubgEbWlfSGykpol9D4Vn7vwEbamc8dJjj3XnFvfypjWYokxFKVJWco8DD2r1qzdquioPM+pNSJL8uZyjWyDJw3GHVTdBliNjFEHBE+f3I8gRQrX.64A08f0cW5RXExxmqiOiLQelms3g+C7IYxF3ykRlrQ5jFyt09matuKe.0MWY.UpApCl7dt+EISmm.fjAPiEry+aW12hA+k9sX36m89uZ7hGrr9m+zYLGguDcQ0RM71R1zDKOHQSclBENWF6dNXe9A374UQnz+.5UzM2op8ep8mPeJaHOXRRSCYT5.1HXMUG4DFTqU+odVpNf8SOx.ces2s8Abt+tdX4e1pD43wzPrY6PVjFY.xdBWlArCTm2SzRdMxiGvjMvqNdm3vH9jTAP7d3zOh4KZPpziLu050T5.C9p0QuXd94ovjyYeykVZuTzSHyji9DO+doqtbdoK9cLx34hiybB+Q.GuvJTW4+oqP8kclx2WJhW0D27JdYYDB36YltYlrOCRGNaPuK3K12xmR7HqHfENIf5EhuKWMzBRwl3bBzsYn1nmAilEhQS8J3ih8zIsbHMnPUwdfpPAtK2NcvlpCBEXoQL3YMJcnyyTagUFUtOCjb6iBs.ECpm0BRG6FxD0V1PEw7gapN78oA1mMsvYqrX0kKB4O5d8F+QPC5Z4XtRJOJ69bWnsPWNLRZOOhSQJcT8sdGx839i4dNZF5dLHhwnQLM+mBEnsihnp40e218XtLnZ.0SM4.nJXZ.nmXWPcQim62F0BsW+LSI6JtXie3avJoyhxYGBVR3xhNSrykC+3Pl7H5zrX34CnVpFFSxxY.yU2X.wWSVSAM146vog+Byp9+Sv+BLNEjr3U6CT38MgjVMIBSI4GFa4KipkdYrFSnVA7OO48nECOdYwHfb6I9O1vULODelTv0fMARt94VV5jZFDadQQr0EEw0unHtwEEwacQQbyKJh297QDq8Y6Xn6X4dCnFvi2UFqtTVS4kVw3+hOyOXl
Latest posts made by HISEnberg
-
RE: Open GL on Mac - deprecated?
@orange @ustk and @Gabor-K , I saw you two were discussing this in another thread, would you have any recommendations about this
Part of me is constantly wondering about a higher level graphics rendering alternative, but I understand this is a limitation of JUCE, not strictly HISE.
-
RE: How to use both Css LAF with Normal Laf together
@d-healey haha okay thanks for finding that, I thought I was doing something wrong and needed to improve my skills.
-
Open GL on Mac - deprecated?
Does Open GL still work on Mac? I am working on a project which would require a more "3D" type animation, and I think Webview or GL shaders will probably offer the best options for this. I know the two are differen (OpenGL and GLSL).
However these posts concern me:
https://forum.hise.audio/topic/10504/opengl-shader-is-not-working-in-4-0-0/12
https://forum.hise.audio/topic/2122/open-gl/18The examples seem to work on my Mac still but I am just wondering if any other devs can shed light on this? Is it too risky or were you able to launch a product with it? Are there any other options that exist in HISE I haven't touched on here?
The docs
https://docs.hise.audio/scripting/scripting-api/scriptshader/index.html -
RE: How to use both Css LAF with Normal Laf together
@DabDab I had this exact issue working with the preset browser a few weeks ago, I did not find the solution.
However, I recall a post in the forum saying that mixing and matching CSS with traditional LAF is possible. I can't find it but I would like to see an example of this.
-
RE: Faust suddenly Crashes on PC upon loading any project
@Morphoice I usually delete everything in the AdditionalSourceCode Folder as well.
Can anyone explain to me what this folder is for? It seems to create headers (.h), is this for using your custom nodes in Scriptnode?
-
RE: Faust Korg/Obi filters....
@Lindon Yes I think the mid value (or skew factor) just need to be set the same
-
RE: Question!?
@ClawFORGE-Studio Just make sure that the component (knob, button, etc.) properties has
isPluginParameter
set to Enabled, and give it a pluginParameterName. -
RE: This script processor has a network that consumes the parameters
@Christoph-Hart I think I am missing something but this won't work for me.
The "whatever" here is just the name of the scriptFx correct (whatever we named the xml file)?
** Edit: Something strange with how the project was set up. There is something buggy about this feature that I can't quite put my finger on. Does the scriptnode have to be compiled to dll first? I solved the issue but I can't say exactly how. This has happened to me numerous times in the past.
-
RE: Smoother Dynamic Crossfades
@modularsamples Hypothetically, yes, I think this would be extremely complex and CPU intensive to implement though.
-
RE: Smoother Dynamic Crossfades
@clevername27 I have generally understood it this way, though I think there are a lot of methodologies. From what I can tell there isn't a standard for spectral morphing.