Everything is a Menu Everything is a Button Everything is a Clock [SNIPPET]
-
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 learningHiseSnippet 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
-
@rglides oh the pads are broken, but well, nevermind
-
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
beforei
- 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);
-
@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
-
@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