HISE Logo Forum
    • Categories
    • Register
    • Login

    having trouble triggering each button

    Scheduled Pinned Locked Moved Scripting
    5 Posts 2 Posters 105 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.
    • D
      DAEN
      last edited by

      In the initial version, I used radioGroup to activate buttons and prevent duplicate execution. However, after receiving feedback from colleagues who used it, they mentioned experiencing slight inconvenience.

      I reset the radioGroup to 0 and rewrote the code to allow each button to be triggered independently. The console log indicates that there are no issues with compilation, but the buttons are still being triggered in a duplicated manner.

      Should I use something other than the buttons created with "New Button"?

      It’s really simple, but I didn’t realize that implementing this part would be so complicated and difficult. The more I study, the harder it gets.

      The behavior I want is as follows

      Initial state: MAIN activated, the rest deactivated.

      Press button1 -> button1 activated / MAIN and the rest deactivated.
      Press button1 again -> button1 deactivated / MAIN activated, the rest deactivated (I wanted the default state to have MAIN activated).

      Press button2 -> button2 activated / MAIN and the rest deactivated.
      Press button2 again -> button2 deactivated / MAIN activated, the rest deactivated..

      const buttonNames = [
          "MAIN", "BUTTON1", "BUTTON2"
      ];
      
      // Array to store button objects
      const buttons = {};
      
      // Initialize and Debug the Button
      for (buttonName in buttonNames) {
          buttons[buttonName] = Content.getComponent(buttonName);
          Console.print("Mapping button: " + buttonName + " -> " + buttons[buttonName]);
          if (buttons[buttonName] == undefined) {
              Console.print("ERROR: Button " + buttonName + " not found!");
          }
      }
      
      // Status Tracking Variables
      reg currentActiveButton = "MAIN";
      
      // Function that activates only the specified button after deactivation of all buttons
      
      inline function setActiveButton(activeButtonName) {
          Console.print("Setting active button: " + activeButtonName);
          for (btn in buttonNames) {
              Console.print("Deactivating: " + btn);
              buttons[btn].setValue(0);
              buttons[btn].changed(); // UI Force updates
          }
          
          Console.print("Activating: " + activeButtonName);
          buttons[activeButtonName].setValue(1);
          buttons[activeButtonName].changed();
          
          currentActiveButton = activeButtonName;
      }
      
      // Define callback function by button
      inline function onButtonControl(component, value) {
          Console.print("Button clicked: " + component.getId() + ", Value: " + value);
          if (!value) return; // Ignore when the button is off (only works when clicked)
      
          local buttonName = component.getId(); // Get the id of the button
          Console.print("Current active: " + currentActiveButton + ", Clicked: " + buttonName);
      
          if (buttonName == "MAIN") {
              Console.print("BMAIN clicked, no action");
              return;
          }
      
          if (buttonName == currentActiveButton) {
              Console.print("Deactivating " + buttonName + ", activating MAIN");
              setActiveButton("MAIN");
          } else {
              Console.print("Activating " + buttonName);
              setActiveButton(buttonName);
          }
      }
      
      // Connect callback to all buttons
      for (buttonName in buttonNames) {
          buttons[buttonName].setControlCallback(onButtonControl);
          Console.print("Callback set for: " + buttonName);
      }
      
      // Initial Status Settings (MAIN Activation)
      setActiveButton("MAIN");
      
      
      d.healeyD 1 Reply Last reply Reply Quote 0
      • d.healeyD
        d.healey @DAEN
        last edited by

        @DAEN Can you put this into a snippet?

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

        D 1 Reply Last reply Reply Quote 0
        • D
          DAEN @d.healey
          last edited by

          @d-healey

          HiseSnippet 3238.3oc6bs8aaacFmxNTIVMoqWA1irtunr43JIamj1hTKecUawWlkSP2J5boIORh0TjpjTNVIH.snt.AscncawHwXIc9g00hgN.2ViszhNfBrW6.FP+KXOM.KYf1+B59NWnHoHorLsSZVWT.BDOmy2462461424PkLqgtDxzT2fKVh4qUAwE6n74qoYUZrRhJZb4FG2vXkPRKIbNgm8hbiVqhnoIRlKVrt+I3QDqmCwQ970COpnpnlDxoINtyqqHgNqRYEKmVmM6OSQUcRQYz7JkcM5AylSRWaLcU8p.Z5lOEWEQokDKhlVDOrt34dVQyRbw9Q7YxTP5zoRc5AFXnThhCHKJNXZz.OIpvIKHMTpmLk7hCkB9yI4hEeBYEKci7VhVHStXGZTc4Z4KoeAMpBNuhoxhpH7Co4xCZl17j5px3kHtUtwJonJOqsYxjClkYcLZcSMZOB+TJxJMa2w38.jNDbjvsALVWdgW2dfWZ2vKkK3E.jh4BRGhBoGjOujgREKmdv3493yoYgLJHB9I2PgNVttVrG9m3IDNWtikXLcXfZV8WVbIzjFvCMEL4PmZn9DN0oSc7mNQBvkYZIrXUKKcMrixT3LBOeBA3SuiN0H4lt29fubt4meloS670L8l3E.YAMU+iWcm23yE1dya13i2p9684BM13UZ7tu2NqsgP8M2rw01xiBvS9ktrGIar0U19Vaty5WEF+aKT+pWEZe6O80STP2PHoCrDTzbCxiKbIBFYS6y6z0K.pvdoWDYMld4J5ZvCtlKXYikEFkotJp+JFJP28NkXkJJZEYS4SIzqvO1kFgG5U3DOiqV8nT1TpTvFys.oyHTUSFUPQCIaC8.fvDyM2Ly8TBiRjLH.noaITPGlpGqWlFubhKSrlMdsWcmW6FBM9qWswFupP8O4UZbkqmv.UTPppgAr7GQxRYYDalOisu8oE.Q245q13c+PgcV+FMV8i.GQ824F1Nmjfqo9mbqs272BnBKwwott+7GT+2sg8fp+oq1TVgc98qJz38ekFarlyzT+8eKmYem0td82.F2Ze.FgJZpfMQnPUM.e.xLQdPZRQWOPbcLiWKFt7HKKruiNbOtPey.0tQCurzBItJ.cLNhLUhXEwhNrzXylmPQKsWneXcbdQ0pnjoBaDRkD0JhjSdbhO3b4DZbsWu9udyF2bqcdiaA4Sq0Xiav7v3+NnU8HsfmPVp1ps0tcgxz65PcfqCbBNzpUYeZVDJKV3Sf3i+9Mpu4GwBAfBFq03l9iDz0nSANW1PWMojchbeBKiwbHQBLXHopHsDRlZWZJJtfPNXMfyk5SfrzoifNiN4vOFSEFHqpFZDODE9f6QX6O6ya79WQn9ZuENPt9GtUi27FBI24U2p9e5uH.euw0dGbDe82d8Fu6uARXvSpptjnp6r4y3GUdTy0ETjwkS2dSHW5VMt9VAsXGi5.Xlb1hM.mBY4NlaShmhgsT5hhul0HZSJAY.1159fpSDjnq0qqfdlIjEJGhpB.zcXlX.UI6SvU2r0fCdZsBSudFwkEPplnvU8Hgo31nAeCxtlsmxnPTichQiqs41e7lQeGPbdMKsYLQU0EAVXIaIcJ3s.sGMdIfqPFPrBa2Fxl1M2zY0+HjDKjjFNzrR+wSDts9XvrD9GRutpDLstEZFsjGOwkRzCf.gV6pPg.6isVUQFA1Ml8pQ6DLoV0xKhLrK3XOPfglWZe7gS6yMqTIJqDWCTWKmlh0LUPZgwUkiQkA914xMtnkHlqHqMXbUPFVJXHDabzx.ScJywd3GGYtjkdEXVax+AHTZQ589Y7Jo9DNEf93g4INFtUZRlO6uLaMGl8kxVwFS4jImvfLCBS9boAN9FPjAvrD2Sbdx7nXgJaeNfdh+POzCQlkEK5zF73KhayYjYvM+sqx8s3lufhrUIG8mKaIjRwRtNCxyj0Bshkm4iHnITlEMIj+iIRSF7Fqu92Lro3xnbZyZffHRLa4xhRF5LuLlo8z5BS4toBJpkMsf0Xtxv4W3hcV9KM6by7SmXr4WXxYN63SL2kKXHpszhHQqSXf4icByKnXIU5D3S77Dzuu.siJphlVJRKTz.gz5uhVQNHpJOdtMcVN+vrbcjipGdFU7PcUZcpq593mZlomQXJcYz87W2t8WYv9K9XJfn0veo2XbbcreJetwm3d9on5m7evZ3H85xUUEs7dNe7sgv5.1EvygqwmbVyTwpl6aK4.6v+cJDeP9Ywq+fwXWAfQXuhaGXjckIGiehBEPRVN.7P7S9b2Atej3T8mfkx.5jdKWtxfbChoqVdREUHaBuScLHwiCZYbESH.p1nUgkfSGrKQI1U3cXCTw.A4in40mEFeRSwxUTQyAKm9DVDH0uTdkKh7SgfkaOJdDIwGcRCnUFElFw6XCX516+lSuJl05ThPFBtVDXCxC43RnwXnCaC5BS3f9bJ7y3Pn7HMYxCeK7g0Y5lFLnyz1c5hqxzHqKnarDwyw9Nvxf5lLIF4EJrB.ev1iiiABHo5G9C2Hpp5W.WYUgEgC9ORaypqVqRIcMEIbSzQXC8QJCEDrrw+yJZNunhJNkHeUSfZk7LZ4gAStXSbH4z3JowNLsXVsYEwEDePdL4LHNFYfOoayKN0EV8DRQtPSOcicJyZW2FSHinG6BoTSI.6xjML5hG7S39oFHBfhi03g4oZeW.merXKXTT5Qnxlduq0lRFE01CS3T6c85HZmp3tbo3D7k0kCvN+HtzbyQ3W4tDOJZ+H7qTPTFY3U2O.Q2Pkf9Y8Fjwl00toUWmK.Zg8DrsPWX0+CvY9tBTIWBhctCWKCNNOg1AaLGg+rfsQz.R6IaDOunQQjEQItafcBEMDoFmo2GY1BJwlxJxKTDriCvMqaFOGlmpPt1NqbtVD38GreBVKSonwfryNgSItRKs80CSy3nMORUK8xPQVxdoiiJHVU0hACNOAsTmvo2ytOGI+dh+CJ+oHiHNvAuK2A5VSbdLuwZwhcT9blmG2Kv201tAlVOknAlCJVgWzh1cPkno8repUlI50JyDw8FHfdn89xsoj6m06.Qe8NPDqNSP8fQd8NXGq1tCX8N3dX81k206fQb8VLf3p6CzqAp+hgsqewNJfpKOI3c6JA+v9Sv+Eeg+Dbn.hEpBlgsyYN+zgyuD5BdNI5WTbyGMKsbG4MZ6M42md3ZOPBnRS12NaGAjW7gG+qFl9RZyWVW2pDP3ly2z6Adtd44b29MPGkeNj867wugIXf0RESN+DGO0dOnsojQijLN9an8RHqsH2kFwtGbE2K1ceD6tu4AbPRjfkCDgsz44yetQi39LTRnYhL80L+OG8UtnPtMNofgWZsrj0ai7V6N7Cdv.zdnlGSh6RK40Qz0uWQt86FzlKWXAzK2Z1dA58g1OqW+wNGh+j69cqfuENUzJ1uUR6KYs4WgujSSFsRy6GzSnVbWVy3cVhiRVeVtruV4+IyiNoA5kqhzjpEhCb5rdR03BS+CP97UC2h9+hu7Keb+5m6w+l+EQ+cy+ycbXa7q9a8+Y+i+yvACjudXt1WzHS.QRYZCegvBY8lJEuSqNcvk1j8eewUGNBX3AZMctYUSuaIb6x.Dhx6geBMwEUg3GehDtm9.k+A6tqcQeHBmPNN+nijOu+art68CihAhLihA9+CFEzifj9tCJEjHniwW.JYt.4ZKFX2tvC+QKAcw.mL0IxLztuygm7ffOh2hh32rTDdOHTAiRn7g4UMRuPKJ8Q4eIYyJ8+RpJZKAd8KZnnhp4Y56I9aVbcxKIOH3PmxCxMN6ZOWRKqdj13jPBny1yL7HSt1TJm7db6vRosgkC1HmIJ9s0WtXa7aYty52Tx52u8GhjeKNe5gRcm2y0tMgCkepb0xkq0xoQSvCvtT+kqp1h+hXS85uZdeRrIpMmsYeWV86pM8COtun+WaambOXou2gBu2MecPcyWtYTPekt3WKXDnklnovGPTSSvKijz8yM8g4Mn+XX5ur4BzgDHbZJ8dIaIzr06mGzFgKkkOD417.k8rTB.OsHeTdYOGkXgi5wF7HcTt2d2uv+vJ36WstkZOU1ZeWuOrx6dpRca4.dwozyIue8ndIwdEOJ9KOuf+N2g4Qru+6w5nj+D7.OscqTDcHAVJpozQuTz28u6iuKv1cyK6nLAdNEAOi0Ryee3cZNytvtA+SHsytTil+lzB92+ier57u4f63X04GfUHfMBtlQ00WprH4G5Zj92mycjeVtjeT9KvtON7h6HjV.amF6h3H+F8ERysbq1ZXqWkEjj7NU9DLSTEbfnJ3fQUvghpfmLpBdpnJ3o2cAw+WS.auMbrNj.M6DjfvXwruoZ7Y++uhw5To.
          

          I’d like to explain it that way, but since it’s written quite extensively, I tried creating it separately on my own.

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

            @DAEN said in having trouble triggering each button:

            I tried creating it separately on my own.

            That is the best way to do it :)

            Your buttons are connected to modules via processor/parameter ID, that means the control callback cannot be used. It's one or the other.

            Anyway here's a way to get the behaviour you described:

            HiseSnippet 2596.3oc6a07baabEeIkAkIiShsSxL8HbxLYnaro4GRVxiaqn0WMr0Rh0T1SZaRYf.VRtQ.KX.VJI5Dep4PmoG5Yep4OgdqS6IOSulLSmI+EzoG5Um+Bbe6tfD.DfTjPx1pol5Bvt6aeu88wu2a2EptisN1001AkJ2t86hQotfRi9TVm05nQnnZqyaXsNX88Uuu5G9Pzp86p45hMPoRM2OmOhTYOGR76oqrploFUG62DB8.ahN9tDKByu05U+kDSyM0Lv6RrBL5EpVS2ltlsocOPZlSoHpql99ZswaqwGVZEzGp41Ak5GqTt0d5kasTkkKcqR2ZoEtUoRKt7dKTrrtwh2pRkaVwnU4k0t4x.QY1vfvrcZvzXXWTpyspsQ+FcrOjJYvCHtj8Lw7WJgZ.bV17l1lF7kHuUzZcHlF0GnlbQvrT2WoMmTo81JaQLHCa2W4cQQGp9TDTAlJcXwatPhWofhWw.hWLhTp.hz4jhzkTZn6P5x76gKOulRMJC6zRCrSAEE4XQo+2oUVyFFAkUvRae7lNvKCoH+hKs30TWZ4hW814xciabE0U6wX1T2bfcykotm7M0ep5fonMlcGSy0rs5ZSg2cy+tqd+c2cms+3O13c4yQKaG07Dffh2Vkn9SFLCELwz1rNPaevGb0beQtrds+aIeRAWLiO6N1lqoYZtG3gj2lJkCu1gIdDBdflYOLmO.it5sUuwMTWG2RqmIS0kq4ulpAwUCTzd7ujpF0v64xWSESCzWwbOJWNB0jPwps5Q0YDap5HBPd8AK3qod.m0h0fXsdjJgNXUd0bYglyRZo5S.WDGH6k9DXDYydj+JHuX1Te+2W8nQFn5W9kp4uRftuRnt4pjrYmDyJOsLq7jYVYIydDnlBnd11lg2glWnGfdTGsqVshsOO8oI1I1t4vGNShv7zdV6gcBZE3CDBQBG2oL93tfvB5Ru5.CzlViRX6zESGGXAxKT.d590VWiowCV8ZCFWWrCivEgTqiO.fJkgtYUVG6tOytKLqCCdPodSln22vKvV5ygHFbBjwUEQGMDOs5uoZeev0NUILr0.v0rYt7kurn88Z62F75mxayejk4M+ruB8LdyGRLXc7mwZU6fIs6D.X+mUkgOhEZ9DD5pqYh2TSmwQmDC9qe7i+9Urzzcr8rTb3pssU2JXSsHlVtLXkVyBRBfRcWkun9814WrwZ61byct65abuG0xQit+dXM10cr6QMtt6gDldmqySabC4yMkcz0TykQza11AioE5Rai.OiF7410W7+QUc0N.WiV2ACAAbPQzLo7KMVkO8rmxezk5YOiwro7KONkupyqT9IP4GsdBnRFaidlZrvk2vKBzqC.6MTME75FntDV+fEIdpUyyzJhWRoNe8GuLlNFYDPnedHidUJ95JazpEVm4KfmSYyO5EPYgYj7OmWLDvSYw8xWU27iJERH1tm0lDSnvOd9wTof0Bzx5DWvAp+p8fkfeGd0Nl5On3mCtqCtqlCdW65v3y6pY00DeOQsV6YZqueCxCwQSb2UJsqxGQd8NZTJ1zMI42yL0JvRS19cO6dLBs8VZPDB.vn.5fFPLtNdMOoiqCRySyKeuH+ctKTCL0P7xyfedcVZnBC5rzfNCTgv1X1g1N6KrbdOiRMuzL4JTxMacDH9ftm6GmZdkhEf+PPM11GxgKIdd3f8SzVcay9c6XSI57ljiXfneGK.PfMP9gsVsqFwjGRznmKTPiwNzFvfE6mi6RtssA7z7Rvr9003.hWRgWRD3GicJnGX+hAj0PtTh8wEpatQotlCzgzSSxmA.oRUIH1Vhr.vN.gIA5WpfDBTFNGmWQx8iQ3hJKCHLIL87RZKM6bcHkIgsY8Ht3ryWeRmVFmN.iyoXYaDid9sCv4giHJyCPdR394UNpklA1ILuunf2.RPAudiSY600ww0.UiCs38FjVHMm8uIOxOfipXKRChcPiL3L7zP3Ai47J2EzMZNPXuHQ7tZNv1hELIXCd6KfhEXbtge0SWTyfuAdKhQy1fdrBZn.w6XdEICQSbVQAVD77CCdCVKaQndhrelvszNZj1d5JxHNYy2oGy1B.YE4R81TsmXfB4zJMBKOylOeJ+Ah8Cf+HFXgAbgy3FvfbBER8lZDM1ETp49.duP8tCzafpMDDMT4.gMdPKY2wAQK64jfUVN4XkkSXtAgPu3rubGR4IY8VI4q2JIDcVH0Kj306BSMamKl06Byv5Mc306BIb81NF+pWC3qCtP6wk0u8T4PkNT.9bABvmOZ.9u9IQCvA.DFtKuBa+8b92Vow93CCsSzmz9u7NUkvchCxObveD9flrfDCRS0+T0oRP9z2Z8uaE4YS2vx1l0AJ3FEY5CIdAty.zyeEzETtGdvwhFUwDufMBhIJZgiKM6NsCoLYEIy8+VbVbYGPxYTO1YvT7Je2Sfu6ItNfSyBI7hARPJcEkF2e0DlmQVDZ4DW9Z4+mq7UTRJtMi.vHbYsdAqOGqactwuwCOAZFv77n3LJj2TUt9q.4NoIncOnUS7mOZzdK44gVvq2n9NmS4lG+YqvOENS7QCtKvAGx5vGgGpQMvGM77AC4pkIf1LyzE3PpFQyU82a8sdVzMcvedOLUu+XLfaWMTnFZb7uh322sxH7+Iey27dQ4O5899+of+yo7q7MXe8u6uV3u+O9OqDuf7zUPSFznbLdRkmP8BiykMbnTloEc5zKro5+5ge0JIPFt3ngyCQMCmR34kBXLLOqxFhufBCTDRFuk9Ts9CuytNP4CIXGxYTV8NMZD8Dqm6jTQQkDWQQk++nhB4VPJc1njBgGzqqzBfLaJN1hJG2AdD0aItCF3lEud4EO9LGghCheKd6owuYoDbOHRBShq77JlNkZNBSeGkOyvsagOyjP2Gr5OzgXh6GZ5yl4O19whKIONwQNkmlINSOyPZUsSThSQQ.SWNyw6Yhl.Tt3dbmRnzITkCWIWNI1sGeP6IX2J+h0tQpF0t8mSjcKiRoEK9h2xMojvis9TidVV8GY2n4T.wtSAqdliXuD5zv1qgmmj2DMg81bhgUeYkze798sidssSy4fU5UaJ7Um70o0IeErhB4U5xuVvDTVZtgDeJUZZNECrtczZSeKEG4GCSAK2lxgDq3Lj5YIZYrQqugBvMQsTrHRTP0C.6wHwHOiPeRtrmKHzvIcaCgnNImaevK7eb.9QYaPplIXqSLd+3f2CgR8bYCdYjkmKte8jdHwgIOI1qPWv+zavBQ1O7sXSUveNEnNsiCJRNjXghFRcxghd4e2GuLjsyxK6jLAg1EghWUK0VeCUw4ZLswLGS0M7Ogzo6PMF9MoE+2+STYcqc1dmWRxp+Gf0XD1DXZV01deKMwG5Zh9uh4Exmkq3ixuo24wwWbmWzBn6ndGDm3azWsD5fQ00PpWRSc8vSUDBKmTBqjTBWHoDtXRI7lIkvkRJgKe7Dx+OxzK2F2WGBfpugvILUpAmTMeu++W.dMHp6B
            

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

            D 1 Reply Last reply Reply Quote 1
            • D
              DAEN @d.healey
              last edited by

              @d-healey Thank you so much, this has been a huge help. I’ll keep learning so that I can become someone who helps others someday as well.

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

              21

              Online

              1.7k

              Users

              11.9k

              Topics

              103.5k

              Posts