HISE Logo Forum
    • Categories
    • Register
    • Login

    event.drag x, y data for multiple points

    Scheduled Pinned Locked Moved General Questions
    5 Posts 3 Posters 254 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.
    • ?
      A Former User
      last edited by A Former User

      I am trying to implement a multi click-drag area inside a panel to control a parametric eq's frequency & gain.

      There are 8 dots, each dot is XY pad itself. I painted dots & picked knobs with arrays. But I can't figure out how to get x, y data for each one individually.

      this.data.x = Math.range(event.x / this.getWidth(), 0, 1);
      this.data.y = Math.range(event.y / this.getHeight(), -1, 1);
      
      HiseSnippet 2513.3oc2Z0DaabbEdojWWSJqDkfDzlaKDJJnhkT2eHEEqagorjXhPhrnMUcrggQxncGRNvK2kZ2kxhUQ.1GJPaNzhhhhBilCo.E8R5kBTfhBzf3CI2JPKP6kdyW58bnGKP6a1gK2Y+gRjxMNxZAzOyaduY9du27duY1cp4XqiccscDxjc6dcvBYtnX8dVdsVsEhXIrwZBYDEWY8qKb0dcPttXCgLYl7MnckI64D7e9hqbUjIxRGGRRP3l1Dc7aSZS7BoVqxaQLMqhLvaSZywcgJanaaspsocW.FSJJKzAoeOTS70PT1lPTHy4W2f3Y6T2C4gcExbtqZazqdK66aw3+lDWxNlXZCEg5v.wHW01zfhXJUgUaQLMpEnttBfhUKT4mjo7uh3lDCx.5gFgY76PJTBd6QlIhBuIi.OEd3IyAuTfTFNHcNFjdIw55NjNdg8PwyThaX4gcZf.yNOTX7JLwtmWbUafCKuEaitGtpCzXfD4UTjkmWpXQ44tbtb4.iuqmzdHGoac6ZHiZVlReOo.oah8V0tcGaKnQ9YCXXVPvPwpgb.OkmCY20utBHq+BHpjq2nAVGDKBCyFaRQNNndXipN3cAYuycubx9nK3Rz2sRUhaywatF1NR4IPK4KKQj9tRKC+4RWZtbGjSBd3l36Pt6P0YZ+ydo7j4.byIFcdNJwn8yKVJS4htTIr7brMWEYZtCrpO+5WuZWK8Tmpij8CAaZt.2CkyZfPd2vtqGwBmuAvjGw1Jey4NHDMMWrADPthoYd49SXS1bPiDyy9i6h8vll12OPKxNLaZ1CxkkxwsBsmahfkANHql37wTbvTcSjYWb94j91RpxvizqK40h3R64cHFdsxO27RvZzXzVPghT+4ggF5uucnqHf82DSZ1xCF8ERADAlyXffCAAhOujRw4SPM.AreyLhqaZR53hyem.0e9AvBFjRzet6bW1WnCGX+yk6P+XAd21l1ccwCbuC7a38fEUAKbIMjXDVT2jneOrgz6+9RLBFNnly4yzA4xEXl7U.CjGZw8i5UXxrOn9oY6U56yiND8RaH5wMDgFuEThNHI+mgsXJn+CB802hKng417W275bJG+RiayEzDv9BvOb72aNdAFL95snJlQ9TGMtNk3dFzHv4lKrAyGOfirT+N8gXYBglRAtXIVnbd8fTHyC4y.bCNcl.G5OLCX215Z1d3srxSWUjEh+kh2UiFo1W+THlXmT6lVa14nDLuU216fcBgGiQnfUzpfhCuJHeQZcV1SNFss1vh3sUGr0vJcKzOkKTwbl9nBX0yud4KzudYcShA1Qf.kE+ZhTeqrfOfGruiJ+zJBirvJQD9idz+5CGCgUiNyO30d7XHrVLg+U+wwP3BQDth1m94igvEiH7i+K+lOcLDdoXV6m76FCgKEQ32629gipAiFlF2OKze8xHIrxSivpOMBq8zHbg3BKMFFrhwE9KtxnK7ROMBWJEg+9arFjbltW39A4PfeGriGglSIyZ38fCVv1YbVw0vt2yytiOu8yZBGfgMoSGruYjE1zeNeQwMg4jNpve.brOustGei6SqBNff7OqRK+ZZgTdXkcrc.coN4GDwiwndCjAoqaD5MCNdSNQkkJUpjpRQAO79doPl3gayeXnv1pLBYlXTz1WVr519sFeE9AePJJ7whVUpGQqbgREWVNhRDRcnlmTMlcPNfJxoqwcfYljqyo85eBNlgnpoMB15aysIPIGl2mmj5QXL5utisHCDiXBmaZMhaGSTONO4ThkkKqoVTQtTD08hhJkKuTgBEUJqE07.8TpPgRKqosjpf+p7LKKdvzvVClcP0sMLl86HE6.Sy6yxFVF38gNWPY5bGdrdrmzsR3bqQcBpKWtfhpRRyZJqTD359EFKCq1naXWoqAwdEKjYOWXJCMrfYRYI4xfYpPTK6ThEJuTQsxKKGKpf1gllRwxEz5aW0R2tFLawsopmDS5EEKntrh7xETkGMqJeHzThEk0zjkUKWNh0dpgEOmSL3XBOEwwfJfnmlK3.Ft99ASSoPBcr6zsyVV2fJ2pziWvR5LNYvF2UXSO7L1ukk8NGaBrGrWkiKisjwWkYrO9LYyjbIvQrQ1gs.nPkTlonlv17u5tBUZiBGqezeuRaaCLcsIcZ5hsz6I35g6vYy9nG8n+zUZSLLLw0rcIzSFvugZCbCTWS1AthsQ6QV8T3UOTkyZpGekmmz4Lm5wm+uSuybpWA9EmO7Lm5UjS8p7COyodKwod6+iOyodk3Wb9SdtS8xdrGreX0+u43pdOlW8nZqu5QOPoNYGXyGCQQXahcjA7PqjcZEvCs1zoU.OzpMmVALe8iYd3yA.dnUDNsBX9b7OfOGekSo.dnYselZgS9gmmQbSaitlHuneGbJj62AcL3+3yzOvrEL183egd+e6iiOpP7kDqQ7zakNFmHELJH7kBF6ekBlVj8UvCA34Dqdqujt+.SvM+KD7VRWsqyd3020eteQwHuZoHv3ZcaydWWzOdSlK.ZyUQVFx7FJJAkfJ94+2GVgRPsOgG7O+4S5SPK5kCwxnPHgY74nX7Acofw3O29C74nT7wX43DJGePURB0.r9Dw+wufwiZ7gQIAZUR.WkD3UY.f+qu1ulwSBDqj.xJIvrZBLqFf4J+xu0Gy3IAlUSfY0DXVMAlUCvrvmr6efwSBLql.ypIvrVBLqEf4Gu6+4SX7j.yZIvrVBLqk.yZAX989809LFOIvrVBLqEAyUqt85VHH.hErM4HGrobzw5rKWQyMQPvDj1UDhepa20QGCg5VVXS+vnInECXskosoPpN1OrRLy+Ed52oBscl9cpDzIe9DQV7bNwAuxT1EAZv6zLRv7U6BYch81tdbkZN38H362OyPXN5mWsIuJSSlR7cP6g8u1Q9FkW0ucCam1RuAFJSRKPnbDWgs+1ndE15LxWgssz8.HrsCxxsisKVgeji0mJeeqg85ZEkcFoHbQUupf5ww2EpDPTkmXMjUjACZGYj1jvsigmbEVfRcLnMFa4pCJK01wuVoVWSWr+0DQgWvPxp7jeSjiA3WziTscxi517obBuMem+T2s464f8TE4BGlM.i0Is6XhW2ZOroMPghwWF1Co+I3CnFMbZSaK6NsrsHQbz2ftMilMwQV+jpBshmGh9kFBn7JUtA1Dib4Bw9lUdaXGuHmMY6o8jXKTF6KeYp9qugHCtRzb.RO+tW3IOSuW3QO5CRAd51K90EgTwpR9tRouZ7kOKpq+rXNZizcreWc1ETgFzeAeJfda4eYyyJtIsszf6Ajnn7hxzCNSdWcc550EfpOoKi5IPFsSfLENAxT7DHyRm.YJcBjY4iTFZk5U55Y2lslGHTac123OC2t5E9ezQNaoJ
      
      ulrikU 2 Replies Last reply Reply Quote 0
      • ulrikU
        ulrik @A Former User
        last edited by

        @harris-rosendahl I only took a fast glimpse in the code and got errors and saw this:

        XFreq[i].setValue(20000*this.data.x);
        YQ[i].setValue(20-(20*this.data.y));
        XFreq[i].changed();
        YQ[i].changed();
        

        XFreq and YQ seems to be ordinary arrays so you can't use "setValue()", and you use .changed() on components not on arrays
        Try:

        XFreq[i] = 20000*this.data.x;
        YQ[i] = 20-(20*this.data.y);
        

        You also have set to callbacks that doesn't exist in you code
        so you need to declare the XYPad and EQFunc callbacks

        arrayedFreq[i].setControlCallback(XYPad);
        arrayedQ[i].setControlCallback(EQFunc);
        

        Hise Develop branch
        MacOs 15.3.1, Xcode 16.2
        http://musikboden.se

        1 Reply Last reply Reply Quote 0
        • ulrikU
          ulrik @A Former User
          last edited by

          @harris-rosendahl I know there is a thread somewhere regarding multi drag, I'll look for it

          Hise Develop branch
          MacOs 15.3.1, Xcode 16.2
          http://musikboden.se

          ? 1 Reply Last reply Reply Quote 0
          • ?
            A Former User @ulrik
            last edited by

            @ulrik

            Thank you so much for the advices, my bad, I've corrected the issues, edited but still can't usable for this way.

            HiseSnippet 2532.3oc2Z07aabbEeojWWSJqDkfDz1KEKDZKnhkT2OHEEqagWY8QhPBsoEUcrggQxncGRNvK2kd2kxhQQ.1GJPaNzhhh1h.TTz.DzKsWJPOz.jfnCs2BPKP5kdy+IjCs2JP6a1gK2Y2kThTowQVKf9Xdy6Myu2adeLytSUWGCrmmiqPlra2sMVHyEEq001u4pMQDagMWSHin3JqeCgq1sMxyCaJjIyjuLsqLYOmPvymckqhrP1F3HRBB2zgXfeMRKheD0p5uJwxZCjIdaRKNtKnuogi8pNVNc.XLonrPajw8PMvWCQYaBQgLmecShuiaMejO1SHy4tpiY2ZMcdfMi+aR7H6XgoMTDpACDi7FNVlTDSoJrZShkY0P00S.TrpQJ+jLk+EDqPLI8oGYDlInCoHI3sGYlHN7lLF7T3gmLG7F.jxvAoywfzyIVyvkz1OpGJdlRbSaeracDX14gBiWgIduyKtpCvgs+hsP2CugKznuD4UTjkmWpXQ44tbtb4.iumuztHWoac6pHyp1VReeoPoaf8W0oUaGanQ9YCYXVPvHwphbgUJeWx8W+FJfrANPTIWudcrAHVLFlMwjhbcQcwla3huOH6ct6kS2G0gKUe2ZfRbaNdyU2wUJOAZIeYIhz2SZY3OW5Ryka+bRvC2DeGxcGpNS6e1KkmLGfaNwnyyQIFsedwFvTtnGUBaeWGqUQVV6.d84W+Fazw1XfS0Qx9AfMMW3xCkypfP9a4zwmXiyWGXxm3Xmuwb6GglFKVGBHWwxJubuIrAaNnQh4Y+wawtXKKmGDpEYGlMM694xR43VQ1yJHvMvEY2.mOghClpahr5fyOmz2QRUFdjdII+lDOZOuNwzuY94lWB7QSPaAEJRClGFZn+91QKEgr+JXRil9vnuv..Qn4LAH3PPn3yKoTb9TTCQ.62Li35VVj1d372IT8muOrfAoD8m6N2kCD5f91+b4NHHVfeYqhSGOb+k29qa3cAmpPGWRcIFgEMrHF2CaJ81usDifoKpwbALsetbglo.EvD4iVbu3qJLY1CT+AY6U5slGeH5NngnK2PDY7VPI9fj9eFlyTX+6GsVmJZ0Kb4Kv+4k3TRdWjTQqbhs.7CmbcmKsuU7+KgWrQSpIvL+vmOdVj3d52HzYHWTClOQeNxR8SnODaKHTVJzkPhE5m2HLky7P9OPu.mDl.GDLL8Y2w9ZN93qamm5EkExWHkrq50GXe8R4XgcGX2zZ4tGkf4s6zZGraD7XLBE3hW0Tb3UM4Kpavx1xwni8l1D+q2FaOrR8B8RQCUXmoGp.V8Cpu9L8puVyhXhcEHPYzuhHcEVVH.v81mhtl2V5BirvJID9S2YLDVMlvuY8252LFBqkXlq7KGCgKjP3O9uNFBWLlvG9Iu+GOFBuTLgEDd7eXLDtTbC1u6We3HJLMLUNwLC6GczEVIgN+IeqwP3Dqy+4uw3Hb704C+24yOFBWHoNKMFBWLove1UFcgW5yivkFfv+fMWCRdS26bufbHvuM10mPyojYM7tvAQX6jNq3ZXu646zNf2dYMgC7vlzoC2mMxFaELmOqXEXNoiJ7G.G6we.mt7Md.spYeBx+L8lA0.in7H8cbbAcoF4shcLIF0sPljNdwn2H73P4DUVpToRpJEE7w64O.xDebK9COE0VkQHyDih197harcPqwWge36L.E9XQqJcEQqbgREWVNlRDQcnlmAZLaibAUjSWSt.lYRtNm1u2I9XFhMrbPvVkarMAJ4vV84IodDFid9cLmLPLhEbNq0HdssPc4VImRrrbYM0hJxkhotWTTob4kJTnnRYs3lGnmREJTZYMskTEB7xyrr39SCaMX19U21zb1uqThCXMe.KaZah2C5bAkoycvwth83N5QysFcQPc4xETTURaVGfmh.W2OyXYX0FcC6JcLINqXir55ASYjgELSJKIWFLSEhaYmRrP4kJpUdY4DQEzNzzTJVtfVO6p1fsqgyVRap5IwjdQwBpKqHubAU4QypxGBMkXQYMMYY0xkiYsmZXwy4DCOVwmi3XPEPzS+EdfDuf0AKKoHBscZ2o80s2hJ2pziivR5LNYvFWOroGdF6W01YmiMA1C2U+3xXKY9kYF6iOS1LocANhMxNLGfB5CXlhaBaw+p9Jn2BEMV+nOUukiIl5aRmlNXaitBd931b1re669tevUZQLMsvUc7HzSFzWd8eptItNpiE6.Y7zEFC0SgW8P5m0TO9JOOt8YN0iO+e6tm4TuB7NmO5Lm5UjS8z+gm4Tuk3Tu89wm4TuR7Nm+jm5TurG6A6GV8+aNtp2g7pGUaCTO5AJMH6.a9XHJBaSriLfGZkrSq.dn0lNsB3gVs4zJf4qeLyidJ.vCshvoU.ymi+g7430OkB3gl09IpEN8GpdFwJNlcrP9w+t4TH2qC5Xv+wpoePZaXr6x+B89+1GSeTg3yIVk3azbvXbhAfQAguPvXuqfvzhruZdD.Om3F25Kn6avDby+BgukzU63tKd86GL2OqXrWsTLXbsNsXuqK5GuIyE.s4pHaSYdCEkfRXE+7+qCzoDT6Q3g+ye9jADzheYRrMKDQXl.NJlbPWJbL9vVuS.GkRNFKmjP4jCpRZnFh0GK9O9ELdTSNLJoPqRJ3pjBuJ8A7e6q+dLdRgXkTPVIElUSgY0PLq+q91+dFOovrZJLqlBypovrZHlE9n6+mX7jBypovrZJLqkByZgX9v6+e9HFOovrVJLqkByZovrVHley+X0+BimTXVKEl0hg4M1X60sQP.DKXaxQNXS4ni0YWFiFUPPvDj1UDhep4zw0.Cg511XqfvnInECXskosoPpFNHrRLy+Ed50oBscldcpD1Ie9DQV7bNw9uxT1EGp+6zLVv7U6.YcR71tNTupKdWB9A8xLDki9oUaxKxzjoDeczt3fqoTfQ4ECZW2wskzKigxjzBDJGwUd6uOpW4s1i7Ud65F9.D11EY601wCqvOxI5Skuu0v9criyNiTLtnp2Ff5ww2EzCIpxSrJxN1fAsiMRUHb6X3wWgEnTCCZi408L.kkZ638Up1wxCGbsRT3ELhrJO4WA4ZBqKFwp1N4Qc6+TNg29uyep61+8TvdphcAEyFhwZjVssvqauK1xAnPw3yC6gL3D7gTiGNUww1ocSGaRrE5snaynQCbL+mApPq36ineogPJuf9VXKLxiKD6ap+ZvNdQtUX6o8jXKTF6Kq4.Wu9ZhL3JQyAH8z6dgm7L8dgG8nOHE3o6UwupHjJVUJXoT5Km0xmD00eRLGsPFtNugA6BpPC5uP.EPusCtb5YEqPaK0+d.IJJunL8fyj2vvf5ut.T8YvxndBjQ6DHSgSfLEOAxrzIPlRm.YV9HkgVodkN9NsX97.gpqy9F+Y31Uuv+y1G9VS
            
            ustkU 1 Reply Last reply Reply Quote 0
            • ustkU
              ustk @A Former User
              last edited by ustk

              @harris-rosendahl

              Line 53, column 35: This expression is not a function!
              

              Can you spot why?

              Once this is fixed, you'll see that anywhere you click/drag, all of the 8 parameters are changing. This is because you don't know which point is being clicked/dragged.

              The reason for this is that the overall approach isn't the good one.
              Don't try to set any parameters at first, and just focus on the widget itself. Put your knobs aside, the parameters will come later. For the moment, you need a way to store the nodes so you can find one reliably when you click on it based on a certain area around its coordinates. Hint -> store them in an array of objects that represents their position (but not only, you need to know if the node is clicked or not).

              Then and only then, you can start to think a mouse CB that can detect where you have clicked, and resolve the "is there a node under the cursor?" question so the node in question can be focused and updated

              Then once you have this and are able to update the coordinates and repaint the nodes, you are ready to implement the parameters you want

              Can't help pressing F5 in the forum...

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

              21

              Online

              1.8k

              Users

              11.9k

              Topics

              104.0k

              Posts