HISE Logo Forum
    • Categories
    • Register
    • Login

    XY Panel controlling Knobs, Panel does not create DAW automation but Knobs do?

    Scheduled Pinned Locked Moved Scripting
    24 Posts 5 Posters 678 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.
    • hisefiloH
      hisefilo @Lurch
      last edited by

      @Lurch add this!
      Screenshot 2025-07-18 at 09.25.54.png

      Also try to get a version of HISE newer than April 30 (when fix for panel send parameters was introduced)

      L 1 Reply Last reply Reply Quote 1
      • L
        Lurch @hisefilo
        last edited by

        @hisefilo it’s in there already! HISE build is from earlier this month so no issues there

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

          Anyone got anymore ideas with this - I've just got this, and the plugin latency calculation stuff to do and then I can count this one as in the bag!

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

            @Lurch well the last snippet you sent wont get past a truck load of errors - so Im pretty sure its going to be difficult to help, as Dave says -

            "It should contain a panel and a knob and nothing else. Just enough to demonstrate the issue."

            HISE Development for hire.
            www.channelrobot.com

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

              @Lindon That last snippet was updated with Christoph's suggestion discussed above - the erroring code was included to show what errors are being flagged. I'll strip that out and see what else I can take out.

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

                @Lurch you are not shipping over your scriptnode so thats not working for a start...

                HISE Development for hire.
                www.channelrobot.com

                L 1 Reply Last reply Reply Quote 0
                • ChazroxC
                  Chazrox @Lurch
                  last edited by

                  @Lurch try calling .changed() on the knob after you set the knob values from your panel script.

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

                    @Lindon lets try this, stripped right down!

                    HiseSnippet 4807.3oc6b07aajjcuosaOVzxyXO1IHmRJnKKksLMIknrcbFHRIRZy0hRLjRdklAKFTjcQxJtY2b5toj3LqALVDfbLGxkr21+CBxsDDfDeM.6gEHmxsIIWyAebuM4UU0M6uoZpO75MXHLr.q58d0qdueuW8ppK1MMz6RLM0MjRkduIiHRoVTt8DMqAaM.S0jpWQJ0sjK2Yho4AGtGwzRZyIivllDEoTot5yYjjZgqIw+79M1Dqh05RbaRR5U5ztjsoCoVts1rzKopp0vJj8nC8P8Zkp2UWaKcU8wf5bU4bRivceMtOYGLirqHK8Br4.oT2WtXgU6tlxiUJTn3SWuKdcxS6g60K+pJqs15O4o4W8o30dx5jbEkRc8pJTKci1VXKhoTpqsotxj1CzOVSL.uhZR6nRXeIuTaXjEMWSWUgMEYsJs0.ppRSG6joDHkltVsqJrZ2StAUgNscWq2s4cfb4vqAL0U7qdW0m5k2q5kyi5EgJkxiJcMgJcG41cMnirb6goO2TttlEwnGF7SdUEAsRW4u4OS9QWDePk27v1sQmQtS+ne++IcZ1rfA8QTSDVCgU6qaPsFP6hLHGQL5f5fAqGBanOVSAUoZ8cp7SLQO2fLYftJAUocyUPXTKFslvWIp3IPC.ofvZrMZntBQEo2Cn44.BGvLZ8IFnxiUn5OZuATCETCfxVjt5FJlnlpXygXzV5TUTEpI.arn5ZOr13u8aQMIJXUg.AEZrIUqOZmxMx9LXNHlB585AZA5fCQMwJHHNyxPWL3pC0Msf+nh5MVqKSllqfFRvZLgL1jwUWPM9lwztuVcBW+oZVioVziHv2GpeDA0gXcLg.ln9F.TC5XEjhPEA04XHpkvz.ayFXCF1gRzrr+tovnXdLQUkMlN8NBCy5tFDLSHclfrFPDbXRbkDyZZOCzl.yKfWMLaRvH2fP0xBlf8.N2TERlv8K8MviXNQvqNxP+HJDpCLNFzUyILsbmxsKy7i5JJXvGzFxBQP0To8GXg1hvhddzOED8vIn1cGnQsrFhgQggV1Z2lG1p9yewdncp9ppsZraqpnx6Wo9tOZ6x62p5NaUE0r5d60FUHWghqfJu81HN4sQsp1tZqWUsRVDHmC0GiLGnOVUAM.eDax1kByWXlB54HtNJrEpjivfgp59aWFc7.v9S0LsvBqH2suBh1CMADmBUAooC1TUBfY49ebWKT6wiFANoR6vLmC0MHbvW1t5YG+ZTOcCjBwBSUMAfDnWaw8ELuuHAB25qpC3odf7LyldK3OfAJ6P7qI0LfuLMWSl0ykaEzZ4xs7yRCCN3tNBaf7rvB5KP70cx1mXwSuw+Vlk7PxR93ce.Y1DPaDqW.pgJD37EnpZ8oZjrBLSHBxrLeVHzXFdmOYQ0np.5rmg9PtUk2nnM9x.Fr4qNuql55posGClPbIElm5rdgg.kNMaTZh0HplHOJ7AG9RM8N71AU0wTwlt5CGoqAeIyRdnAlsP1SHdk0BmbXIEhAW3m2byubmc27Lma9ikzyeLnCtd2Jzd8f7t5Zb2Ub9WeT4GO2l9sjYxqCA9Yi0xpwxCu2vLr1LYXsvLTblLTLLCqOSFV2OC7UFaAgry114kpHDP6QPXuxoKBW5hPH0HDkNvBEmtX7RYDBpA8jSWF1DE17kellu7gYnvLYn.iAVhCgryTodsZ62t9t6rb5zTMX4Bxz09Q5Z9.oaIpTHSWGItBLlpiIKm96Rm9MfTSDPOqIqWtj1Bx7xraYhdf7nnEPYZW+KqFoN5DLbFUO2Xon0r.hWrvgHTKSs8+xuD0n9ArFCqXbhNiZkczZzpjWA6pOqA1nWTuQips3pTbZzZmCMZsYoQqERiJhxzX2JP0vM26EwpOEOG5SwYoOECoOqKzmZsp9WFq5r94PcVeVpy5gTmGCQedSjEcDnWJNqQf9SWFSDXDCjqt9Dac0MiY7ZqKMmG80at4YnwgFLWc9o15r2zywq0do57n29WLXFZdDCnqtmOmsxautP75sMAmGUd5ZOyPa8OLBE8bT1IaymkqfpuydUaUqLrYn+v9rAdNwhusfgPg4vbisu5QrJ2y5qnen4lZypheAAKYu4D68Xw1YEHkdz9iMH7Q4fCaaA6.uY3QvscOiBVQg2DaDbIXoUPv1vXaBym3.DPlkNlpXM.HnPzcOfv1.b782ou3j6XCwI4xUi+IRJAPl9wNPMSf9kJCaFysgHXphAtOrsq9axNoEyLNFMlsba8tXU61ysrsUrNrsbJVEVEma6dM.hMQXCC7DulNQyeA5q94g3h20JHxIiTocoVpSPfVXw1WMHOpAxfcVM1GbA1zj1medCnt1ShroYadNCaPnv.j6Yve9KPEf+7fGrL56RifO7g3qn+7YV41RnGfxPg+KOapwXi+efxV0mpwGcPaIcYGVBW6xxoD1+Ov+W.5fy3ZyeMPAO4gizMorDK+4BdXmIxCKlCAa3sXtrSI2QUYthVL5x7vhqff+kKat7150aPv9cItiW9HFuIQMd7QKetYOb4WAk2+v4yXz11B3btVN9AlnALoczoSVzroCNJAy+woGFo2vwEMzGa55a4mKh+nwfvUNCSElyvlgbD3WYlEG0txXCFjRwFcmMqqOiSaVVOAriMvi3SUMxwhzMHGaJxYFylYhEBLcMpN.9C.71P7nWw5Ni0.pIC0kYoSVZYdtAugV+LVFgLKidHxgN6VVAw8+7SnXaROXYGCVxgPi0gQOVShXrdAO8huAyoItq+g44i1d5iVA0Q2xRe3zQyq0Y+QJrzmNA8grBBmdNtSWnVbaBH6.xRPX9.DdnM5i8guhc1t7SsUISfNJDrCNd00w1EhceMQwALDnWE8wcTIawngQwBQp34bU5EhTgY4oWHJEcgXTx2j9MNqBMEq6T3AU6H8WyNLW1wLhEFWH3kc5uJYCUlB2yFtrDz2MMhsBwhXLjwzwCncGHD3wXHKsxe0XSKlPYTZP5inJm.3H97KKUSgbxt8bEs2rh7bOLhEY6DocnFP1dtz+ue6eGZr.ebxzfFWngJagDVXkuHDthai2mQ.huL.t83AUHD+A1GJfvmz2wU4gtvqWdBrDISs7PDTAhWz1ptNc9.7nhOHWVQ3oytUQqFfiX.tEcE0Cyeeaowkzzc0gJFfiHDUnhcCK16m+ob4Vo51kODUqZ0JaVdqWNCID2v3tafnz86+zbdFl1MaUsbkX4OtgvtP3HjeduRGryQyWDxMzhlBfKaYSwJZvZYJg.tSlEv8vH.t7TmyJaaPjqSWgftG5A5VHgP2IBn6gQCc8c9Ot1V9.IrpNmSEJOJFthvx5b3MAj38WkKS1QJgJDl3XhGV2mOWHH23A1oJfVO.CwAhb1mcP8RDFfDPnVk2qZLrE0JJSym1hLB1FhEaswAh5BLYkBXP5oB0DhD7ZuPnO+jgfQGoNEkDncVoPrUF12hpRsl3lpGFD.yAKIvAbhmiBjY1t9NnWrlN6QwEdQhfPUcUkFTMwewmvAN7uy9K9DmxfLHViMzPBl.7qfqkQ2GkQPHzlfykQOBkQHLOz8.6dYE28rzd1X8N5Vjc0xv167BPenfc0qWj8YW5H+4KEQ2rq3fwrXLi13gcHFd14NmPoTWy+cCPN96Ff2qtPWwVI7PntFaeM6NhnE2EZPxd+GRRotqsVAjZwuEA2x4VDv.KRTEoTokcvHRbU1608P5zY+Sk8B+RfH9TaQzVkpPLrkwKZVipBUPvBLBJi8JkLYrc7x3f+kDJilTqtCryxGTO99MRhL9DY95wmGlWyGynm8O9ejHl+LYe4WNath6HGXMzPh4sIQL2UNz58mMA8oxdW38rJilFDtXhRF+1DYbSK6rxxYytBNGuqyc1Dh.dT7rYEDLu94g47mG0tvbv7ligcDpwYdQ4WQL5X2P.I79Mj1udErElciorS5AIBGQLrnrbropPNh1kHt+TK.HIyWaoOBblSOUFoT2NA4EOY5PhTKMY5WdamR7CYaZCuqSIwwpMskeMtj+iGigD7c7XRczM.CUKrBcroqnOpjE4DKmKO2hxqU3wOI+Syk6I4jnVjgduUcteufnAmitiMGxu9ie7iKjunjI9HRcMwEnPrvwH0w8oZMwF3grMuItUd2PVbkhjTH8viUEE13MMlPcYACd8jLy+TS5mkv0JbMqkZ5wrVZmol0qeOa4O0rNsE2I4BW+G9gef21oYpGgM.Ezil5wGGmafKSmyqTX37YvWTN+p4JTHWthOtnOWyMkeRtG+z0gNeRLFy2uQXmhjGs6lwYG+L4FXXO0F6WOngDVrz0PNxH.9rzaChOeWqRQhV7NQRKu5pEKt1ZqVH3L2CnzKZ0ibNx6MdL0U8L4tWRqFvcx81uxyjC93exIsSDStPd7flNnZs1VfB35ye2WWpGUcnIq05Cw8Ak7OU96Z1Z2eZ0s16qqs61Up15M78wkY0kyNB.Elv1oH0vcsX2VStTJs5p+OaXB0rsGXV1T+Dw7eH1ct7NiRCoJJpjl16+ycVhgdz75QA8cj+.t2uQzHp8JEYP8BxaqeLZqwVRTyl9IvNUfS0i0UldAg42ywNrXFAk04Yx2VmIFeg6K5GltMtiML8Vfij4BEsbhWWmmjnurzo4GkVKreL.Hgcg0Dy06IuI170DiinPM7n5VXUZWIBT5MdJNjgUYnTaiRV+S+zSkr+490kqYP9FeAn2MoUi5AC+MefvvIETNmXcuXXnpZuH0R+swAoK8OTJR7JHfXVD5EzKF35KngfqoiGtt8kHbc6yIbcAaaRVeHv6jz8x3Ncd+uvKBbsRI.AdQjjzmO61xkMK2Q+HRa8MIv5q9caKJ2d.cHrOaP4kNUzeRA5wUPSLXVnGhFyInHX2+JYdATKDGf5t9bAyDVI0NneXuPvpUiBV4yIeJvJAP55x.4YSVgF2UtgtxXU9Ev9BoXiXJSH95JhoPjHKZwuK55dsSm510OwaHw7lg97lTcdRfGBCDkOJdLsaB6e8u5W8Ouga5728a9M+ua3CWey3v0etL6GoPRf0mwrkNNE+4ASD5dAYwuqhrbx8W0T1RRg232LNElS7twt4ESLO9z4MUZRf.gq9LVLwYM0ru3MeIKkRTrWvCr5hsJonLJWhwkQXu88ioyagSRKEYM89h9tUbQe+QxaMP2XroiY6xH.Lnm4LTuxmHy3N5vPe.tErmO4CVtMi+nVlJQmZ4E6tFiBK8gbmiIKu7erskj+vpurfFgM0mB3HJ.PzE3Jjo+RSt0bcDym38ja9CdutuTFGFLkAe86jAL9SBaptLfFQ4Qtf.G2T1Qp9gGKlzGbfmiv8W7+yPFeeBQA20mE4xYWt9r4BW2hxUnXgoJ64GN304+4I8I9.yR4TJhYnbpeRpD4zuDqUPXXthrTR1jZo+qu8uN1Mo9a8TWAjP3+bi3NwjnNlkaxrROjalR7QpjdpkMgKJ8YSY3B.wkns.rn6zJqTTaY1KzX9Pb2NIOePNZ6ecNQaWhYO7kr3FwcFcR+tjdjI+tM7UZ62OWXtqKKr1ID63XTu.vNNkkxDY14qh1HdtQS81m11L+zD+Hg43lAolObyEyNJiN4UROAs4KmyzIsjuyh3eOgqhcO+VsKLfwhtx87hNB5XOumDQQAz3e5hAZbgjoIHzv+d9lwwOg6ZnO8o9eG4czQM71zEAD6SfpPFwLNIBOcaA0WPXoyvFkugPAhXoJGu+YOEiyc9fie97qboV.z7.27sjz8RZllqUZ9Voge.BICE7orB5Yz+gpHkaxFPjHb4TRm33DOMXP53NE+aI648PQrOAh0CdYV9kglasO8KKPjWHkXN0+TWKQOIKm6djmiis+4eKb9MJ9pn4duK.9Lt7YRgSDdIVG27.9ug7AnxGTusD0rAwBGfEojDR.hXZvvz5Ycl4aOeAB2xaffcDvUkOHhC3OzQENa+17rLZgK3iGJHBJNLh+CB9e6iWHygmeHygdfL1kxNWPFGnwgRwAdtPgLoS10NzE272+KmIt4dglR2qTR2Y8BxUseDJwcaw787VjB+Fh61NmJk+WXcrWqetGWku2Rbr2mSZ.hchuGCwE0awtjph2w9oXGoNdkHzQIoKEcz9c+2sjq1qGoqkqBdM4ZGbI8h96JdF+aL8M1Hc3HUxycFd163uQis3eO92WiRR1GKiaC+L+nyCKEwazw5Z.TzpotJ1HnM9pIdRle1SxqkXf.aJg9nFr94hy37ickj65+3VIusbS7uub1szGy90+2.CKwxVrZGXMXn7zt72ZirerUrEvtB6FpK9dN124k.SzT3e4GfO1clm88T1cl2oSoDDYun7tistHBso+Xn8OFZ+ig1enBs+PLF7iJ6qseCXvB0tAuEXdqwKKFRlfsFaHru9+gw7t8XaYk90c65WZS4UVtr4fv+dblMSWQ9G4HdNXuVnKO1RenvgHI0nYU9OMoTobpqGv9R+e6qrPqB
                    
                    LindonL 1 Reply Last reply Reply Quote 0
                    • L
                      Lurch @Chazrox
                      last edited by

                      @Chazrox On the XY Knobs? It's doing that already annoyingly

                      
                      // Mouse callback for XYStickPanel.
                      XYStickPanel.setMouseCallback(function(event) {
                      
                          // During dragging...
                          if (event.drag) {
                              // Map the new panel position back to knob values.
                              var knobX = mapValue(this.get("x"), 0, XYPadPnl.getWidth() - this.getWidth(), -5, 5); //Left, right
                              var knobY = mapValue(this.get("y"), 0, XYPadPnl.getHeight() - this.getHeight(), 1, -1); //Top, bottom
                              
                              // Update the knob values.
                              knobs[0].setValue(knobX);       
                              knobs[1].setValue(knobY);
                              Knob1.changed();
                              Knob2.changed();
                          }
                      
                      1 Reply Last reply Reply Quote 0
                      • LindonL
                        Lindon @Lurch
                        last edited by

                        @Lurch so is this latest snippet displaying your problem/ What is it failing to do?

                        HISE Development for hire.
                        www.channelrobot.com

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

                          @Lindon the XY knobs are declared as plugin parameters and produce automation when automation is enabled/recording in a DAW, this is great.
                          Using the XY panel to manipulate the knobs does not produce automation in the same scenario, despite it manipulating the knobs as seen in the snippet.

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

                            @Lurch well the immediate idea that comes to mind is - we record the XY movements and then play those back...

                            HISE Development for hire.
                            www.channelrobot.com

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

                              @Lindon My thoughts exactly, I'm not sure why using the panel to move the knobs doesn't generate automation when directly manipulating the knobs does - I thought calling changed(); was functionally the same thing.

                              L 1 Reply Last reply Reply Quote 0
                              • L
                                Lurch @Lurch
                                last edited by

                                @Lurch gentle bump - still stuck on this one.

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

                                  @Lurch Looking at Christoph's example you need to use a custom automation handler (I think). In your snippet it seems you're using a panel for the drag point as well as a panel for the xy pad background. In Christoph's example it's using a single panel, this is also what I show in my tutorial video on the subject.

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

                                  L 1 Reply Last reply Reply Quote 0
                                  • L
                                    Lurch @d.healey
                                    last edited by

                                    @d-healey hello! Yeah I tried implementing the custom automation handler in the snippet further up this thread but I get a load of errors (also further up). Do you know why the XY knobs don’t produce automation when controlled by the panel but they do when controlled directly? Seems like that might be the simplest thing to fix and would give the automation parameters I need too.

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

                                      @Lurch said in XY Panel controlling Knobs, Panel does not create DAW automation but Knobs do?:

                                      but I get a load of errors

                                      Start by making a minimal snippet. 1 panel and 1 knob.

                                      Then try and implement Christoph's solution.

                                      You can leave this part out if you want, it's just a check to see if you've compiled HISE with the HISE_SEND_PANEL_CHANGED_TO_PLUGIN_PARAMETER preprocessor definition, and this needs to go at the very top of your script, before any comments.

                                      #on
                                      
                                      #if !HISE_SEND_PANEL_CHANGED_TO_PLUGIN_PARAMETER
                                      // If this causes an error, you need to add HISE_SEND_PANEL_CHANGED_TO_PLUGIN_PARAMETER=1
                                      // to your ExtraDefinitions of the project and rebuild the component tree (either reload the patch)
                                      // or click on the refresh icon in the interface designer)
                                      Console.assertTrue(false);
                                      #endif       // FOR AUTOMATION FROM PANEL
                                      

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

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

                                      19

                                      Online

                                      1.9k

                                      Users

                                      12.2k

                                      Topics

                                      106.7k

                                      Posts