HISE Logo Forum
    • Categories
    • Register
    • Login

    Please Increase parameter limit on Scriptnode custom nodes!

    Scheduled Pinned Locked Moved Feature Requests
    25 Posts 7 Posters 725 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.
    • griffinboyG
      griffinboy
      last edited by griffinboy

      There seems to be a cap limit of 18 parameters on the UI of c++ custom nodes.

      Any more than that and they won't show up on the UI.
      For the particular node I am making I need at least double that.
      Please can you alter this @Christoph-Hart ?

      d78c7d7b-ad3f-4d4b-8b49-1d5723d59d6e-image.png

      380791eb-73f1-4303-aaa9-2a4bdb82d878-image.png

      griffinboyG clevername27C 3 Replies Last reply Reply Quote 3
      • griffinboyG
        griffinboy @griffinboy
        last edited by

        @griffinboy

        bump, apologies

        clevername27C 1 Reply Last reply Reply Quote 1
        • clevername27C
          clevername27 @griffinboy
          last edited by

          @griffinboy Use SlIderpacks linked to Externals? (But carefully, as there appear to be some bugs.)

          1 Reply Last reply Reply Quote 0
          • clevername27C
            clevername27 @griffinboy
            last edited by

            @griffinboy Dude, you're bumping yourself.

            griffinboyG 1 Reply Last reply Reply Quote 1
            • griffinboyG
              griffinboy @clevername27
              last edited by

              @clevername27

              yep it was just to bring it into view. I'd rather have more parameters than use sliderpacks because I had issues with those in the past. But that is a last resort

              clevername27C 1 Reply Last reply Reply Quote 0
              • clevername27C
                clevername27 @griffinboy
                last edited by clevername27

                @griffinboy Yeah, there are definitely issues with them. 🌈 I posted a minimum snippet yesterday that crashes when you try to load the compiled version.

                1 Reply Last reply Reply Quote 0
                • griffinboyG
                  griffinboy @griffinboy
                  last edited by

                  @griffinboy
                  @Christoph-Hart

                  Sorry! I'd really find this useful 😄

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

                    @griffinboy I'm bumping this too! I'm working on something that is definitely going to go past this limit!

                    griffinboyG 1 Reply Last reply Reply Quote 1
                    • griffinboyG
                      griffinboy @HISEnberg
                      last edited by

                      @HISEnberg

                      Yep, definitely need support for obese nodes 🤣

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

                        @griffinboy it's the only way to get those fat sounds 😉

                        1 Reply Last reply Reply Quote 1
                        • modularsamplesM
                          modularsamples
                          last edited by

                          What if you used global cables instead of sliderpacks? As a bonus it should be easier to keep track of your connections.

                          1 Reply Last reply Reply Quote 0
                          • O
                            Orvillain
                            last edited by

                            This looks like it is probably the same thing I ran into:
                            https://forum.hise.audio/topic/9760/do-snex-nodes-have-a-limit-of-9-parameters

                            Chris extended it to 16 iirc. This is changeable, but you have to add a bunch of switch statements to HISE and recompile. I'll dig out where I've done this to increase the parameter count myself.

                            O 1 Reply Last reply Reply Quote 0
                            • O
                              Orvillain @Orvillain
                              last edited by

                              I think it is this:
                              file:///hi_scripting/scripting/scriptnode/snex_nodes/SnexSource.cpp

                              Look for these lines:

                              case 8: p = parameter::inner<SnexSource::ParameterHandler, 8>(pHandler); break;
                              	case 9: p = parameter::inner<SnexSource::ParameterHandler, 9>(pHandler); break;
                              	case 10: p = parameter::inner<SnexSource::ParameterHandler, 10>(pHandler); break;
                              	case 11: p = parameter::inner<SnexSource::ParameterHandler, 11>(pHandler); break;
                              	case 12: p = parameter::inner<SnexSource::ParameterHandler, 12>(pHandler); break;
                              	case 13: p = parameter::inner<SnexSource::ParameterHandler, 13>(pHandler); break;
                              	case 14: p = parameter::inner<SnexSource::ParameterHandler, 14>(pHandler); break;
                              	case 15: p = parameter::inner<SnexSource::ParameterHandler, 15>(pHandler); break;
                              	case 16: p = parameter::inner<SnexSource::ParameterHandler, 16>(pHandler); break;
                              	default:
                              		jassertfalse;
                              	}
                              

                              Add as many cases as you need and just increment the integer.

                              griffinboyG 1 Reply Last reply Reply Quote 1
                              • griffinboyG
                                griffinboy @Orvillain
                                last edited by

                                @Orvillain

                                Thank you very much, super good.

                                However I would wish it to be changed in the official version of hise, as I like to share nodes and I'm trying to keep the amount of source code tampering to a minimum - some of my nodes already require changing a few things in the Hise Source.

                                O 1 Reply Last reply Reply Quote 0
                                • O
                                  Orvillain @griffinboy
                                  last edited by

                                  @griffinboy said in Please Increase parameter limit on Scriptnode custom nodes!:

                                  @Orvillain

                                  Thank you very much, super good.

                                  However I would wish it to be changed in the official version of hise, as I like to share nodes and I'm trying to keep the amount of source code tampering to a minimum - some of my nodes already require changing a few things in the Hise Source.

                                  @Christoph-Hart - it might be worth considering updating the code so that a global variable determines the number of supported parameters, much like the NUM_MAX_CHANNELS variable???

                                  griffinboyG 1 Reply Last reply Reply Quote 0
                                  • griffinboyG
                                    griffinboy @Orvillain
                                    last edited by

                                    @Christoph-Hart

                                    Can we get something like this please?

                                    O 1 Reply Last reply Reply Quote 1
                                    • O
                                      Orvillain @griffinboy
                                      last edited by

                                      @griffinboy I looked into this, and it seems like dynamically altering the switch based on a global parameter is not that straight forward. So I think the simplest solution is as Christoph did in the past, which was to manually extend the cases, as I also suggested.

                                      The problem is..... 16 was enough for me in that moment, but maybe not the next.... and for you, you need at least 40 or so... and for the next guy, he might be a madman and want 128....

                                      There has to be a better solution to this, but I'm not sure what it is. Maybe storing each case in a table and using it to build the switch out at compile time, but my c++ knowledge isn't good enough for that!

                                      griffinboyG 1 Reply Last reply Reply Quote 1
                                      • griffinboyG
                                        griffinboy @Orvillain
                                        last edited by

                                        @Orvillain

                                        That should be possible

                                        @Christoph-Hart ?

                                        O 1 Reply Last reply Reply Quote 0
                                        • O
                                          Orvillain @griffinboy
                                          last edited by

                                          @griffinboy Here's a code snippet if you wanna just bash it into that file. I tend to have a few customizations to HISE that I stash and re-apply each time I pull the latest develop. Hasn't broken anything yet!

                                          switch (pIndex)
                                          {
                                          case 0:  p = parameter::inner<SnexSource::ParameterHandler, 0>(pHandler); break;
                                          case 1:  p = parameter::inner<SnexSource::ParameterHandler, 1>(pHandler); break;
                                          case 2:  p = parameter::inner<SnexSource::ParameterHandler, 2>(pHandler); break;
                                          case 3:  p = parameter::inner<SnexSource::ParameterHandler, 3>(pHandler); break;
                                          case 4:  p = parameter::inner<SnexSource::ParameterHandler, 4>(pHandler); break;
                                          case 5:  p = parameter::inner<SnexSource::ParameterHandler, 5>(pHandler); break;
                                          case 6:  p = parameter::inner<SnexSource::ParameterHandler, 6>(pHandler); break;
                                          case 7:  p = parameter::inner<SnexSource::ParameterHandler, 7>(pHandler); break;
                                          case 8:  p = parameter::inner<SnexSource::ParameterHandler, 8>(pHandler); break;
                                          case 9:  p = parameter::inner<SnexSource::ParameterHandler, 9>(pHandler); break;
                                          case 10: p = parameter::inner<SnexSource::ParameterHandler, 10>(pHandler); break;
                                          case 11: p = parameter::inner<SnexSource::ParameterHandler, 11>(pHandler); break;
                                          case 12: p = parameter::inner<SnexSource::ParameterHandler, 12>(pHandler); break;
                                          case 13: p = parameter::inner<SnexSource::ParameterHandler, 13>(pHandler); break;
                                          case 14: p = parameter::inner<SnexSource::ParameterHandler, 14>(pHandler); break;
                                          case 15: p = parameter::inner<SnexSource::ParameterHandler, 15>(pHandler); break;
                                          case 16: p = parameter::inner<SnexSource::ParameterHandler, 16>(pHandler); break;
                                          case 17: p = parameter::inner<SnexSource::ParameterHandler, 17>(pHandler); break;
                                          case 18: p = parameter::inner<SnexSource::ParameterHandler, 18>(pHandler); break;
                                          case 19: p = parameter::inner<SnexSource::ParameterHandler, 19>(pHandler); break;
                                          case 20: p = parameter::inner<SnexSource::ParameterHandler, 20>(pHandler); break;
                                          case 21: p = parameter::inner<SnexSource::ParameterHandler, 21>(pHandler); break;
                                          case 22: p = parameter::inner<SnexSource::ParameterHandler, 22>(pHandler); break;
                                          case 23: p = parameter::inner<SnexSource::ParameterHandler, 23>(pHandler); break;
                                          case 24: p = parameter::inner<SnexSource::ParameterHandler, 24>(pHandler); break;
                                          case 25: p = parameter::inner<SnexSource::ParameterHandler, 25>(pHandler); break;
                                          case 26: p = parameter::inner<SnexSource::ParameterHandler, 26>(pHandler); break;
                                          case 27: p = parameter::inner<SnexSource::ParameterHandler, 27>(pHandler); break;
                                          case 28: p = parameter::inner<SnexSource::ParameterHandler, 28>(pHandler); break;
                                          case 29: p = parameter::inner<SnexSource::ParameterHandler, 29>(pHandler); break;
                                          case 30: p = parameter::inner<SnexSource::ParameterHandler, 30>(pHandler); break;
                                          case 31: p = parameter::inner<SnexSource::ParameterHandler, 31>(pHandler); break;
                                          case 32: p = parameter::inner<SnexSource::ParameterHandler, 32>(pHandler); break;
                                          case 33: p = parameter::inner<SnexSource::ParameterHandler, 33>(pHandler); break;
                                          case 34: p = parameter::inner<SnexSource::ParameterHandler, 34>(pHandler); break;
                                          case 35: p = parameter::inner<SnexSource::ParameterHandler, 35>(pHandler); break;
                                          case 36: p = parameter::inner<SnexSource::ParameterHandler, 36>(pHandler); break;
                                          case 37: p = parameter::inner<SnexSource::ParameterHandler, 37>(pHandler); break;
                                          case 38: p = parameter::inner<SnexSource::ParameterHandler, 38>(pHandler); break;
                                          case 39: p = parameter::inner<SnexSource::ParameterHandler, 39>(pHandler); break;
                                          case 40: p = parameter::inner<SnexSource::ParameterHandler, 40>(pHandler); break;
                                          case 41: p = parameter::inner<SnexSource::ParameterHandler, 41>(pHandler); break;
                                          case 42: p = parameter::inner<SnexSource::ParameterHandler, 42>(pHandler); break;
                                          case 43: p = parameter::inner<SnexSource::ParameterHandler, 43>(pHandler); break;
                                          case 44: p = parameter::inner<SnexSource::ParameterHandler, 44>(pHandler); break;
                                          case 45: p = parameter::inner<SnexSource::ParameterHandler, 45>(pHandler); break;
                                          case 46: p = parameter::inner<SnexSource::ParameterHandler, 46>(pHandler); break;
                                          case 47: p = parameter::inner<SnexSource::ParameterHandler, 47>(pHandler); break;
                                          case 48: p = parameter::inner<SnexSource::ParameterHandler, 48>(pHandler); break;
                                          case 49: p = parameter::inner<SnexSource::ParameterHandler, 49>(pHandler); break;
                                          case 50: p = parameter::inner<SnexSource::ParameterHandler, 50>(pHandler); break;
                                          case 51: p = parameter::inner<SnexSource::ParameterHandler, 51>(pHandler); break;
                                          case 52: p = parameter::inner<SnexSource::ParameterHandler, 52>(pHandler); break;
                                          case 53: p = parameter::inner<SnexSource::ParameterHandler, 53>(pHandler); break;
                                          case 54: p = parameter::inner<SnexSource::ParameterHandler, 54>(pHandler); break;
                                          case 55: p = parameter::inner<SnexSource::ParameterHandler, 55>(pHandler); break;
                                          case 56: p = parameter::inner<SnexSource::ParameterHandler, 56>(pHandler); break;
                                          case 57: p = parameter::inner<SnexSource::ParameterHandler, 57>(pHandler); break;
                                          case 58: p = parameter::inner<SnexSource::ParameterHandler, 58>(pHandler); break;
                                          case 59: p = parameter::inner<SnexSource::ParameterHandler, 59>(pHandler); break;
                                          case 60: p = parameter::inner<SnexSource::ParameterHandler, 60>(pHandler); break;
                                          case 61: p = parameter::inner<SnexSource::ParameterHandler, 61>(pHandler); break;
                                          case 62: p = parameter::inner<SnexSource::ParameterHandler, 62>(pHandler); break;
                                          case 63: p = parameter::inner<SnexSource::ParameterHandler, 63>(pHandler); break;
                                          default:
                                              jassertfalse;
                                          }
                                          
                                          
                                          griffinboyG 1 Reply Last reply Reply Quote 1
                                          • griffinboyG
                                            griffinboy @Orvillain
                                            last edited by

                                            @Orvillain

                                            Thanks man. Honestly I'm still hoping it gets officially changed, because I like to share nodes on here. @Christoph-Hart said he is looking to improve certain areas of the c++ node side of hise, so hopefully it'll get sorted at somepoint!

                                            I'll use your fix for now, so that I can continue development.
                                            : )

                                            Christoph HartC 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            50

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            101.8k

                                            Posts