HISE Logo Forum
    • Categories
    • Register
    • Login

    Lindon's interface has gone mad!....optimising a massive UI

    Scheduled Pinned Locked Moved General Questions
    21 Posts 5 Posters 117 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.
    • LindonL
      Lindon @d.healey
      last edited by Lindon

      @d-healey said in Lindon's interface has gone mad!....optimising a massive UI:

      @Lindon is each one the same set of controls repeated?

      yes

      And how many sets of controls need to be visible at the same time?

      Just the one...

      I've worked on projects in the past with a seemingly massive amount of controls, but only a fraction of the total needs to be displayed at any one time. What I've done is reused the same controls for each page/tab and stored the values in hidden slider packs.

      ..and how did you manage preset loading? Using a UserPresetHandler?

      HISE Development for hire.
      www.channelrobot.com

      d.healeyD 1 Reply Last reply Reply Quote 0
      • d.healeyD
        d.healey @Lindon
        last edited by

        @Lindon said in Lindon's interface has gone mad!....optimising a massive UI:

        ..and how did you manage preset loading? Using a UserPresetHandler?

        The sliderpacks are set to saveInPreset. When you change page you load the values from the sliderpacks. So as long as your change page mechanism is stored/restored with the preset then it will work automatically.

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

        LindonL 1 Reply Last reply Reply Quote 0
        • Oli UllmannO
          Oli Ullmann @d.healey
          last edited by

          @d-healey said in Lindon's interface has gone mad!....optimising a massive UI:

          've worked on projects in the past with a seemingly massive amount of controls, but only a fraction of the total needs to be displayed at any one time. What I've done is reused the same controls for each page/tab and stored the values in hidden slider packs.

          I did that too, and it works great.

          @Lindon for example, you can put all the components in an array and then use indexOf to assign the appropriate slider in the slider pack.

          1 Reply Last reply Reply Quote 0
          • LindonL
            Lindon @d.healey
            last edited by

            @d-healey said in [Lindon's interface has gone mad!....optimising a massive UI].

            So as long as your change page mechanism is stored/restored with the preset then it will work automatically.

            err, ? what do you mean? - theres a button on each pad(not saved in the preset) that opens the editor...

            HISE Development for hire.
            www.channelrobot.com

            d.healeyD 2 Replies Last reply Reply Quote 0
            • d.healeyD
              d.healey @Lindon
              last edited by

              @Lindon I'll make a snippet, one moment

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

              1 Reply Last reply Reply Quote 0
              • d.healeyD
                d.healey @Lindon
                last edited by

                @Lindon

                HiseSnippet 1453.3ocsXssaaTDFd1zro0tsHJhK3xkJQkSSw01wMNnPKNwNgZfDahSi.QQQi2c13QY8LV6NNMAnR8RtiWAdT3cfWDdCf+4f8N9TNIpuHZ+m+Se+Gl+YlzJl6SRR3wHmrGbdeBx4dtsOmI5VqKlxPMpCq61GeLoNoGGs048wIIj.jiys9ZIemLKhT+9muZKbDl4SRWBgNjS8IeGsGUjtZqpeKMJZGb.4.ZOKoKWsgOmUiGwG.X4VtEP8w9m.NdOrTrEbQuDmzE47X2UqrFNrTkJDR3ZE9hJUBWqhOtDgTd0xk6Df6TZ808W+YUVG4rz1ATAOts.KHIfQ2hGbd6t72vzN3PZBsSDQRTD0F7rdYTstznfVCSLIHjyhsRSS2Rml9X2coAzQqmlt9PECuTMrSZNKbQPp30.RNVPZQMjdfaa+XZeQJGIdtqaClfDGhgZiMTzxhV3I21sFGjfIx2CeBYmXfXjF4VqPgm3A+Y4MxlEpOIBu8d0tGsc8FGzb+ip0b2VM2a68Nns2y8JAR7zm9odcDrCHIBizFJf+PmbLQTi2qOmAD4dng+CA6a9LehT.lHlGUCGE0A5BxwYFlFFRzPYQTFwKb.yWP4LuIkIm+Pu7DuSwQCHKm8WylIAR9j5XANWggKuQ12pQ9IrNxdRCxMTyE4F9Rja9b1H2v7BQ93xbYHu3XHWi19rHcm0bw6HIjHdDQ9Dn4aneCwQIRqNrNpEIsRNKOrYTzHmjnpmZod8qCjNJaHnPty7nrTCnBmyjYqCkgQNYykldl0csRo4u2NmZ+XxM6bXD2GGAXIfbFDEizIuZklgoJIQTlrYlI3yXicvNO2ajZdO5QiJMR8mcZdjDQbbfphp7eZiXRTe4xlDugZtEVC+GNrvsiIqjLUZRp2f3XPKMpxoRJpfjBluvFdTuuzJsDQXGK5BqtxJPXChlgF5kaD+eh9yRnnSDKKSLYhIhAwLOJDbuMKj.LzedwYV1RaoUIfoqT91nEP3zA.DyJPMgjOGboDPZ+KERavjHZ.ItgoAXbkd7bFsshtgYCY7Xx0x5eako1TnLVNKCO1tyIC4IJ4uGBUYemcv1LLDP6UMZ05aMJVWcGF2GOLtUKuoH2X9XEuBKK6qslGd8Tu3x5rl0F683BRSltSEX4MIqvvYxyrWKhDOS1R3EeQJliMnWGRrcKoTP3r1wO.eoq1A395ctVBxYMXTQy9DC8N7n.4Ayxum93djYqu7feCBAnHTG6+Qli80Y1VvbSDELTFWSVGoBgzaZcmpAxUc9L2RkyC+BWIe9Wle+5vmq1Le902emMyq9wnQeOB8pFJiXbLfA.W8IwBpL7cpSNEtim99GYbqSRNQv6ibbGMeB9VCyOv.ysFHDblBh2yczrjBnyRQ3Kpdt8ECSvmRZvZESflD4MWPWWiWzx3uK7+YiWxx3+o3pa7aqM98GdoMLiDor8ccGcrgMtwVl9cGV8Mz.AbcXWmuwAg5RnG2UBXmp.0oC6Ak22zxiKM2vIiqYGucUnrcr7hp8wxoGVlyFmWTfd2wcqtM03VyjBa29iVt8u5b8baOd.3okbU1rGN0p+9eWMQP52l9KD62rjLHLjBR4550KA0iFDDQZwSnxYAR4VPJV0+nJZ5r3ktqaNYRueqpdn2l83CXVOL5SpNAfQSeCe3sE7fAQXw3O3P9TLCCIvsuku7l7LHfN2NruFuBovE9JjqJDefaKpvu6rw3By.iv3l2GXz71s66tcXHwWjBvEc24GtoOT6Rb+97ABJ63cwhXUq1dC50FdiqOA7NC1ymH21JazLzEjzxLPaBKPQ7uvOCyhRZGCyhCYBs59w7i70GLHec3cTq.Xhod8bF2ckzdEm7r.jromdju+3lZJEKcSUb0aphkuoJ9raphqcSUrxMUw0ubEk+uD1bff2SusAg1s01pwKNNayvPGnpaE8e.m6PJ2C
                

                You need to set the sliderpack to have the number of sliders that matches the total number of editable controls. And the range should cover the lowest to highest range of those controls. Graphically the sliderpack will go weird, but it will be hidden anyway so it doesn't matter.

                In my snippet I'm organising the data so that the first slider is the button's value, the second slider is for the knob's value, and this repeats for all 6 sliders. However you might not want to do this if you think you will be adding more controls in the future, because then you will mess up old presets. A solution I've used in the past is to have multiple sliderpacks for different groups of controls. So adapt as needed.

                I'm not quite sure how you are showing/hiding the controls, so I've just added 3 buttons, only one is active at a time, and when a button is active the controls are visible. By default the editor is hidden and all controls are inactive.

                One extra thing which I'd forgotten about is you'll need to set the values of connected modules from the sliderpack's callback, at least during onInit so that the preset is restored correctly.

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

                ustkU LindonL 2 Replies Last reply Reply Quote 0
                • ustkU
                  ustk @d.healey
                  last edited by

                  @d-healey To this nice solution I prefer object stored in a panel. JSON are nicer to read when needed. And you can store other types than just values

                  Hise made me an F5 dude, browser just suffers...

                  d.healeyD 1 Reply Last reply Reply Quote 0
                  • d.healeyD
                    d.healey @ustk
                    last edited by

                    @ustk Yeah that's a good solution too, can it be extended easily if you add new controls in the future?

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

                    ustkU 1 Reply Last reply Reply Quote 0
                    • ustkU
                      ustk @d.healey
                      last edited by

                      @d-healey To me it seems even easier to extend because controls are either in an array inside the json or better, with a named property. So at checking time the property is either existing or not in the preset, so you have a safe control on value recall

                      Hise made me an F5 dude, browser just suffers...

                      d.healeyD 1 Reply Last reply Reply Quote 2
                      • d.healeyD
                        d.healey @ustk
                        last edited by

                        @ustk Yes you've convinced me :) feel free to modify the snippet... hint hint

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

                        ustkU 1 Reply Last reply Reply Quote 0
                        • ChazroxC
                          Chazrox
                          last edited by Chazrox

                          Choose your core controls, lets say for example ' attack' and 'release' x 12 samplers. Just make 1 attack knob and 1 release and trigger which envelope its assigned to via 'last note triggered'. So if that note is detected by piano press or a UI button, it will change its processor connection to the corresponding module. You can add some visual changes to let the user know which row its triggering. I have a 'core parameters' section thats all dynamically changed by piano press and/or UI button controls changing a variable flag 'last note played = note'. I change processor connection and call updateValueFromProcessor...something like that on all the core parameter control components.

                          Screenshot 2025-11-25 at 2.56.46 AM.png

                          These are my controls for 12 samplers all neatly tucked into a few tabs. You could def have more tabs, and maybe tabs within those tabs for your 3 different layers. A few different panels and a few radio buttons is the best way I could figure out how to minimize my interface when I want alot of controls but not want to show them all at the same time.

                          This is just how I figured I'd approach it. 🙏

                          btw, all individual parameters are obviously still read/write on preset loads so you do those in the background and on load you just restore the knobs visually for what trigger you want to show on launch.

                          1 Reply Last reply Reply Quote 0
                          • LindonL
                            Lindon @d.healey
                            last edited by

                            @d-healey said in Lindon's interface has gone mad!....optimising a massive UI:

                            One extra thing which I'd forgotten about is you'll need to set the values of connected modules from the sliderpack's callback, at least during onInit so that the preset is restored correctly.

                            Yes thisis the thing I think was missing from your described approach, so I was at a loss as to how it would process presets, but yeah this is an approach....

                            HISE Development for hire.
                            www.channelrobot.com

                            LindonL 1 Reply Last reply Reply Quote 0
                            • LindonL
                              Lindon @Lindon
                              last edited by

                              @Lindon The problem is of course, this fails to capture the Velocity Modulator shapes, which would have to be stored in the presets anyway...

                              HISE Development for hire.
                              www.channelrobot.com

                              d.healeyD ustkU 2 Replies Last reply Reply Quote 0
                              • d.healeyD
                                d.healey @Lindon
                                last edited by

                                @Lindon Yeah for tables there isn't much you can do to reduce the number of components. In the project I worked on we just had to use lots of tables. It might be possible to convert them to encoded strings and store them in json or something but I haven't looked into it.

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

                                1 Reply Last reply Reply Quote 0
                                • ustkU
                                  ustk @d.healey
                                  last edited by

                                  @d-healey said in Lindon's interface has gone mad!....optimising a massive UI:

                                  @ustk Yes you've convinced me :) feel free to modify the snippet... hint hint

                                  Here ya go!

                                  HiseSnippet 2204.3oc6Y0zbaabFFPxv0DNoIYlbnW5La3gLT0pz7CYIU4HaRJQ1vFSJNhTtoihFOKAVJtwfXY.VHKUWO0G6s1i8X5efNS+Gzdq2yef9Sn25Q22cwWKHgrk03jSgGD.12udd+X28cWMviYQ78YdZ5litXNQS+8LFdgKe5dSwTWst6qo+yMFhOirGyk6wb76v75E3voycHCIbesVWLG66Sr0z0W8WKDQuvMzj+9uOrE1A6ZQRGRS6wLpE4QzYTd5nCZ7ETGmNXaxH5LEt2nQWKl6dLGV..uUMpnMGa8T7oj9XAaqXn84X+oZ5+Bi5asIdRss1hPlrYke0VaMYysrv0HjMpuwFiswiqs81Vaeus1VS+lssobl2PNlS70zuQKl8ECmxdlanAdL0mN1gH9np1PvxgC2g4XKbQwnZ6Mk5XOHNt4qAZYPZTb0vn3GaziZSSFOMZ9gRBnTITCf5qjEdqlAdUUgWEE3kCjzUfzMBgzGYLzxiNmmRQfmaaz0kS7lfg7jJTB4Uak+pogH0Sb4kmgeJoiG7QhDk1rRk0QaWoxZ22D3xm4PJa4PvdkfALgjmOGcF1CYSbvW3i1Ecrr1p7oDd6ISHV7RE2WPpZw0V2rf3W9zq8FnWu3ZmjXvwb2vnHXuXnCBzzwYO1r4LW3a+RES35q9J6h.ZCkctqSdxlHXohIbjJDnpQD34kIRD8TAdp6XQk9kJPDcg.IlqrOTFDMIrzDriOIaH1JjzAi+ZPsOOxj6.YmHksSkxUdw8UDn+Q8dxv1iFBrWGzjG4TDVDhBmlKxUhPpo4cu6mfntTtI00g5RPSBbs3TlqbvRqY9byBSf3UI5tUtOh9YwpEd+N2YMHoonzxyC7mVJEoPsB3wkVC7jBlEnSPk3PkJaRZZPDXdL1I.XB8I6hJxF+0PVunPuJQlXdTLEnxWXFhvDuHJnXF8THWD66ARNFVaoDyMhXDAP3Ec6EYA7mnD25PbEfgLjn.kiEI2.OOfiP.WZsSJmVyHkQF..7zJfyYt8X1ANjRKKWrEDNmzkhRtlQOy2khH95borrb8bozp5LtjbB5UyiRRSgTMk0UmCEZoiIQx4oobwJOgemapLTnTOGLRt4yL7ku66vrvNHvPfClHQYpqM47CljJRXsbtHufJvOGs6tnDoPe5mlDH.wyeVeBCdD.JNG0MNcTBzpZDLQ7bb1DZW0bcl7ozufIgBOSc1lYAPnkJfUm5GGn.ggjN723o.BGZw5jWufQEZRAu6cQXaavuHHomNmH1swmScwBG1rvKDvdo.1xEhh3WlkayqhZwfmbsE.B6cX6liZiNneaTmi5u2ntGzGMn8gnAMOrYu1if21u8vQc62TPYojxhgMoGqlMh2ZctGUr8vCPc2+KQ6TDcGjjU3YQze.0ZTezHvL6fDTTlVki8TC1WSy8E8agF0sW6rlqP3V8GK47DQTrIm6QGGvIkxRRBAQd7QjI7EVFHrLtSDf8WxCVN8ktMDTuJ1HB8YJyRcHtmxmFukjnTUrYSB8iomnrQiXhJTwvC7f83teREj76eY0HDtHhxcJo.TBCIWzXWPXgpC0jb1jxFQKsA1wvfmnNGQYI9KgYk4EQSKNpabeA9noDORbz8s3mxRG8YbxAtgwZPSnEIMYRtzh.oCwKWxBH685DrjavrwDO0JTAiPesYaV13xaVVsWdqvVtTXj41EZT3f4D2KqCesn9zDMVGgJfUtrs52OtsZrKwQiZKZoNYcBMIl0z+FieyvC5e7yS5EbGDzZVRid6fpVeSn+r0QpbTsbVdpUay5KwzBpo1lacOfmSzzNp69XNNFw.3AGBVcjSEwJ88ImAGDK7fAEL1m3+TNaNDCS5BEdOz+9oQ9W3RTRG78LRl5TQ67zCr8fFWnd5Me3XiccG3QfpSwQJzdaUdUEk+xIuiUdMEk+s7qtxu0UIsqfarhpe4ia7LpMeppgmRnmNU4zv7Es9JmEWHKNfnBRt4k5lELhJPTyNan5iOnwbrX8SE0oh+WW.31YM6PGpMwKxrQUhpl82oX1+432NyNiYCV5lFRcNCmp0+z20vmSlOj96IpW3fevjITfKCCzLesYTaaGx.lOUrfRBeM9yMxwc93H2oiCC5bv8zQTHhKbpOvPcnpWVDsweLN0ZnWYEMs3zpg9OSOY8iv4aefQnG1xi8LeHzM9z363nvMAM8+DpixIyRG8e7p+xqxNZsHlk+jSzW4aWw34lHTQwJaharIrd.VTf6EPVOlR6ymic8E6p1zGTUvLAGxySlvh71N7xWbwB89KoSH6ExdFRoCCaM.9qX8oJIB0z1NeSbHwEO6RPOzz.geIzFRvdVSag8TIzAeFyCBahaRJAEofPkbFwBbbFf4Sio6mIHE4qcg3nMoEyChVYn2OXVXnUHVM4Pge+aEUHGJ5LEHbLLNBUo78VO9E34IRteD0m2zifSPbDuqm2iDoBswgrmM.16GpWupxkD3ZwBbsEX93PB8XdQw5EojVesHk3H1RTMegl1xWJ0GZH6BEyydGYhaRLhfXpq5ESIt7IHvyuPch+6rKN6pBwOxX.kaMMeLtRNXD1H96CLFcciuuQ38gkBvaXz4K+d5tEWUw92Nz9+DCY67RKeqv2qlw5Y51OMpfajP3PksAQZZWznCgXKN2khDMpW+6dX73pBHI7HQkuueGOx2ntQwmSWZTs8aziprP9+4giHvFBCuv0JSFa0qbHq5qOicHKPrCROLbVHw9SvJDCgUwsHPByEZfPz9p9JhFMC+th3aADFRbske7J3WDwphu0iHVMln1UJqT6JjU96+seLq7CaVo9aNq7x+0+9GyJuyxJ+PXiYXKO1ShO+MDgtkbDvuck++qJXzS7MpZ7gDSClPmqzmXYkUUKIXsqqf0utBtw0Uv6ccEbyqqfaccEb62rfh+CdMC3rYg67qo0aPaYO355scwPUtbZr1+G3cS9YJ
                                  

                                  Hise made me an F5 dude, browser just suffers...

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

                                    @Lindon For tables, shapes and consort, they can be saved as array values into the object.
                                    table data points, even paths as string...

                                    Hise made me an F5 dude, browser just suffers...

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

                                    41

                                    Online

                                    2.1k

                                    Users

                                    12.9k

                                    Topics

                                    112.0k

                                    Posts