Forum
    • Categories
    • Register
    • Login

    Parametric EQ - Limit the amount of nodes?

    Scheduled Pinned Locked Moved General Questions
    37 Posts 9 Posters 1.5k 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.
    • DanHD
      DanH @lalalandsynth
      last edited by DanH

      @lalalandsynth I donโ€™t think so. I reckon there must be a way to edit the mouse callback for adding nodes in the source code. My initial idea was to create the nodes you require and then edit the source to prevent users adding their own.

      Failing that what you want to do might be possible using multiple EQ filters in scriptnode

      DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
      https://dhplugins.com/ | https://dcbreaks.com/
      London, UK

      1 Reply Last reply Reply Quote 1
      • ustkU
        ustk
        last edited by

        Digging up quite an old one!

        Is there a way to limit the number of nodes nowadays?
        Only found interrogations...

        Hise made me an F5 dude, any other app just suffers...

        DanHD Oli UllmannO 2 Replies Last reply Reply Quote 0
        • DanHD
          DanH @ustk
          last edited by DanH

          @ustk I seem to remember being able to edit the data field but can't find an example. I did it in the source code. Do you want a fixed amount always visible or allow the user to add a max of x?

          DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
          https://dhplugins.com/ | https://dcbreaks.com/
          London, UK

          ustkU 1 Reply Last reply Reply Quote 1
          • ustkU
            ustk @DanH
            last edited by

            @DanH always visible and not able to edit the type. Iโ€™d prefer not to edit the source unless itโ€™s customisable for a pull request compatibility.

            But seeing my needs I might just end up with a panel based custom solution lol

            Hise made me an F5 dude, any other app just suffers...

            DanHD 1 Reply Last reply Reply Quote 0
            • DanHD
              DanH @ustk
              last edited by

              @ustk you're good at those ๐Ÿ˜†

              DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
              https://dhplugins.com/ | https://dcbreaks.com/
              London, UK

              1 Reply Last reply Reply Quote 1
              • Oli UllmannO
                Oli Ullmann @ustk
                last edited by

                @ustk
                I solved it using an EQ broadcaster. The value you get from the broadcaster is the index of the band.

                If the index is below my maximum value, e.g. 8, nothing happens except that I save the current status of the EQ in a variable (Effect.exportState()).

                If the index exceeds my maximum value, I show the user a message and reset the status of the EQ to the status I saved in the variable. It's actually pretty simple. :-)

                At least that works with HISE's internal EQ.

                ustkU HISEnbergH 2 Replies Last reply Reply Quote 4
                • ustkU
                  ustk @Oli Ullmann
                  last edited by

                  @Oli-Ullmann Mmm clever!

                  Hise made me an F5 dude, any other app just suffers...

                  1 Reply Last reply Reply Quote 1
                  • HISEnbergH
                    HISEnberg @Oli Ullmann
                    last edited by

                    @Oli-Ullmann do you have an example? I've been trying to do this but I get some buggy behaviour (My EQ is maxed at 3 nodes, but every other click adds a 4th node).

                    gif.gif

                    const var MAX_BANDS = 3;
                    const var eq = Synth.getEffect("eq");
                    const var ft = Content.getComponent("ft");
                    
                    reg savedState;
                    
                    const var eqBroadcaster = Engine.createBroadcaster({
                        "id": "eqBroadcaster",
                        "args": ["eventType", "value"]
                    });
                    
                    eqBroadcaster.attachToEqEvents(["eq"], ["BandAdded"], "");
                    
                    inline function onEqEvent(eventType, value)
                    {
                        
                        if(eventType == "BandAdded")
                        {
                            if(value < MAX_BANDS)
                            {
                                savedState = eq.exportState();
                            }
                            else
                            {
                                eq.restoreState(savedState);
                                Engine.showErrorMessage("Maximum " + MAX_BANDS + " bands allowed", false);
                            }
                        }
                    }
                    
                    eqBroadcaster.addListener("", "bandLimiter", onEqEvent);
                    
                    HiseSnippet 1244.3ocuV07aiSDEebScEM.R6JshyV9TJaHJoY6WrTQa9BhXS2.or6JsZU0D6wIip8LIimj1HTk3NHw+Cbh+IPBtw+Jbiybo7lwNw1McKkH.eHJuu+Mu2aduoqf6PBC4BjQ9SmMhfLdOydyXxg0GhoLT6FHi20jLt4k3fQ9DTsYivggDWjgQtOSofwlqize+wmVC6iYNjDVHzK3TGxynATYB2tG8ETe+VXWxozfTZ+jiZ6vY0497I.XxYVFMB6bNd.4DrRs0LQeNNbHx3CM2c+9k26.u881lP5224.ra4cHDmcw86uWYbksc8H66tS0pHiMZ5RkbQOIVRBQFqWi6Nq2P9Ern.7BZHsObp.hJndPjiX2h66pNhJtn5Co9tcmmkBQfW5ljyxEkydjYGpKcA+jb2CzBrRrHcBzXsrvKWF3U4sAuaARFofz5QP5gl8bDzQxDIQ0x1LIQ3gcxVKizEslaNSnHDJslhEVcN9UmU63SZzy5PqpOMeh.xXfitKoz.hromGwQVvlL1dqzZ4IAspyg3wjJ8pyCFwY.QAaOoR07Bx.qP7ThqNC.LRGhZBN10AGBvE7SS1.JiTxQP.MSIpv2j2B9rot1erkcFqrKFIBKFDBBesMYJDbU1wtnk8Tr+Dh8axekBHYrqDVJwNCOk2bbSkEgEds5r8lhfKpgYtG6BcGJRa8gfx7AjY4Mg4HoblEmEaWgEwqnkNZakOBr5endIxsN7PqTtdKsBQ5Fqp1dqOIojr0BoI5o9RRmPRiLtD4xQbgTyn.f14pc0h+Q7CIuEeAlKHgPCJIx9DemxSpu3hSHz51TH3hNPCGbwsfcG7kzfIAV1VONU2ziA59voMzB66yu.NwEs7v.NVBfWk+pkJNttOiB+iA0daUgT4I8HFUEOI6u0SSUQNgKIOmUPU.1Dbo0ME44cqxTMuBtuODpaSrZ9k3tLr.aRPehHU4WqHbGM6E+MteW7chtKkRQNqMiJe9HRL8cO4BEeYD92W2tAVhUSNh4A5MhHjTEbLZPlBysiliroYCR34R9Hstw2fgAIx3AeQSNZ4ywRJavoT.1T.Aqa5IQWldWvrzDWPckvrbSihFHzPBcvPoh52R.YTz+.yFB7fAXHazh5Ck3tXFwG0ev78DatwbWBM.AIbu95q+1rb2NV4pJ15SuQKSUCu8hbT63gH5IG1sYtjKAFeTEMIjagl0WxEmGBKlHf.cOa9qfUZKM8El6ycm3ikYWFnVYFK.ZTxLAVMWlERkyRuR8evFhx24Fh6KDenYWpzY3siw0tELBsP+Wfw38puuYzxkD.ttYqWspKQKe+Wh9n4M+0mHlRZNNN1jwYh8ISBh5JCUMu4fifZHd44YmuuT9iTLpLmwne5K0L1N6ylXtUuIimjv3AZS1Ilwu7ck9SsF6NmQoekp0Xua5i8uIiCtoSqr.p+9OlKhyBr9y+vzHNKA1JKg1JYfaqVm1jotwFUex8uzibPeEehZDSGrTPgIKlP1uGbu1g.cGLXpftHrlZBRDcYEsBR8H5hhoALT35XgUTzFwBqLW3+KwH.6H3m4DshP038NZNv4loeo6llcTzVUP50FouqE.Ol7LGmrtZIC2dUMr5pZ3SVUC2YUMb2U0v8VUC2+u2P0a8OdhjGDM5Dg5zsYzlFiT2HP+EzhLhdJ
                    

                    Sonic Architect && Software Mercenary

                    ustkU Oli UllmannO 2 Replies Last reply Reply Quote 0
                    • ustkU
                      ustk @HISEnberg
                      last edited by

                      @HISEnberg @Christoph-Hart I think at this stage it would be interesting to consider a NumMaxEqNodes property, or even just a knob on the module itself that could be added to Hise 5. There are much much to do already but my guess is that it should be quite straight forward to add in the end...
                      For now that's precisely what's making me dodge the param eq on my interfaces and build custom ones... so... ๐Ÿคž

                      Hise made me an F5 dude, any other app just suffers...

                      dannytaurusD 1 Reply Last reply Reply Quote 2
                      • Oli UllmannO
                        Oli Ullmann @HISEnberg
                        last edited by

                        @HISEnberg
                        I just checked it and I have the same problem. For some reason, the broadcaster stops responding after the first reset. I have a workaround in mind, but I can't check it right now because I have to finish something else first.

                        When do you need a solution? Is next week okay? Then I would try to implement it by then.

                        David HealeyD 1 Reply Last reply Reply Quote 1
                        • David HealeyD
                          David Healey @Oli Ullmann
                          last edited by

                          @Oli-Ullmann said in Parametric EQ - Limit the amount of nodes?:

                          For some reason, the broadcaster stops responding after the first reset.

                          I suspect you need to enable the queue

                          https://docs.hise.audio/scripting/scripting-api/broadcaster/index.html

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

                          Oli UllmannO 1 Reply Last reply Reply Quote 2
                          • Oli UllmannO
                            Oli Ullmann @David Healey
                            last edited by

                            @David-Healey
                            @HISEnberg
                            Yes, .setEnableQueue(true); fixed the bug. Thanks, Dave! :-)

                            1 Reply Last reply Reply Quote 1
                            • dannytaurusD
                              dannytaurus @ustk
                              last edited by dannytaurus

                              @ustk I made a simple source code change to add a MaxBands parameter.

                              Is this what you mean? If so, I'll submit a PR.

                              CleanShot 2026-01-27 at 13.23.36.gif

                              Meat Beats: https://meatbeats.com
                              Klippr Video: https://klippr.video

                              David HealeyD Oli UllmannO HISEnbergH ustkU 4 Replies Last reply Reply Quote 2
                              • David HealeyD
                                David Healey @dannytaurus
                                last edited by

                                @dannytaurus Much cleaner solution

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

                                dannytaurusD 1 Reply Last reply Reply Quote 1
                                • Oli UllmannO
                                  Oli Ullmann @dannytaurus
                                  last edited by

                                  @dannytaurus
                                  Looks great! :-)

                                  1 Reply Last reply Reply Quote 1
                                  • HISEnbergH
                                    HISEnberg @dannytaurus
                                    last edited by

                                    @dannytaurus nice I was thinking of doing this myself, this is a really clean and ideal solution. The UX is precisely what I was after.

                                    Thanks to all of you guys for your responses as well!

                                    Sonic Architect && Software Mercenary

                                    1 Reply Last reply Reply Quote 2
                                    • ustkU
                                      ustk @dannytaurus
                                      last edited by

                                      @dannytaurus Yeah exactly ๐Ÿ‘
                                      I was working on it but you got there first! Thanks! ๐Ÿ˜Ž

                                      Hise made me an F5 dude, any other app just suffers...

                                      1 Reply Last reply Reply Quote 1
                                      • dannytaurusD
                                        dannytaurus @David Healey
                                        last edited by dannytaurus

                                        @David-Healey @Oli-Ullmann @HISEnberg @ustk Hmmm... maybe not as clean as I thought.

                                        I think this would introduce a breaking change to any existing projects using the per-band indices to access and/or change values.

                                        The docs page shows 6 attributes for the Parametric EQ, and I believe they are per-band, so band 1 Gain is index 0, band 2 Gain is index 6, and so on.

                                        The MaxBands attribute I introduced here would be a new (and only) global attribute for the module, at index 0, which would shift all the per-band indices by 1.

                                        Thoughts?

                                        Meat Beats: https://meatbeats.com
                                        Klippr Video: https://klippr.video

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

                                          @dannytaurus what about making it a floating tile property instead of a module attribute?

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

                                          dannytaurusD 4 Replies Last reply Reply Quote 2
                                          • dannytaurusD
                                            dannytaurus @David Healey
                                            last edited by

                                            @David-Healey Here's the initial PR for reference: https://github.com/christophhart/HISE/pull/860

                                            Meat Beats: https://meatbeats.com
                                            Klippr Video: https://klippr.video

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

                                            38

                                            Online

                                            2.2k

                                            Users

                                            13.3k

                                            Topics

                                            115.5k

                                            Posts