having trouble triggering each button
-
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");
-
@DAEN Can you put this into a snippet?
-
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.
-
@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
-
@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.