HISE Logo Forum
    • Categories
    • Register
    • Login

    how can i use a Combobox to Switch panels

    Scheduled Pinned Locked Moved Presets / Scripts / Ideas
    14 Posts 3 Posters 1.0k 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.
    • L
      LinuxVst
      last edited by

      i am a Newbie!
      How can i use a Combobox to switch panels?
      ( i am Already using buttons)

      here is what i want to do
      i want to to link this Combobox to an Existing Combobox already switching samplemaps
      so everytime i switch Samplemap's it will also switch panels
      a new panel with images and other Controls needed for this specific samplemap

      i found this script written by David Healey using a Single Button to Switch Panels

      Content.makeFrontInterface(600, 500);

      const var panels = [];

      for (i = 1; i < 5; i++) {
      panels[i-1] = Content.getComponent("Panel"+i);
      panels[i-1].showControl(false);
      }

      var currentPanel = -1;

      inline function onButton1Control(component, value)
      {
      if (value == 1) {
      if (currentPanel > -1) panels[currentPanel].showControl(false); //Hide previous panel
      currentPanel = (currentPanel + 1) % panels.length; //Move to next index
      panels[currentPanel].showControl(true); //Show panel
      }
      };

      Content.getComponent("Button1").setControlCallback(onButton1Control);

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

        Nice name ;)

        A combo box returns a value, 1, 2, 3, 4, etc. You can use that value as the index in your panels array, just like I used the currentPanel variable to store an index. In your case you're using buttons already, so whatever index you're using just swap it for the value of the combo box.

        The only thing you'll need to watch out for is combo box values start at 1 not 0.

        Libre Wave - Freedom respecting instruments and effects
        My Patreon - HISE tutorials
        YouTube Channel - Public HISE tutorials

        1 Reply Last reply Reply Quote 0
        • L
          LinuxVst
          last edited by

          the Combobox values are not Numbers the are the actual samplemap name
          let's say Drums, Guitars, Pianos

          // Sample Maps Array //
          const var sampleMaps = ["Drums", "Guitars", "Pianos"];

          // Combo Box //
          const var cmbSampleMap = Content.getComponent("cmbSampleMap");
          cmbSampleMap.set("items", sampleMaps.join("\n"));

          inline function oncmbSampleMapControl(component, value)
          {
          Sampler1.asSampler().loadSampleMap(sampleMaps[value-1]);
          };

          Content.getComponent("cmbSampleMap").setControlCallback(oncmbSampleMapControl);

          };

          this is the Part i Need to Create:

          i need to create another Combobox

          // Panels Array //
          const var Panels = ["Drums-P", "Guitars-P", "Pianos-P"];

          // Combo Box //
          const var cmbPanel= Content.getComponent("cmbPanel");
          cmbPanel.set("items", Panels.join("\n"));

          inline function oncmbPanelControl(component, value)
          {
          // this is where i'm Stuck i do not know what to enter Here!
          };

          Content.getComponent("cmbPanel").setControlCallback(oncmbPanelControl);

          };

          cmbPanel will be linked to this cmbSamplemap
          with the names Drums-P, Guitars-P & Piano-P
          so when i use the cmbSamplemap combobox that is linked to the cmbPanel
          i want it to switch the panels at the same time it Switches the Samplemaps

          Thank You

          LindonL 1 Reply Last reply Reply Quote 0
          • L
            LinuxVst
            last edited by

            Finally i am not going to use buttons i would like to have only Comboboxes!

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

              @LinuxVst said in how can i use a Combobox to Switch panels:

              the Combobox values are not Numbers the are the actual samplemap name
              let's say Drums, Guitars, Pianos

              yes the displayed values are these text items, but the returned value in the combobox callback is a number - the position the end user selected (starting at 1 not zero)

              inline function oncmbPanelControl(component, value)
              {
              // this is where i'm Stuck i do not know what to enter Here!
              // start by putting this:
                  Console.print(value);
              //.... and it should give you a clue...
              };
              
              Content.getComponent("cmbPanel").setControlCallback(oncmbPanelControl);
              

              HISE Development for hire.
              www.channelrobot.com

              1 Reply Last reply Reply Quote 0
              • L
                LinuxVst
                last edited by

                i Do not Get it yet!
                i am able to get the values of the Combo box

                with Console.print(value); it gives me 1-2-3-4

                but i do not know the inline function to get it to switch the panels
                i tried with Panels.showControl(true) but it did not work it displays Unknown Function?

                Content.makeFrontInterface(600, 500);
                
                const var Panel1 = Content.getComponent("Panel1");
                const var Panel2 = Content.getComponent("Panel2");
                const var Panel3 = Content.getComponent("Panel3");
                const var Panel4 = Content.getComponent("Panel4");
                
                // Panels Array //
                const var Panels = ["Panel1", "Panel2", "Panel3", "Panel4"];
                
                // Combo Box //
                const var cmbPanel= Content.getComponent("cmbPanel");
                cmbPanel.set("items", Panels.join("\n"));
                
                inline function oncmbPanelControl(component, value)
                {
                Panels.showControl(true);
                };
                
                Content.getComponent("cmbPanel").setControlCallback(oncmbPanelControl);
                
                };
                
                
                HiseSnippet 1040.3ocsVE0ahaDDdMItJ3qHkSppuUIKdhHkRVrMDPsU0GPREpM4PkznJ0VccwdIrM16hrWxEzo6+78OncWu1XSfPthRfGfYm4a1uc1YlcFFw7vwwrHfV4qVLCCz9R8QKn7o8lhHTvf9.suVuGKbLyrK6dygHJNv7JbLGzcwLTbL1Gnos2OIsUq79fjOe5G6hBPTOb9R.v0LhG9WHgDd9pCc+YRPv4He7UjvBV63NviQ6wBXyE7ZOcHXFx6VzM3KQRyJoCz9hy7IbVzHNhiiAZ62k4uXzT16oJ6ulDSFGfkBM.iDNRs74r.eIikqB5MkD3OL67GCDdYXdzXOUz3qzuf3SVtddT4vDEl4HJFOzJsM50nH8fe9zSq.81WQuWqOxKhLimqQxsWoOfxwQSPhqfhzRYKnjwdhqTgETd8Pzs3yiDBKQTqEDdrYSH7nuqhQECwEQL27NTj5tug4OXlg8FLWjYLiQEB0ppTWUh5AXr1NFqMgwd6Xr2DFmsiwop5DcxIJyiMeSTDZg4ImrlmhEd5OxNQGalwyr+Yu7eNU+qLelWjrpC8BGmX5iwsL8pSTpP8XrPEgiCiE6khS0+GFgVq5eRqdj5fPnADJ1bxbpGmvnlLZFb4NEwBp4ksMGKnRvb7QUL9PECIQhYA35yhHBFnzH73GS75SwRI0R8eOTPvXQkYs01YEAUNT9s.GujwwukV6HiOXT13iFlOT0jIaTWpiCvQaTsrARz1.ViNObLNJKPjYnnRZ0RU8GuTsXmDOUTpfgL5.Jg+1YX5iU.CRCsxR4TVILkmTHeXZgbRVjHIBPDUrF5YgUPBqy6PdnK32FzGwQY9R3VwVMCGwIxSgVe7ch9splDk06iiukylINcKuRAZGn14JYsPR1G41dftJyGbe9FRbWjKz288De9zkK7oX2oXxMSKzZO1Ul7l0B+U5ssrfMZCcZCxW2ZUEfBbq7SvMqmUtA6X2pS6lMWiav1M5.sfmBtqXC6+OD094knm1pUSGX6MPTqlMsrs1ch577daC6.sa0Ft9scCmN1MgNOIQepBhBrsaA15d8CXK3uWiseuaHR.WWSJyw2ySFoHoYKP6aRS9MT4YperMRiQf0eBVLH.yed.hu5zAxQhRUH5CsxyvxmZowD9hhiL8hLxvmKces9PB2a5l4aoMvWQamWZ9lN.VE8ylLA6wyI695m+6u7SaA9U1bNgdyEHdDQlsb47vQhzXOrfIT46wxLnRxt5JYnTVFYFgo9IB+q3SpxFRYsTkMxTBBQdQr24odKPNh2AIqH3DMYR2x5WHkMaj0+WWGVGBBESd9NOOYn3aEbeyXr1AL16.Fmc.Syc.Sqc.yo6.l1aEibn+2LmyBUkIhEFdVx6vZZmQQhrrjLRv+UNxGRJ```
                1 Reply Last reply Reply Quote 0
                • d.healeyD
                  d.healey
                  last edited by

                  Panels is an array. You need to provide an index to access the items in the array. For example Panels[0].showControl()

                  You can use the value you get from the combo box as the array index. Remember the combo box starts from 1 and the array starts from 0 so you will need to subtract 1 from the combo box value.

                  Libre Wave - Freedom respecting instruments and effects
                  My Patreon - HISE tutorials
                  YouTube Channel - Public HISE tutorials

                  1 Reply Last reply Reply Quote 0
                  • L
                    LinuxVst
                    last edited by

                    Hi David
                    thank You for The Help!
                    i do not Get it yet i am Really a Newbie!
                    Still Getting Unknown Function showControl
                    how do i create an index for the array?

                    Content.makeFrontInterface(600, 500);
                    
                    const var Panel1 = Content.getComponent("Panel1");
                    const var Panel2 = Content.getComponent("Panel2");
                    const var Panel3 = Content.getComponent("Panel3");
                    const var Panel4 = Content.getComponent("Panel4");
                    
                    // Panels Array //
                    const var Panels = ["Panel1", "Panel2", "Panel3", "Panel4"];
                    
                    // Combo Box //
                    const var cmbPanel= Content.getComponent("cmbPanel");
                    cmbPanel.set("items", Panels.join("\n"));
                    
                    inline function oncmbPanelControl(component, value)
                    {
                     Panels[0].showControl(true);
                    };
                    
                    Content.getComponent("cmbPanel").setControlCallback(oncmbPanelControl);
                    
                    };
                    
                    1 Reply Last reply Reply Quote 0
                    • d.healeyD
                      d.healey
                      last edited by

                      I didn't notice before but your Panels array only contains strings it doesn't contain references to the panels. Strings don't have a showControl method.

                      I think you'll find the arrays section of this video helpful:
                      https://www.youtube.com/watch?v=8JO4m-OloqA&t=412s

                      Libre Wave - Freedom respecting instruments and effects
                      My Patreon - HISE tutorials
                      YouTube Channel - Public HISE tutorials

                      1 Reply Last reply Reply Quote 0
                      • L
                        LinuxVst
                        last edited by

                        Thank You David but i already Looked at this Video
                        i even tried Changing strings to numbers 1-2-3-4
                        i have No Problems Getting the Values with Console.print(value)
                        i still get an error with showControl method
                        is it possible to Change Panels with a combobox?

                        HiseSnippet 1036.3ocsV01aZbDDdOauUlKEoDop94S7IPhh26EvfRqJAvtB0ZGTw0pRoVoK2sX1561Ec2hiQQ4+b9Gzt68hui.FmhrgOMu7L6yM6LyNiB4tjnHdHPqzEKmS.ZeKb7RlXV+YXJCLb.P66g84AS3F832YLByH9FWPhDfdKmiihHd.Ms8+EkuZkN.D+6y+bOrOl4RxUA.WxotjeiFPE4ZG08Wo99mh8HWPCJ3sS2gtbVetOegjW6CQf4X2avWSNGqbaOHP6aNwiJ3giEXAIBncPOt2xwy3efk3+kzH5DehRvDLVFnD0mx88TLVoEzeF02aT12eDPFkQ4Yi8SxFeG7LpG8d84YkWFavHGQw7g1daidlEoG5qmdZEn2AIz6Uvwtgz4hbKJt8B3PlfDNEKuBJRqDeA6UZe4UpzClnQ.9FxogRg6QTsEBU2nIBU60k0KqKuHhDF2hCMvF+jw6Lu50E0EWOXJMjEuqIBY0xbNSJTsRh4J0VGi01wXsIL1aGi8lv3rcLNUR9JO5nD2iLdSXHdowQGsVjhh+7qaXU2vttgyUY3xaNVEjavjXbOz4mYOg0oBMhHRSTAIHpR8zysw+vorpU9KVkZIjkx7oLhwzELWAkyL3rL3pSJj6W0M6XpKoh+BRsx5errdZ7dG5pFQxZwLmEgRGjA9SwA+wHqhgoH6i88mHaLqtFAR3YR.U+KP0y4BxaYUqo+Q8R5eR23KMMc5FskFXeR3FMqleDtMfUYKBlPByxGYNJajVsSE9vcpEGj3ljkJ3HmMjQEucNg8P8ufzTqpSNkURWEw8wuLsONtXRVKAnxFVcXVZEDy5hSXA+wvAXANKVxvJOp4jPAU8UnMfbqbbaxLhRvAjnaD74xut6uRAZGlbxkylfDeNpi8PXRaK3t7Cj1cYtvftef5IlcuhOG0cFgd8rBS1i5ppgylf+BXaKKjYajSaPtdqUM.JvsROB2rdR4FpicqNsa1bMtgZa1AYgNFbaw40+eHp8SKQOtUqlNn1afnVMaZYas6D04o81F0AY2pMZ8aaSmN1MQNOJQerFhBrsWA118xufsf+dM19icCvR3PMkrfbmHdih3YtplEScKcacG41Iq8Zq7Met2BerX0EATa+jZPNyYkWbUupxhnhkE6ceV1N3qktuBNhJbmsY9t2F3qbDyyMeS20pL7joSIthbxd.7z+74ewJvuyWHnrqOCKBopJiyWDLVVx5RjLgodxTUsrmZBdhLRIqxLiILuXg+U9K0noRVK0nYlQP.1Mj+d2j49ps4NLVijSr3kZKAOSIaXlMqGBQMPf.4Rlu20UkJ9AI22LFqc.i8NfwYGvzbGvzZGvb7Nfo8Vwn1u+MKD7fj1DohQmD+lql1ILrrJKthD7eIoCf2.```could you try it to see what is Wrong
                        1 Reply Last reply Reply Quote 0
                        • d.healeyD
                          d.healey
                          last edited by d.healey

                          You need to put the references to the panels into the array. At the moment you are just putting the names of the panels in the array.

                          So instead of this

                          const var Panel1 = Content.getComponent("Panel1");
                          const var Panel2 = Content.getComponent("Panel2");
                          const var Panel3 = Content.getComponent("Panel3");
                          const var Panel4 = Content.getComponent("Panel4");
                          

                          You need this

                          const var Panels = [];
                          Panels[0] = Content.getComponent("Panel1");
                          Panels[1] = Content.getComponent("Panel2");
                          etc.
                          

                          Libre Wave - Freedom respecting instruments and effects
                          My Patreon - HISE tutorials
                          YouTube Channel - Public HISE tutorials

                          1 Reply Last reply Reply Quote 0
                          • L
                            LinuxVst
                            last edited by

                            hi David i Tried and i Can't Get it to Work

                            Please Check my Snippet

                            HiseSnippet 1088.3ocsWs0aaaCElxIbnVcFqEXXOK3mb.xhojuDGzMLmqCFaIwXNKX.cEczxzwrQhTPhtMFE4m49ez+AaGpKVJwNWpQhySmq766vyg5j9gRWVTjLDYT9rYALjw2hGLSnlr+DJWf5c.x3Gv6K8GJs1SdkUepf4YcFKRg1aV.MJhMBYXr1up80n75n3ee4W1i5QEtrbUHz4RtK6249bUt19c+Mtm2QzQry39E7tY2dtRw9RO4T.WqgIn.p6kzKXmP0tUBiL9lCGwUxvAJphEgLVeO4nYClH+jHw+y4Q7gdLsfMZ.jnD0GI8FoQrVKZ+IbuQ8y3eDBxR+7pwZIUiuGeLeDet97pxqhMXkGQw5gQo6Cd1EgG4wCOiBva8D38Z7.2PdfJ2hFauD2SnXgiovUPQXk3Kpz+VBtRAODps7oWxNJDDlGQs1DxlVsHjMdSEyj+pWO4hOxZ2vP5Lq50qXBWPQJqORCyL8yVu8cwQjH+Vx6.UYGyELEzDEHEfPspwdXWci2j4q8C3qSUMXRc14AbtQgD23A7sY0LVBbLuM+lDz0eXry2UlxrGmq50yD2JhAF4JleT0MSqRa8AIWTq5eKptQxAyEdbAyZ7TgqhKEVRQV35yJT5UyM6f1D.i2T1FUL+bESq4U4shf9pLmUgfCPhuNN4ODb0HLMx8oddCggrZK.fDbd87lgBP8Dohcpn1Fle1rr40lV21z3wK0VZh8XgK0r9sfv6KvZho9CYgY0iLGgghaN0gu6othOJ3lTkJ3nTzSvUmFvD20rHJszpmJSQE3pJdl7UoyjwsSP2DhCCel3rxJJF04O18ptn+r2ATEMKWPZgiJfEp3ZVXb.6ivSmIy6kwGvhtTIC.1M+JExdxIWI60f3yQeru.mLqgtJ+.4cmkKbP2OwGolLWwWh5NgwuXRgWoi5p6gydM9k3NNND6NjlcP45ctog.YvzfiYho8zc+EfAzkAMqo8ZfguCuqmmUtBzWAobdRIEYmFs2oSqVKPJRG6cHNjsWfTkSgg4SJqZ7zxpsa2tUSRmkvJmVsbZ3bWrpwSKqZ9z1.R1gzncGxhMf1M2oQKRy6hUM+5XU4G2.cApsWAp087aQMz+r.09ot9THbrgVVwtREucCOAz8vmN7CLWkE4pFTalCvayBZfgs12VSyEzrMnA1zZgMGf8Wjil5QU2boF8lboFf2buw1C5MDDQb0rha58rroyiEtuF2mqbmrb7VZI3Edh84Fuo6MVAe33wvsPNXWGeze87ujH5OjSUbwEGSUgbcm0IS8G.yGtL.IB8JC5tsR5ufkHSzx5Jy.lXTrv+A+RMZqkMRMZmYD4ScCku2M46d5MSeQrF.Sh3EzKiOVKaYm8sNLlrEA4CKL+dWWco3GAru7XbVgXZrBwzbEho0JDS6UHlsWgX5buwn+eU1cpR5mLl.J5eX7NGFFGJnPWVbGI5+A.CNB6I```
                            1 Reply Last reply Reply Quote 0
                            • d.healeyD
                              d.healey
                              last edited by

                              HiseSnippet 1094.3ocsWs0SabDEdVCaEdSsZhTUeqRi3IiRBL65KXDAUy0JqVHV0TTkhPICqGiGwtyrZ2wDrh3Oa+Ej+AsmYuvtDaiIVvxSmqy22YNmwG5FJcYQQxPjQ4SGGvPF+nYuwB0v8GR4BTmCPF+h49R+Kj38j2f6RELO7orHEZuwAznHVejgwR+t1WixKih+95usG0iJbY4pPnyjbW1ex84pbsca+GbOuin8Ymx8K3c81cbkh8kdxQ.tVxjfBntWQujcBU6VISjwObXetRF1SQUrHjwx6I6Ot2P4mEI9eFOhegGSKXi5AIJQ8QRu9ZDq0h1eH2qe2L9GgfrzMuZrTR03mMOl2mem97pxKiMfyinX8vnzCAO6hvi73gmQA3sbB7dkYO2PdfJ2hFauvriPwBGPgqfhvJwWTo+sDbkBdHTq6SuhcTHHbWDUaRHuA2fPVa6JVI+swFIW7Q3cCCoiwarQEK3BJRgulFlYZG7GNONhD4OPNGTkcLWxTPSTfT.BUWM1C6UWa6LesmiuNqpASpyNyw4ZERbs43a8UyXIvw7176SPW+KhcdVYJydZt3BOtfgGLR3p3RAVJxbPGdnzqpaVruAxu2H1ZUr9REKL7MPFhqxALS1FywuKs1ttGSboZHn50udsDG0eobje95QPqUVxiyH9sXa7N6f4ZHcaLrlG1WORaHNG6S87t.l3pNAzSX3s20YTfjmHUr2Kptl0WrJacqE9aMMXvTsklXOV3TMqeXH7gBrpXj+ErvrJYlivDx8GAMm8HXwWHbSpREbTJ5H3p2GvDyZvDkVZ0inonBbUEOf9xzAz3dKn0BwgIQKyrxJJF04u7sRaze24.phlkKHsvQEvBUbMKLNfcM7NZxveYyCXQWojA.6t6JEl9SN4JYOMDeN5icEyjAOzM4GHu83bgCZ+Yde0v6T70n1CY7KGV3I6n1bEyO6o4WX1xwgX2hTuEJWuy8MDHCFEbLSLpC3QTAX.cYPaaZuFX3mL20yCmq35rqHikPeG7y4Ikejsp0bqVMZLA+Hsr2h3P1bB9UNEFVKJAslCAq8zRvMa1rQcRqoPPmFMbp4LKBVa9D764Zq9SaaIYKRslsHS1VZWeqZMH0mEqpuvWakebS7EX4dEXY6y9FVh9zDr7cs8oP3lFZYE6FU7tP7D7+qoiUVoceo2Qo0Vzj6N.avH6Oxipt+ZM5c4RM.Ozdu8Gz6HHh3pwE206YYWmGKbekYWtxc3zwaoofW3c0ma7lt4XEyCGLf4pxA6xlG8OO+qIh9K4HEWb4wTUHW2sbxH+dP6uKCPhPuwftCpj9msRjIZYckoGSzOV3+fuTi1ZYiTi1YFQ9T2P4GcS9wN8toqDqAvjHdE8xlGqkw1Y+.moIYcBxGVY9itt5RwaArO8XbVfXps.wTeAhowBDSyEHlMWfXZ8fwn+uU1cjR5mLl.J5dX7hFFFGJnPWVbGI5+ADeA.+C
                              

                              Libre Wave - Freedom respecting instruments and effects
                              My Patreon - HISE tutorials
                              YouTube Channel - Public HISE tutorials

                              1 Reply Last reply Reply Quote 0
                              • L
                                LinuxVst
                                last edited by

                                Thank You So Much David i will learn from this Snippet

                                Mike

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

                                14

                                Online

                                1.7k

                                Users

                                11.9k

                                Topics

                                103.4k

                                Posts