HISE Logo Forum
    • Categories
    • Register
    • Login

    Everything is a Menu Everything is a Button Everything is a Clock [SNIPPET]

    Scheduled Pinned Locked Moved Presets / Scripts / Ideas
    5 Posts 2 Posters 140 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.
    • rglidesR
      rglides
      last edited by

      EverythingIsAClock.png
      I wanted to create some kind of collection of my favourite utilities while also creating some kind of framework default project for future stuff, and then I drank too much coffee and now everything is a menu, everything is a button and everything is a clock. I reckon someone will find some useful bits here though. There are multiple pages, selectable via multiple sources, an infinite knob that's pretty easy to pull apart or add segments to, some pads that change pages while playing notes and a broadcaster that opens up a potential user manual. I'll probably start adding some utilities to the pages and might update this post at some point, I've just started working with code so I know how helpful snippets on this forum can be for someone like myself. I'll keep posting random stuff. Thanks to you community members for posts that directly inspired this weird little thing. Ima keep learning

      HiseSnippet 5345.3oc28rsbaajkjwFNlzVYyjJ0l8gspEqJuSQYqHia7V3jDpq1prkkFKYmMiKGFHvljvBBfC.jr0jQylZ+B1Og4SX9C173939ILeB4g8cumtaboabgDRhRwNLojI59b5y09zmS2.D635Xf77bbKUtxdmLFUp7sE18Da+QqNR2ztzlqUp7mIr9wH2S7GYZOTzzSTWbUKGiCJsxIi087P8KUt70d.F3xUtdIxme9qWQ2R21.E2ToRO2wz.8XyCM8iacmtOxzxZC89n8LOjAZstaZ3XupikyQ.icMAoRi0MNPeH5I5Xv9.gRkuw58M8cb20W2G4Up70Wwo+I6Nx401T3etom49VH7Exk1EFHZya3X0Gyw3VKs5HSq96Dp.7JUprvNwpiqQUGepvVl8MiZOVs7wjNDiwfUeT9C3YuqwwdxrrmDC6kAKUlgktNkk9MB6Z3ZN1OtGL+bKgMs8QtCzA0NKqPgszG7IsEV0Afv1eoC0O.sgKbQDF0pKIsnH7mE5T892+y+E6yUBwWs2i6scuU68ndju7fda1a0qLhmqj6hFRmXI9khRcpB9+d9hGq6J5OBZYc6gl1nkLbQfC0dt51dicb8entceKjaMvp4OZIOjOL00XKm9nZvk63hFfbW+MfI1V2JBj0s0AOuG3Z1ulu6QnEE0VfiZvDQ2TDD2316+JjgOlVX3VYmshgZHx+gNd9qL9Pb2UMssfVEGbjsguoisniMgb5KJt+hhFKHV8GpJBe.2QOGKzRicMs8qM+2hF+EyKdOwZTsv+FvXvfgAj7GyAL8H9kfRZgfdniF9yN51HqlXo745VGgpIiGtfFGF13BrCM9yirc1WNFoTvmBTiQ51CQ8qwzAQCsoceSCcXZe7fkA0uKPcLeQGqDcrPGw7FSWzXcrhJeplfuNMT0QTa26dcpdJXbndAaSLIqRPHvOfZktTB.v3eQ0GfqSXvHPArpygicrQXm.Z2yy4RxKk4hJOXye4HH4YmwANS22NXC1ScNxGlNTKb5PsgKD3xNboAvxeKaYUS5MRAeBrcX4VGD0W.K65gEzuwru+HvI49hJhetnljD9aKJF18CQlCG4G0eqft0zjHC2hPKurS.Q8vpM7RqoIKki.N1FVl7ovzcv+vBgm4pRgHh4dNvbo8suunVVTYiMVaUY05SgJuP+ERubQQ8WHS9qxKgYDOG+M0W9RZXpSyTKSZYUcKq8gjDhUyQwYvr6a.1sVnxJlakkfYhxjHBc3fMAnzNICxahwfpMHfF4H7l.XIsxLk8z22WY8Y81s258dZuda0a4dOo2yf+93d8VAZYa3qqAqmtL.wdTX1irt5C.HV+W9UViij7LOj6V51GoakbEtUbcz6an6AKVVs1OLuY+4+Bw4223oHOy+DZ9EEmW2cnGz1Kl2HLhCt0iw174eI13FO1Ko66qaLZOmnfSTWi4W4HeeGaYLhym.i98i.FRqaLx0+jGaBbiMlele+gjoZXDGQlni+Fk2D2B7vhxiCZOx+2Dlc8FX81vwcQQB2t.LqnhKx+HWaZC30RkE+ZQEIwuPTqkzkkuJicfimKjoHoTli8XbftKgsgC6zlm.MtIxKGU87oGiIavnl0LFI9NlfsJTRxvpAooCg3IMSsUWDV6DNWoyIykvi58gncOBhgsMD9Z2dPjqsgK1iDICBosCI9153ux2C.JCV616gvW+F7WiwX22kh1QRvL2zkH8xmn0i02GYkOFzt4QYHjxnmkYezNO4w4hHKPXzYve0SzswE7.oHHI0VcM0NI57gNGSpGACglzJZq2fC+szGBjPO.fUWURtAWwSA8yNJq2PQq4Fbix2hrrbdcP+arwJRRxcR0M6XrQqUaTuE2X7HzIqXoSKeCfPoE9+5jA.bRjJ9+3FmG3X0On2l0azTiiSvcxhe60aK0XYdMpy3wQ82nk1JZJcR0M6XzRowJMpyMF5tFq.b5PWbJZDvpKGJPLfMFGovCmkZX8b4kQO30r3zfQo.vnV.XzJ.L0K.LMlegpPNyUY8dmTR8UyJod1JXG.EuTCq2LIk3C+yuSrA7O26dKjnN1jYgFm7eCHmXy3B.4vv3HWWf8oYcCLdXe3JmSl5Krlu4BLTD+492WbMDrJxg3h2MfQw0SbecOTenzPpslFdmCI7faFTNNGCfiF.ye6vAM3tfhQQNMJAyWmDVJowhNAcRHolFov4iSBMszngmBNITpmgdfLmKFoSonvq8SoUIlr9595KMhNaEml1u82Jln8MwqNmo8rHlGRffNoPqn1oBgdtFrBg8DrbEB+bLgEB2bskYfclFU7mji.Wv0N718SY7QR5WvVRM2XxrgP4UYMj9lzhYENI8NH.kZGF05TRdboB.tkyQdnz0aiXihgiGETcAD5v0CA4mVCsza.ZljKtqXC7tdEsIenkNDSfmMl0eluHaZVmc36koX671ZOd7hfhlXCFrZy6idCNQ8sz8GsDwBEfD6ndzXX5GhrHgW3XJxGSNk2P1yZCyWNGn..PzukurRoF0RkdiWIJ.7hbtNV0xpTPhWSBCbZkEGDwDmJqET8kmlq5ooY7LfKfWIKhxr.JMGjkrP1C8GQWLkQqS68ElubIuQNuNTOLPGrMQ93b6vL0m8qfgGGpkdUBhjw3SfimF38TMdZzuZNTkU58Lndn8H0EsaORoQaR1oGx19fKNBuCPPO2Ce3JK2ai2EJF5wKuQucz6S29ElpTn62vicLzsdriyAKa2eCDxBOohCCvgeHt9Y2MBC0MeeW8WumyPH1JED1xkGtnny9uB6kTAGEbeeaRjNftPyKoCz7EJPdkgcRi6x1qZXu3p2CJM+KEq8Zy9gQMgx+GQN5GxU3.4LcFf716+pmGD.FOxTW46J5ABqo8vMzM7cb6TIxwOBFfwqToZkP1KZYKL.l9nCoMH2QrRP3tJgw5J.ZJcvvCvwrXlXsH3AMekbVBKT6rHc0hSWHQkH8I0gjW578iJ.g+StvqjM74ifZNHjOFZ4gQ9nTOWTxGGnLlWVsZV0dfUZYE3D2NIjIxO0bCtIFjX2Ap+vEz9bnd0zKCEgRtKEwk3T5f78yMDebdtQiIN0s.gHqbhEY4WyNYz+9fi1AI63zprI6EujAKYwmIReHcYFBHQGmnDKSAtBG3xSCbUNvUlF3ZbfqNMvqyAt1z.uAG30CJ1ECZTyeEo1ieHuTxBgiMCpryGIFxrALYZIox2HKRM4bWhvfYk7y4Lo.G+nzlSOmfLa5Rca2g3rjnjyMgs9.fomo8.Gb.yh.mRAgSsfvoUP3fPgyU8kclq5bLBHtioJgEQ5JhjUDopHRTBogrKLCvwO8GgDMB7WhBlNWFQWmZn04xL0Yr6PBu14pla.ULzz.pykbWiv2XSTt0AJK0CvoO4dECDLQHMEwQvLTQG..WOdbIbzqnbzq.NhX+hXoWkfkhXMLTu3U74a+JRHIyE5vC+o7WRCri44UveSTe.jVmHnsILLVDNT22XDpu39DcZL1ACD7OmFXk1E4SvvS+PV6DHRHciQQCPVwKxUyGnjyNfQhnEo4DK7p0vecNfn1G.KXS3GXHBXGuyO+LsTAlCWG2kZ3qfiOM2iYH73Ug.oAesPovbIvy+58Vn62SN3+0fh8VlbxXQmH16BU6EkZQ54Nr6CRzAX86ORueOvcH4IP+.Km80sn23jIJLLDkbpI7oN95tmrKNkD2rqIjqfKbFG3XqyurqAdjmegDGBviRUs5N53MMqCGTikmJXbvq6Zr2HSiCrQd3UKkVRpUmj.DVyp7R3CaVA96c4vqShwzCDb+sGL.z9jsGFeCHtI9lPpSJZuLtftbAhC5C.yVXUrDvG.Q2bScqysPZhPKnbQ7WIaVapSEw60lPjdwZQjHYoBF5PVuReQpkehF7LOgi.HXn4j2o8LJ0fPX4IS3LOmjLo8j2o97HuxjIeVG3RlTehazedDWcxDO6CtISxOkSJHOFPaxLP5i.JShOgiYHHOjzTt9T72RbRR46wk2wTvP8rN3o9nA5GY4OYtXRmfQlbCOBSyLbZ7jzwxKYXgzcYCk8n3lXgSueeHJZsWvEbibSPlYKz3a2iqyb63kKJl01tHsXTLr6JpjWz1w.HKCRH9jPHAsVAqE7pwrafbmfS7o7vo13JPdI7hMjX7ikWLhBKxtCiIhWmG2QhaGFQlMH9myD78tQgs4Wm.Y2mCU5E2iAZFq1UuAJlmVLhUWHqkZXLQO5rZgB24xLsNOpvFGtBuvPRO.n+7elflgE.IpexknRvJLS5VnSB.O6rjXVSHGtjqC9YZoVl1apw6EriJokDMT.s4TOQyDCI3txKKPRMZoHL.Emu1cEUydlM+mjirLy.KQZJ8glhebNPGCq7tY+LOXN79DNoykqRzoQsP0JACD3dRd1rVZrk9IOwArBZfLJqzDuu4lCp8uFBOEJa.BXx7JmrNE8ZACyBzGDfIsW44tiUL4PmsPoLCDp5WBBkxDDJkoITpy.gpwkfPoNAgRcZBk1LPnZdIHTZSPnzllPUeFHTstDDp5SPnpOMgpwLPnZeIHTMlfP0HVnXDFLurscMBeW8zphI6ZvfL6KXrHOpaYzM4A.YRHVy9nC2G4xp0v.Vp704eLMEx+wzj8oH0fpPX.zwdSaS+sGiry6YKsTfVrToxeT.WAf5SdfN+nfGnS59FTxreoxen.oF2RDFtT4J2H54nMIxyE9zfhOjCBtej.64hTfgHj9zsDiLF2P.GrOB2HTKLtJW.bUu.3V+Bfq1E.2FmObukPzAtDN.BkO6HqbQPV8hfr1EA4TFqe9qKx.TQHX+cyPm+rMWS2WG+fSGLgK9g6.ZaMzwlFH5iQcEg0PdG36LF3nn3ZvLu7lVcKAx2W1crbo2vRyShu3IceMt5j3F1rK8Y+Hpktee2iYe3uKc1HsBKo2r6UIoUYI82dkRZMFR+S6ekR55rRs4UJoavP5tNWojtIqB2c1Q5p7jlb56DReSA5Iwmm1dmi5h2rbbXFbCI3guMIO.b0.X5O8mKhOQXYKSjs351FPYj9HX4Xl6HIbf.kFpxMUjXZlsUVA3l4o6pHD7jikargjbc2+iXt9F+8xAxLCGbaAE4FZJMjZ0Pkmi45AmOQD+M2TynfwvNjQAK508PcFV+SSZm+tT53uq69Ci4UMk1R0q2F3qRTKUEgfS0HgPA.p0td8lMajTnjapo0RURCDJOez3cM+SbKMLVmdOOGIrw57RoUASMunbBo7i+wjRtYJI+Nc0waqcXFuvJK+CfOlkXbCd5Gi1zdGWDjeLMkvIv8rpQUIo5sZztkhVB0lpjb6Vpp0aImTsoozpQilpskaSz7gn7gBMp2rsJmt4V4oatIcpO27u6vNu+Ncmf.jz.2rkhRy1Jpo4zndRni+KohhLt69Ntfy6S06adjG6uMLQQWJesyhroLajs1xfWdFNuL8b0KapyHYSqsViVxMyP1B6Y1Ha3ryh3maOEgirXjP4pzvozujRnhTDbwvuA5f+yDwUwA7uwJOZDaDYgx+A3hPIQnbM3p7jh3IqUtwae6aIsxNsKt0yhATa1X.aI0RQtkjTFgHB6Y16bVcJxV8YjrUuUKMEk5YHag8bAjsyhwpwLRfff1MUpqlk.IoTWp8kgw51SqjelbN+CLh1e6GRtr3ZoVVTqaQWHPod8FpvpVfvOAEF6zppBxMZ1rohLX+81x4P7YZ6dBco0fLCE1Y40xZRW9aQQrr98FWXYMuEFlsx5YP9XWT3uZdwkubVb3xS9t8z1pmX46i8NyxGexqYDcYxgc9EyrxtTwe24BaVyaIiewjO1nqRGewkuvXo4KewdBzepAyOB9jDqbWFbNAleXMXW53m+uOgs1uITd3mVJqxCg3qsaJopBI9mbID4FxswEKTmQ3XrO4X1JOWQ1lfOVf+2fIVQR8mhsW+0S5Fke0+WY17qxLCNd0Tgzren.cmSYVy56XKkaPBGFX4xDNL.HobXZopnnHojwxxp0Aspr5z387Rz8V4s6GBBeyC2t3abPVRQJVJT2f5a5qGsYLrFdpCjbyFsapUZhaWBtS9pw+ccOCFHk26MP2.LPKu2khER4cAKj5uJrPq+jKEKj56BVHs26sPeH1B8z0uTLQZWIlnJS1DU+cMSTwW74auTrJ0uRrJ2tPGtJyt8xd1UPcQSMmx6zs36uYKEUUMn6oYZ3S4zEpd24AtNGMNjp+3+7+S2TpqPpVrjoYOc3bj9e7vyizm+NfNKk9ypPplmP92FetDxb2JzeIERs7Dx+K2hHj7rzYXC1JnHOaDx54Ijeu+rPHytbvYoPVIuPsyIf+M+L32YQ1UK3lTtaBo7mbSIkOoa5nhqM4i777WuUL++YBa6J5Ak.K5cjwHQaGaOD7+4IIk99oKIeUFRh1jkD5188YBNYxKmA47lE3NLgYKzrYDst+kjth2YhAUB7wjaoBSwTam7r8Zo1.bLaH0tToz+d++wBa4z+HKbo1ru9AvuyEB5vDXa1ey+w+XfZ6Y5eB6wml7cRv0K16jfI+JSnnr6uQXG7iaU176GjA+VpzkN+F7FdXNg0GL.Y3GyrWWXi+8I95bXlyJeDkUtkvtl1HxMkIgQ9GIWK9M5GiDe.92uUrRUdBu4M9eK5adiwE9Muw1F9.4CdkC3wMv6hNzbOXtjGaiPDtMbQ+wmhsxrsupC9mArL55m+5M.gLSb1U2+HWh6xxGhm8y4dbsBaSNCuAPt9k0a.jqzYaW7fCylWXIUB4wcMObrEZc6iQVNPKXd7SDVi9rlE1Jue8VN1NiG4XaZvZzeJx20b3PjKKumo.sL9G44CXueVdJxBoy5.emtOFb7zcwuvLNm5B4y7KukLsW+SBT1k7pNP7WGA0u16aA0mMt72L5snDwk+Agj+iBZPD2Rtgv+6u8s+KcWCYoyoz9lj2saYDjeSXVjq+NNV5tIU4WaV4Ne8B6WfEo2e7iwgh.U96SLL8gf78FF9iw23DuCvtze1lGtkNrLB9lJ5IGc3tPlNFH7aBG7ORT3Sm5CvYqPuVJ79ZeWjcexEuE9DzoL95xAcJG14uZnwg5FtN8Ln2N93o+2jzBnasIUlUApqBtVLi6B+Cg7h5YXvOToPT47hn54EQsyKh0OuH137hXyyKhslNh3zVW9HemCoyEKUZqcVm7TSTtL8sCFYZYo+erVeXJB
      
      rglidesR 1 Reply Last reply Reply Quote 3
      • rglidesR
        rglides @rglides
        last edited by

        @rglides oh the pads are broken, but well, nevermind

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

          @rglides

          There's a lot here! I just had a quick look through and made a few notes.

          	if (value)
          	eventId = Synth.playNote(45, 127);
          	if(!value)
          	Synth.noteOffByEventId(eventId);
          

          Better to use if/else, that way processing won't continue if the first clause is true - in a language like HISE script it will make no noticeable difference to performance, but it's good practice.

          You should initialise your eventId (or put checks for if it's not initialised). I'm seeing errors when I load your snippet.

          Your pads are all doing the same thing, so you probably only need 1 control callback for all of them - and if you want to make this more scalable you can use a panel instead of individual buttons.

          You can reduce this to a single line like this:

          const var btns = [
              Content.getComponent("btn_info1"),
              Content.getComponent("btn_info2"),
              Content.getComponent("btn_info3"),
              Content.getComponent("btn_info4"),
              Content.getComponent("btn_info5")
          ];
          
          const btns = Content.getAllComponents("btn_info\\d");
          

          No need for the var before i - this isn't Javascript ;)

          for (var i = 0; i < pads.length; i++) {
              pads[i].setControlCallback(onPadButtonControl);
          }
          

          This can be reduced

              if (component === Pad1) padIndex = 0;
              else if (component === Pad2) padIndex = 1;
              else if (component === Pad3) padIndex = 2;
              else if (component === Pad4) padIndex = 3;
              else if (component === Pad5) padIndex = 4;
              else if (component === Pad6) padIndex = 5;
          

          I've shown this in a few videos.

          local index = pads.indexOf(component);
          

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

          rglidesR 2 Replies Last reply Reply Quote 1
          • rglidesR
            rglides @d.healey
            last edited by

            @d-healey Thanks David! Really helpful comments. I noticed that my pad buttons weren't changing the knob value anymore, because I'd added the playNotes at the bottom right before posting. I think I need to put the notes in an array and try and add the logic to my existing pad logic. I think I can study what you've mentioned here and do that. Still learning and you've been a huge help on this journey. i'm sure you hear that every day though 😂

            1 Reply Last reply Reply Quote 0
            • rglidesR
              rglides @d.healey
              last edited by

              @d-healey Oh and yeah, I agree about creating many buttons in a single panel, I'm doing that in my main project, I wanted to try and do a bit of everything in this little one, as a utility/snippet collection so I wanted to include basic buttons

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

              54

              Online

              1.7k

              Users

              11.7k

              Topics

              101.8k

              Posts