HISE Logo Forum
    • Categories
    • Register
    • Login

    Knob is selected? use for function

    Scheduled Pinned Locked Moved Scripting
    12 Posts 4 Posters 654 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.
    • Dan KorneffD
      Dan Korneff
      last edited by

      Hello all,
      I'm trying to create a function that shows/hides panels when an item is selected. For example, When Knob1 is clicked, I'd like to show Panel1, and when Knob2 is clicked, I'd like to show Panel2.
      I can't seem to find a mouse callback that works with sliders? How would you guys do it?

      visibiblity.png

      Dan Korneff - Producer / Mixer / Audio Nerd

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

        Mouse callbacks are just for panels, but you want it when the knob is moved, so just a standard control callback is all you need. You should be able to get all the info you need from this thread - https://forum.hise.audio/topic/1443/single-button-that-switches-between-multiple-panels/16

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

        1 Reply Last reply Reply Quote 1
        • Dan KorneffD
          Dan Korneff
          last edited by

          @d-healey Thanks!
          Here's what I ended up with:

          HiseSnippet 980.3ocsVEsaaaCEkz1JK1ctXAne.B4IGf1.a0ztADTjrXGWXzkTi5th9VAiDcLQjHMjnypQP.5mx9T1GP+BJ5K8g899CxtjTxRxQwwZXUuXy68dt7vit5d4vPgKMJRDhv0e67oTD9GsFMmKmzcBgwQC5gvOz5DRjjFZaLcz7ojnHpGBiq9RkAb8ZH8y+bvQDeB2klZBgdmf4R+MV.SlZc3guh462m3QeKKHSz6c3.WAuqvWLC3SUq1noD2KHmSOknBqhEBuwwdLoHbjjHoQPLGI7lOZh3O3l3eGKhclOUsnCZDjHiYT2ILeugIm0HDBWaX5Iup4j+HqSXdrE1SUfeR6vNEQVM.WIOkpkiRctKJ0W36oRvcPObF5UyPusrF4FxlJS8n31CrFvgWNiIfrmkVlXQU9RUqtBHBtb2.xEz9gvhEHZsW61O11oc6c1uYilM.wORZeIIz9UbwYcregcBzyoxthfoBNrn01ZuaqvjGgyJQ3rsYWxhZHgS8u6Mx3docRazY0XR2KF2mwo1imwckLA2Vv0rWgMT32xMA3igb6OitSyFW0rQc1X6VIqsgmqL+ndLbZ2H3MbRRjgPf6uTHN4BYLwOBhQGx0lHofk0I6wPSiIIIWqOhq7UztQJq57zk36eF74Tq7Jvp0Im+W0oacRJPnLZ45oSqThuO0wYUpiSF0IijbpPReMu0NMtpQ8FW2vdYWiGWnu3j4SCKzspIX3p.1hOK3LZXhzmDHzYHeqmGrdsdbMZRl.E7Abl70SowqSaNo7YN0IdaiVbXyZJ8Ll0p9nUPXoltcuOT76LnKXk3vgPk5dfOLtG3HelGMDw.N9CV5xYjVahmk7mu7ae4.zZC1IG3+5ye9qGf98A8HRhpSbLc.JNkFJYJgF2idILVyzWttUOZzERwT38whZL3+2Ki+HBag2G1w4KFA9odGhxjCKSNZlz4WUzqSwlVlOuL4XK7R4fIoAlwnNf4M5it4FsqRPOmbzyBKWB+F2C0bxQMC9kn0eGSqKSJSwUQ2drGL7U3MymHyOQVc0iXGv2J4F8oFuwiXx4YuZRIFS2tvwzcJpTcMo6VVCYR2IEy2JEvWUs+2Y9FeomlVGOdL0UlR1ZV8e++0a3TBp7FwLIie9IDYHSUpb5rfQPkgKEXBGJfhTUMUTEcl0sUqUJyHJ2Su3F3I1YG0ZbryNINQAD2PwGbM8ATWqZSsEfSb8MJqCWsEVaun6gh2Avc89fqqRHdBv7hQ3TZDOszH1qzHdVoQ77Ri3mKMheYEHTWr9WmIEAlOK.CCOV23EiOlSfpJcEH5egVL2UO
          

          Dan Korneff - Producer / Mixer / Audio Nerd

          1 Reply Last reply Reply Quote 0
          • Dan KorneffD
            Dan Korneff
            last edited by

            I added a few elements, and all thumbs up over here
            visibiblity 2.png

            HiseSnippet 1192.3ocsWszSibDDtGfgr1a7pfTjxdbjUTjQhfrmPdHgPqCFbDYWXch2f1SYSyLswsXb2VyzlEGVj1ej4PtEkC4Ttj+AjpeLdd3wC1QJCGvcU0WWe0i9UuPtGIJhGhrp7poiIHqOzt+TlXXmgXJCcxQHqmXeJNRPBczhNb5XbTDwGYYs92IEXUYCj56ed1g3.LyijHBgNmS8HufNhJRj1q8yoAAcw9jWQGkx58ZehGm0gGvm.7Yc6lnwXuqvWRNCKMaMaj0lG6SE7v9BrfDA1bH2eZ+g72xz1eNMhdQ.QNnEpOLQZwnNCoA98hi0HDxZidIQ955H+isOk5SmIOIC7QJENIHRmCrVKKk1HCkZsHJ0kG3KmfEPOqTzaCM81xtuWHcrHQijaO19DFTbFfgzdZZosEs1eXa2gCVvD6NBeEoaHLXFhF60r4NNtMat890pVqJj7iDNWiCcdNieQKmCbhgdIQzgOZLmACZTWostDSVDtkhvst1KoQ0CyHAK1QZ047jRna4Xh8UBpCmHDb1hckQeNeok59.nl2au.eQYwkV8r7g7OJKfxHNClv7DTNyjY5ZF1vKF7Nv7GLgrcsp2VqZE5.mFppgzAmKUzXamCNPaiy6dWbXmScyEppELwNv2s5+I+zLY2HnkVFMg7fFhPfA6myD2LlL.GDkwFcLuaDAheA4FQ8cbpCKwX.RmVNzHmHR.wSP7qmFk5G2oGSfYbYX2btNdRtSkuKsmVxOy7zAGDbAr+SirkB4DGm5VJiWX00cYqttkWccWb00c9pakUL4UPsMe4urRqatR6xUPKrWZYKitkTFcmuL5tLFOqxwYmwEjWxZrc0aqVo5cUcxqZvfB0Y7P.IrP0xSBCKCXC1jQWPBi6PhMDNdH64OOd4N+wSm9RYHmcBiJd4XhYbxITRc5nNVaSzrfMsnjXLsTUnUfYIhl+.Pjo7BGEZaLGLUnNH7IlCB6GP8IgHJvwOvVs9EoxMlKTz9O+0e6YnkFraFvu+u+geewf0MNJvUrMaFjAt51PqBb27vMofzvqYfqVtoP+Ha8RuXvehcg6nhP+zIGgEX48JL4UHWOlDJnxNFqiHWCWRSeKiJ1GQhtRvGC4kYqqflrGL0eCTor1Gn8zYAw6OpMJ0bXmMLTKwLggdiH8brkUt4fJHizWJzEDuYWz82axOKM8byPOaKQN7a9.TyMC0z3yQq+xPqqiWuYsdAdnzNnaRJ+61NIEf991uk5KFJc7mBCGRnWNTlOsbJNLJsOKkSZlxIN+RhS9rLN4o4bh8C1MlxE+b533oskmNTRa57W5Et5M2eR.Vj893xGdXT.aRl4huxK2xhnhooWJtBWRuYgWRuUQ6QsjzcK6dTg2vh46ZEvWXc5+2707jmZ1GOX.j7SH6F1ce8+022rBT4G4SDT1kmhEgT4RqylLpOrRxiX5LhjcdqIa7ziaJGKyL8ILe0f6gOixVxwVFkshUhFg8B4uwSuKp7QUORIA3DS8dxJvCagwNy19Tx6QvK8dimmLQ74.yKFg6Ji3KVYD6sxH9xUFwWsxH95UFw2TBB4yp+1IB9H8xBPPuiUGTYYcLCCcUpNPz+Bw3mjAC
            

            I've added buttons to the control callback and used this logic to show a panel whether the button is 0 or 1

            if (Knob1.getValue() == value || Button1.getValue() == 0 || Button1.getValue() ==1)
            

            Is there a smarter way to do this? If I wanted 20 different elements to display a specific panel when selected, that line of code will get pretty long :alien_monster: :alien_monster:

            Dan Korneff - Producer / Mixer / Audio Nerd

            d.healeyD 1 Reply Last reply Reply Quote 0
            • Dan KorneffD
              Dan Korneff
              last edited by

              @d-healey Is there a thread or tutorial on how the Timer works?
              Once a panel is revealed, I want it to disappear after a set period of time.

              Dan Korneff - Producer / Mixer / Audio Nerd

              1 Reply Last reply Reply Quote 0
              • Dan KorneffD
                Dan Korneff
                last edited by

                Nevermind...... I'm tinkering and this works :)

                const var Panel1 = Content.getComponent("Panel1");
                const var Button1 = Content.getComponent("Button1");
                
                
                const var panelTimer = Engine.createTimerObject();
                
                inline function panelTimerFunction(component, value)
                {
                    if (Button1.getValue() == 1)
                        {
                            panelTimer.startTimer(2000);
                            Panel1.showControl(false);
                        }
                    else (Panel1.showControl(true));
                	
                	
                };
                
                Content.getComponent("Button1").setControlCallback(panelTimerFunction);
                

                Dan Korneff - Producer / Mixer / Audio Nerd

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

                  In the meantime I was making an example for you so I'll post it anyway :)

                  Panel's have a built in timer object so you don't need to declare a separate timer variable in this instance.

                  HiseSnippet 1313.3ocsW8laaTDEeVmrg5EbEUhCvH+ghsHswtzV.EEgINIEKZRspSS4CHUFu6X6QY2YVM6rI0DEAbS3nvgfC.GAtAk2Lytd2M1ApQh8KIu279yu2el487PovmljHjHm5mNOlhb9H2Qy4pY8mQXbzfCPN208XRhhJwVV6OOljjPCPNNa7LMCm5ahLe+0WuOIjv8oErPnyDLe5yYQLUA2g89NVX3Qj.5ornRR+3dC7E79hPQJfmMb6fhI9mSlROgnEqlKxYqCCXJgbjhnnIfL6KBlOZl3RtU9yXIrwgTMQWzHvPV1n9yXgACyi0DDxYygEQ9F1H+SbOlEvVvuHC7wlCvEZTNG3TqJj1rBj5daP5HQXf1.2B7bJAuMsv6dti7krXUwIZr8gtC3PwYBAR6kgkUVTsey0su.jfqdXD4b5QRfXgFsdZmNaieRmNs2sgWCuc1YDUgUyn3PxXZ3mlfUz2pvBNlwYpFd4FZJU0WDEK3.QqlOWKa2lseXBEnzZzbabyNMys4y.aRvR5DpjBMGXkv3hKYAfcvO.OjvA8a3Ak9DE9BhLiCdO7pcn83l2DywZ1.l0XkQBAKElRK.uUKMHOSePqJwbZrwDDeECTPMin.7EFhE99oR7kP4gVwGJnuUhYIXYJmy3SKadcOsrOILbLz71ZRJ2XzVswW0vCq+r+YmcdUB8F.GJK7EHmj.oMHcvHiCMYMeQJWgmHEQ3NZ5tcrV5lQVF8zb513OC2UGskc9Arj3Px7J.v5WFG7qoAvJ6ZT0Wxy4dEWIve8LJ23XSDAIRIk3OilrHhXSvqHJ1aOPf1VItpvt4gObkSCUoHr0DRXBs8tfq9VVPoj7xJoDwl5UKizi.Riz15a1mQoq8tdEMLiSUJngwOqZ2viwCYbJNupCseiUb3oAoJGa944vss4anuHKwDJ.6fkvyHPqOboTiHC3r7f5RTR4h35dcDL2Ko.2J2tq1BUJGpjo1T3RcJqtqqSIGTp11vq9hbMjErIac7jkvAdU5AGmxBU5X0TBZ3csIou5PMO0ZC1Lfu3l2Ro916VprbhPQeAbqz6Ju5dW6cySlLYUGkYnPc+xxml0Hcqp0hmFMlJyq6YxAuuWc.xVueCP7sojRBJ3CfW5dQLMitXDS2ULhAkkS0Cax.HHpxLpoQ1nFSuDhA13Nt19JjA6vH6s7xmv+pAGPTjby.VD7RLUpX5fw4.5EvB.1IX0cOflbNbGClkunLhb9.qSualS22bmx3UO27RH5sHGWm8.2MW+OaC+it60.USOjI4iRHWPGvGJ0cg5ofrjiEQfSHRPMmZnRd0qZnZZRyBUaCq1kYal7m+Xu4KH9kfdvrK0LMNBbPnYT1zYJM0e.mNdZ99K02Bg15cZMXJZTA26e+e8FbeTY1WjWtgUKbJg25+qklB716GJg2e+zdwDXzqpjwVDiSfR1H1OUZIrupH59YT4nq6hbdoh+xqo.KKIBRCIppaPoWUL6.3RQkUUzqivSXp4kWkbMVqpyJWqZk87umv8dtCYJ+YqFu0VAdgt++uwa1RpMbObxDpup.ra5dz2+eciz0.JuTjpfMcNlnjL8kwSRiFA8t9T.IbnWJQ2iTS+thktilVmYFQ4AFh2AeYG1US6jcX27CQQDeo3M91WizqAeGCG.Sbyu.nN7SQ.Z7hmgz3NB1M+M995DwC.juZMdzZqwmu1Z730Vimr1Z7z0ViuXs03K+GzP+Cg9lTkHxds.XL7Pyy+NNGx0KpZ5.Q+Mr.R9mA
                  
                  Content.makeFrontInterface(600, 500);
                  
                  //Set the label's text on init
                  Content.getComponent("Label1").set("text", "0");
                  
                  //Get a reference to the widget - Panel1
                  const var Panel1 = Content.getComponent("Panel1");
                  
                  //Set the panel's initial value on init
                  Panel1.setValue(0);
                  
                  //Set up the action that will occur while the panel's timer is running
                  Panel1.setTimerCallback(function() {
                       
                      //Use the panel's internal value as a variable to count from 0 to 10
                      Panel1.setValue(Panel1.getValue() + 1);
                      
                      //Display the panel's value in a label
                      Content.getComponent("Label1").set("text", Panel1.getValue());
                            
                      //When the counter reaches 10
                      if (Panel1.getValue() == 10)
                      {
                          Panel1.showControl(false); //Hide the panel
                          Panel1.stopTimer(); //Stop the timer        
                      }
                  });
                  
                  //Set up the button callback
                  inline function onbtnStartControl(component, value) { 
                      local rate = 500; //Timer rate in ms
                      
                      Content.getComponent("Label1").set("text", "0"); //Reset label's text
                      Panel1.showControl(true); //Display the panel
                      Panel1.setValue(0); //Reset the counter
                  	Panel1.startTimer(rate); //Start the panel's built in timer
                  };
                  
                  Content.getComponent("btnStart").setControlCallback(onbtnStartControl);
                  

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

                  LindonL 1 Reply Last reply Reply Quote 1
                  • d.healeyD
                    d.healey @Dan Korneff
                    last edited by

                    @dustbro said in Knob is selected? use for function:

                    Is there a smarter way to do this? If I wanted 20 different elements to display a specific panel when selected, that line of code will get pretty long

                    Yes. Use arrays and loops. I've demonstrated this in a few threads now so I think it's time I make a video about this.

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

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

                      @d-healey said in Knob is selected? use for function:

                      Panel's have a built in timer object so you don't need to declare a separate timer variable in this instance.

                      ..woah, I didnt know this. so if I have (say) 10 panels they can all have their own timer running at different rates?

                      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 Yeah but if it explodes let me know.

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

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

                          @d-healey lol

                          Wow this product just gets better and better...

                          HISE Development for hire.
                          www.channelrobot.com

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

                            @Lindon Yeah but if it explodes let me know.

                            You should be fine with up to 100 of them per plugin instance.

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

                            39

                            Online

                            1.8k

                            Users

                            12.0k

                            Topics

                            104.7k

                            Posts