HISE Logo Forum
    • Categories
    • Register
    • Login

    Please Increase parameter limit on Scriptnode custom nodes!

    Scheduled Pinned Locked Moved Feature Requests
    29 Posts 7 Posters 6.6k 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.
    • OrvillainO
      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;
      }
      
      

      Musician - Instrument Designer - Sonic Architect - Creative Product Owner
      Crafting sound at every level. From strings to signal paths, samples to systems.

      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
        • Christoph HartC
          Christoph Hart @griffinboy
          last edited by

          There has to be a better solution to this, but I'm not sure what it is.

          Nope, that's the way to go. The problem is the intersection between runtime code and compile time code which causes these monstrous switch statements.

          @Orvillain if you sign the CLA, I'm happy to accept this beauty of a pull request.

          OrvillainO 1 Reply Last reply Reply Quote 1
          • OrvillainO
            Orvillain @Christoph Hart
            last edited by

            @Christoph-Hart Will do!!

            Musician - Instrument Designer - Sonic Architect - Creative Product Owner
            Crafting sound at every level. From strings to signal paths, samples to systems.

            1 Reply Last reply Reply Quote 0
            • A
              Allen
              last edited by

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

              and for the next guy, he might be a madman and want 128....

              okay so the mad man is here 🤣
              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

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

                @Allen

                😆

                I haven't had the chance to revist this yet

                @Christoph-Hart Did we ever get an update for the compile time parameter callbacks? A bit higher in this thread, a solution was proposed to accommodate arbitrary parameter counts.

                1 Reply Last reply Reply Quote 1
                • A
                  Allen
                  last edited by

                  @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

                  1 Reply Last reply Reply Quote 1
                  • OrvillainO
                    Orvillain
                    last edited by

                    Huh.... I'm running into this now, whereas I'm reasonably sure I wasn't before??? Unless this modification is only relevant for the networks themselves, and not the nodes???

                    SnexSource::SnexParameter::SnexParameter(SnexSource* n, NodeBase* parent, ValueTree dataTree) :
                    	Parameter(parent, getTreeInNetwork(parent, dataTree)),
                    	pIndex(dataTree.getParent().indexOf(dataTree)),
                    	snexSource(n),
                    	treeInCodeMetadata(dataTree)
                    {
                    	// Let's be very clear about this.
                    	jassert(!treeInCodeMetadata.isAChildOf(parent->getRootNetwork()->getValueTree()));
                    
                    	auto& pHandler = n->getParameterHandler();
                    
                    	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;
                    	}
                    
                    	auto ndb = new parameter::dynamic_base(p);
                    	
                    	setDynamicParameter(ndb);
                    
                    	auto ids = RangeHelpers::getRangeIds();
                    	ids.add(PropertyIds::ID);
                    
                    	syncer.setPropertiesToSync(dataTree, data, ids, parent->getUndoManager());
                    
                    	parentValueUpdater.setCallback(data, { PropertyIds::Value }, valuetree::AsyncMode::Synchronously, BIND_MEMBER_FUNCTION_2(SnexSource::SnexParameter::sendValueChangeToParentListeners));
                    }
                    

                    Musician - Instrument Designer - Sonic Architect - Creative Product Owner
                    Crafting sound at every level. From strings to signal paths, samples to systems.

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

                      @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

                      3ce221f8-2747-4954-bab1-0faa2aec8a53-image.png

                      So it isn't an issue of there not being the ability to make a node super tall or anything. Actually, I simply don't know why HISE is not showing any more than 18 parameters on a custom c++ node. Quite annoying, coz I need another gajillion!

                      Well... at least another 16!

                      I don't want to use slider packs. I hate them.

                      Musician - Instrument Designer - Sonic Architect - Creative Product Owner
                      Crafting sound at every level. From strings to signal paths, samples to systems.

                      Christoph HartC 1 Reply Last reply Reply Quote 0
                      • Christoph HartC
                        Christoph Hart @Orvillain
                        last edited by

                        @Orvillain have you tried the new pagination feature? That allows you to subgroup parameters into pages. It looks like this is just an UI problem and having a node with 100 knobs will look very ugly anyways.

                        OrvillainO 1 Reply Last reply Reply Quote 0
                        • OrvillainO
                          Orvillain @Christoph Hart
                          last edited by

                          @Christoph-Hart said in Please Increase parameter limit on Scriptnode custom nodes!:

                          @Orvillain have you tried the new pagination feature? That allows you to subgroup parameters into pages. It looks like this is just an UI problem and having a node with 100 knobs will look very ugly anyways.

                          I haven't actually no. Maybe it will fix this issue. I'll check.

                          Musician - Instrument Designer - Sonic Architect - Creative Product Owner
                          Crafting sound at every level. From strings to signal paths, samples to systems.

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

                          37

                          Online

                          2.0k

                          Users

                          12.6k

                          Topics

                          109.6k

                          Posts