Can someone explain front-end macros to me?
-
oh nice example... of course this prompts a couple of questions:
can I LAF the frontendMacroPanel these days?
Can I LAF the little green numbers that get displayed on attached knobs? -
..and meanwhile - the "usual" problem here is the tree structure....If I create a Macro Modulation Source in a sub container then its modulators never get referenced when assigned, unless there's a way to do this?
HiseSnippet 2039.3oc6a07aaTDEe13Lk7EsEQQEg3fUEGRUiphcCEPHTbqSbaDwMl3zBH.Ulr6X6QY2YV1c1zZ9PBIPHtgD+C.RvAjPhK7G.nxA3.UpRbfKHTQBNvMDRbtLerq8r04CmfSSbw9f0Nu4i827l26Mu481oR.yFGFxB.VitRSeLvZBX0lTdihMPDJXg4.VGG5grCXgkYNQtHNgV+4orUCAmuoOJLD6.rrxbAYisFcXf52eM64QtHpMtMI.3JLhMdQhGg2lZkBOOw0sDxAuBwyn0yTXAaFsHykEI.VF3z.ej8Zn53KgjMaHHv5Py6P3rfpbDGGBrF97LmlUavtFU29qPBIq5hkExApJFHM4RLWGIhkOCJ1f35TIgADBDCZk1riLZ1wwfkINjVzayVNpphrs6gI+vZnzvKSJ3kyDdSa.uM.RVFPZXMjdHXU6.hOucMR7LNbAJGGTCIX6lPQ2VvPSXAKxDsfxOsGZMbo.QgV8XxyN8zSkU72Ie1wFadZcBEe5PLW0HL0orR.XxW4DWNDGjcwRKk6DSk8DySWG6x7wxmWFQcXdxmpFsprE4OwqcxmsVD0lSXzrL5kXb7RzIO4Xu0XiN16LV16tpZ01v5jPNf45hC1vpkhMAaUGmjF4sJNXprqibivsZnfWldABt4KPlxO1ZNnQCYzEnD9R933xctDBhY6hEyLwnR7DWsTd33kxptDGb.fHVwd.nT8JGPA3XUhu8iuw7E.ccmympye5e+8+1rcemOS527Te3uNK3xKLGhijRiwyEw7yGGvIRVm0b30Ep1ZYyQgygCWiy7Eb3hLOeFUNysFmGqLoeokbYJCIqPDrX4q9HPSR4.W2zxQy1Ed4BWi3vaHVur9.K.nAlTuAWVZJqV74D81TBuUPTrKX05I1TF8PIiNgi8ZS8N24NuaZp4MIywWm2YiAFyzQ11EVi4VyBsmaEd8BdlFQmofGpcS+vepfCtFJxkeEiUGQu9DQubbbwUXgDone6Z9nBl3Z3sUlYSvEfriFmyrYiys8K.5zVlvJpdakzlVk6mjreiXNYZOSZyhJlqMM2u4ts2Nb2Yus81AanhaWB2GBVgvsarw3cnM.uBEo8Z7Fu60CBmuVMrMuMXGFV5k1xsp54PYDMTNNToH1lKUUnEI1qRBpGSWW11UlUWatsvKia0sdY320dYXkoq4E45Zdg0D6UdUbOUJ+9IkxL+uWobqXciFqMlamuDmo6TX1F+bOpFbPnvOxXYOwSYaA0t.XkBvuQDlZaP7nEjl.VH0NjuHZcbMVfWryKs59h35hWjIkUvhs.EmLx1jXUOFi2P40hogkiUXQFyedJRL0cLaekFnPoqtBWqME7jC6JrxnPg23EcY1qYV4B0or.r18YS5EiB4LujIf5PQU4XekiZVuB7rybZwuZmR9+yTT72YVp2TFz6VyGpKEHeX0xeq0YofvAbqOZD2RHrO.wIJ846oJ86fC2dDM3d.34t3bUWN1Ft54rIGzLsdeYFk42fQI1lpEKi4Aj50wAlHdCmFmiyQ1qULJX8TdPLG1F0rCp5Fa56flxhXAzLa3EEqFcLbsH7neQgpB81T9w7xe6xXWrvvf4nOuszSI7disVXWJS7fP8jLqx71Aa42CmfU8JxAavNATIVzOvWOBLVfsufwdXXrtT+.qMwj6Y1uL4dHM3FApidW7NW5B6HustbHdEj58aXHVMLJxZeRjQssWYBamxhmomJJjaOST3I6SDYOaeBNep9Db9z6W3bYVjLpqkQBulttvyfKE4oi7h.iTJ1UFZbqgjG2PWdZYY0YVvTGUg6H9EWYNYYq3JykT4FDKnNxwzDpbSHJgCx0KRrTuJjO61DIAGDxmAwg8.VHeNRJcuKDvh7UH4XZB3PhL4dJ52i0A0QJoT4Tg2.EDPvAKPcvFIT3u9lVq6cTykojPwQBUP4bdrHJOkKJ5ZmCyinofdbEU8CvnTAqQh9pXATcTCYXJ47L6pzGlVcxn8ai4jQFXNoG516nIXrJwy2EmDcgXaHyoSyVKp89PNXFnvNN5+STXQwtfnf8tS+a0kKWOp4o+yNHv+2+G3eYXIjlG6CBWoXWLkA6CHP8+RNNyu+liycugjA40bf4s+mjWycbvf9Omiy76pbb93Cxw4fbbNHGm89bb1ujXf8EbNSeBNGDc8AQW+94nq+HZdw3P4Nlpf5oXCOBLYGzrW.SwAclTu87CcrjMW.gUBPzPeVHNm4HeW0kO8WOg77n45jTpVImdkDSOi1MRgDh4MIVAQSMXhxoFoxjTe44Z2azAAboPawjUx6R4sSjaH9EkeS5Fi6sMHm2j7EQANo8uBzCOO1gFbdrAmGqO57XRYvq2+DXwiCEl.xmUsbmc+e89dwdKCdGc+6PcIIups9ZVoRZihhX8iptzhiCac44Re8r9gu7Ej2gGxUssSFLKK6j68lyU8QAhAfKSuv3x6Yi4E8ynNnUF4VxIDtp9slbobRc0h..yqVjPuxkcMYwO2+4F6m+raMaCR8Fxx27Gk+98YCWCeMylKNCuur7acru5B+1a99yRnqiC3ZM.YPYYT2lxmAo4.iAakTk0ScIlj.JMC3t5YquPIy985e8oJ2aXbCsoLt7cGiSyn9kVLtu6el7U+na7G8NFWxkpbaYb6NFf0lx.xA15KkVLCHo1DFPR0ILfa91+4S8dd2b2x.FBtSkXNnzCoWVmKhy7z6UH7vrx75vWY0J1Yho6+JNcyjM
As you can see Modulator 4 is assigned to Knob1, and it shows up as assigned in the frontendMacroPanel , but it never moves anywhere....
-
@Lindon in fact its worse than that actually.... the system attempts to apply BOTH Macro1's to each control....
here Knob3 is assigned to Macro 1, but there are two Macro1's one in Macro Modulation Source1 and one in Macro Modulation Source 2..... so the knob moves slowly along with the LFO in MMS1 and at the same time jumps about(for a micro second) in response to the values in MMS2:
HiseSnippet 2091.3oc6a07aabbEeVQMN5qXmfZWGTzCDFEExHFFhTJVMHnPzlTzVHTVLhz1MHsvdztCIGncmY8tyJKlzBDfVTza4Ogdn8PQOz+EZQ60Zff1C8RQgKZygBzC4RO6Ner6xYM0GTJTVhNjGH14Mer+l27du4Mu2N0CX13vPV.vZ5lc8w.q4fM5R4cJ2AQnf0p.rtLzCYGvBWm4D4h3DZ62mx1JDbqt9nvPrCvxJ2skM1Z5IApee4J2B4hn13dj.f6yH13ZDOBuG05kdehqaUjCtIwyn0KUZMaFsLykEI.VN3B.ej81n136hjMaBHv5bq5P3rfFbDGGBrl7VLmtM5vdBU296SBIa4hkEJ.ZHFHM4pLWGIhkOCJ2g35TOgADBDCZ8dribZ1wEgqSbHoz6wVdCUE460CS9g0DYgWtLvqfI7Vv.d6AjrLfzjZH8lvF1ADeduZj3YV3ZTNNnERv1MghtsfIlyBVlIZAkecOz13pAhBo8X9arvBWKu3uq9dyLypz1DJ95gXtpQXpy5JAf4+nqbuPbP9ZU2nvUtV9qrJcGrKyGKedSD0g4IepQzVxVT7J+nq9dshn1bBilmQuKii2fN+Um4SlY5Y9Iyj+EqpUq8rNIjCXtt3f8rZoXSvA0w4oQdagCtV9cPtQ3zFJ3kYWff6+Bjo7islCZzPFcMJgugONtb+KgfX1tXwLWLpDOwUKkmOdorgKwAG.HhUrWCJUuJ.T.NVk3QWRnR.F3NWLSmeVo+xyVYv67hY57m9aq8OVAbu0pf3HozX7bQL+7wAbhj0YUAuiP0VKaNMrBNbaNyWvgKy77YT4L2ZVdrxj9kV0koLjzjHXwxW8EfljJ.10zxQ2dE9vROg3v6HVur94V.PGLocGtrz0rR4yI5sYDdqinXWvVsSroL84RFcBG60i5ye9y+zrTKZRli2k2eiAFyzoNzEVi4V2R8lakdTIOSinKUxC0qo+h+ZIGbKTjK+9FqNhd8KE8xwwEWmERjh98p4yJYhqIOTYl8AW.xQZbVb+Fmm4WBzusLgUT81JYMsJ2OIY+FwbxzdlzlEULW6ZteyKZucxAydausC1SE2ADtuIrNga2Yuw6D6AdEJRmz3Md2qWGtZqVXadOvNIr5O3.2pZnCkozP4xPkhXOtTCgVjXuJIn9V55x2qx75ZKb.dY74CpWF9CrWFV4FXdQgAlWXM2IkWEuTkxeURoL2W6UJOHV2zwZiEN5Kw4FLElCwO22PCNHT3GYrrm3o7oPc..V0.7iivT6LKvRS.qkYGxGf1A2hE3E67RZ2qgaKdQlTZhEaAJNYjsIwFdLFuixqESCKWrTMFyeUJRL0cLae8NnPoqtBWqMwkbXaxVGEJ7FurKydayJWqMkEf0tOaRubTHm4kLATGJpAG6qbTy5if2XoqK905sk++tkE+s3FCmxfg2Z9DCn.42Ps7mtNKEDNia8Qi3TgvQ.DmnzWbnpzeDNb6Ezf60f27NUZrYrMb0y4SNnYV890YTleGFkXapVrIlGPZ2FGXh38bZbSNGYuc4nfcx3AQErMpaeT0M1z2AMkZXAzLa3cDqF8MboDdqeSoFB81L9w7g+gMwtXggAyQeUaomR3SFasvATl30g5IYdk4sy1xumOAq5Ujy1fcNnRrXTfudAXr.6HAi87vXcoQAVahI2EOsL4dNM3lBpidW7NW5BGIustWHtIR89MLDqFFEYsOIxn1NrLgcTYwKMTEEJbhIJ7NiHhr2XDAmKOhfyu2oEN2jEIi555HgWS6J7L3tQd5HuHvHkhckgF2ZB4wMzkWPVVclEL0QU34hewUVPV1JtxBIUtGwBpubLMmJ2DhR3fBCiDKMrB4ywMQRvwg7YbbXOiExmKjQ261ArHeERtnl.NjHStmh9KYcPcjRptdlvafBBH3f0nNXiDJ7k+9z089p4dTRn3HgJnbSOVDkmwEEcsUv7HZFnGWQC+.LJSvZjnuAV.UG0PFlQNO2wJ8gYUmLZ+gXNYpwlSFht8NcBFaP77cwIQWH1FREcZ1RoN7C4fYfB66n+emR0D6BhBN4N8u0.tb8Vlm9O+3.++pef+kgkPZdbDHbkhcwTFrOi.0uJ43r3oaNNO9FRFmWywl29ZRdMOxAC5qbNNKdrxw42szfliyucoWcxw4xzcV3F5bTxcZdGcNKI25AarqNmkebst0VNMGlWONmla19wQ55W9CZ+339iat367tiyw43bbNhlXfSEbtzHBNGGc8wQW+U4nqeIMuXVnbGSUP8TrgKAS1AM+swTbP+I06D+PGaXyEPnY.hF5yBwELG4WnthY+5IjmGsP+jxzJ4zqpX5YztoJkPrnIw5HZlASTNyHsNIyWdt18FcP.2HzVLYk7tLd6D4Fhef7aR2XbelA4hljuCJvIq+Ufg34wN23yiM97XiPmGSJCt6nSfEuLTXBnXd0xc9S+06WF6sL9cL3uC0kj7g15qYkJoMJJh0Op5RKNKL8xyk4FVA9lO5Cj2gGxCssSFLKK6j68lyC8QAhAfKSuvrx6Yi4E8ynNnUN4VxIDdn9slbobxb0h..yqVjPuxk8DYwes+2el+1u5yWoCocGY4m9mk+92qDtM9IlMWbFdeY4O4h+ta+O+3e1JD5N3.tVCPFTVF0sq7YPVNvLvzjpjgAn.TVFvKzyzuPoL86+9upLbXbSruLthCFiSyn96oLt+z+a9e3m8G+hgGiK4RUdnLtiGCvZeY.E.G7kRKlAjTaBCHo5DFvS+w+mk+odO83x.l.dTkXNqzCoWV2Lhy7z6UH7vr9p5vWYkF6Lwz8+ShGMSz
-
@Lindon said in Can someone explain front-end macros to me?:
can I LAF the frontendMacroPanel these days?
Yep, drawTableHeaderBackground / drawTableCell / drawTableHeaderColumn / drawTableRowBackground
Can I LAF the little green numbers that get displayed on attached knobs?
drawNumberTag
If I create a Macro Modulation Source in a sub container then its modulators never get referenced when assigned, unless there's a way to do this
I think the issue in your snippet is that the 2nd LFO was added to Macro Slot #1, which is already populated with LFO 1 in the first Source container. Try slot #4 on the sub-container:
HiseSnippet 2153.3oc6a07aajaEeFIyr1JdSxhlhrsmDB5Am1.COxZkiwhBONRVNBwNV0RNYS2V3POCkDgmgb5LTNQcaAJP6gda+SnGZOzS8VO2z1qM.AnG5k8PJZKPaOsW1yojCmQhik+PwQ9CkJAXCwG+5Ge78d7w2SrpO0BEDP80zyTuiGRSeZPsNDVqhsfXhVkRZ52.3Bs7oAqSsa6.YXRy6Sn6Dnc2Ndvf.jsltd5UEMVepIzB+7kKcWnCjXg5QRS6gTrEZMrKl0iZUy6icbJCsQ0wtJsNuYEKJoH0g1lCrzf4z7fV6Bahd.TzrT.s6ACZoo+sAy8QEPnElugsMb94sKTnvh2Yw7KZ.aLWd3NFEVLet7Kj6NKzPS+RqXiYT+ZLHCEnoOwco1cp0h9ThbBdHN.uiCRTvPqFelkjKScrEKQAUshsvN1Ui4XAZ7AsZO9WZI+65f0w13tz6wGuVXEY60CUFndpjvKcB3YnBu4Tf2A.IcEHMgDRe.nlkO1i0qFAdtLnBgg7a.46SpPQ1VsTSqCJR4sfvl0EtKprOuP2dLSg4l61Y4+6VeblLqPZhInYCPrvFgH1qGJwLymdysBP9YWq7FF271Yu4Jj8PNTOj36aBI1TWw2p0dGQKxcye3s93FsIVLLkjkRd.kg1fLysx7YYlJyOMS18WUiFGXcBH6ScbP9GX0B4L+ipiyPZ6tCx+1Y2C5zF0sgbdYxMHvguAoJ+XI4fJMjRpPvrM7PjCSpRKhsy2LSGgJ92XgakWIZqrlC1F4qg46XuGPnOZnEB3HcnW86+FO2Taf6btDc9Ie9e5eszf244SzYy+3+9kKosUkRPFTHMFsV3qOOjOCKXc5kP6wsEHkMmBTBErKi5w4vEotdThXkqeYVjxjbRK6PCs7TGyYwho9p.URFZOS0TSmdEdr4Sw1rVcI7jmY1Bga1pmQnm6aFgwX82DBwUgDji1NMiMFM0khmELC41i5qe8q+YIolSkLC8LV+MVSYEO4wtAqrF6X1aMZ9DSWUqu4Mcg8Z5u7uZZiZ.a6vdnxtDuW+JdurscPUoAXgJPuZ9bSUbMwwJ6bH3RC+FMNyeXiyq7L052lF2Zp77njlXEGDEePEeMoZWSX6hvWqcTOnZnY2cPg3G.phYVsNXLl5.vHWI5z.iQmV89fUZz.Yw5AvI.k+jSmilTm9IkS+M.gJY83F03ZH7yiD.4aJqKauJyJq03Hb83kCpqGdCrqG5oOJOGLNgdNL8okmCSLXaOGM7N6T3NSg6Qp7kdfT9F538jqHdlx5lJRaz3LzlZBeYulDb..2WwHYO92x1EpC.vJ6i9QsQDKEhWyTXBnRhS+dDbOTCpuajCJc69Znl7IRkRcD+3M90krTIVykRYsB8LQ0vx0MWiR8Vg.4Kca01WsELP3NK28YUAOwvVmtNLf6wcQGp0tpUVoIg5ijtHqRuX6.F0MdADdSoZLjWnyX5eJnP9Y4eZ7cD+ewh7+M+FCmxuImQYbz64oFPAxuV31e28YgfvEbqORD2UHbD.wwJ84NuT5upDbuGX46Up1lQ1vC+d13KSlTuecJg50hRvVppEahX93lMQ9pH9.WFKyXPqcK11euDdPTBYA6zGUYiU8cPRYMDGZpM7d7ci9FttD9veqYMtdaB+Xd7y2D4f3FFTG8UrDdJgNgr8iQuCLfxDuOPtHyFZd6hs76UhwpbG4hMXmFDJVLJvWuJHRfcjfwdEPjtzn.qM1j67mWlbujDbSBjQnK5jKYg2Hus1J.UGFN+JFhCGlPxReR3NnLzLg8lxhyOhHJ7QiH3rvHBNWXDAm247BmaRaKhr55PtWSOi6YvCZ6Ji7BGiDBxQD9a8ThqaHKOmnb3cVPD6vBul+IpRCQY8nJMhq7.hETeIdZ5v7OvKg7MFFYaZXExmSZxh.W3RVz33p9tVbUuZBcoU8os8Bm8qKIfBvhDxER+LVmRF4ixqmHbEPeeLxuBwFoD7+u7Ozc+suZ1hfC3WwKDJK6RaSXIb4PVaIDqMIAzipnlmOBlH3KBzWCwgpc3PFjPF9TIvuSN1JvaoGpSEiwZXWOGTbf.hLCTRlsqtTG9QGPMld8cK8uk4Z7Crf9mdWTWe.2t9P0Kpmcz03c5+uw38wEc.gUs8G0vTWL1A4G3DZa8bDduMoTL23TJNNkhiSo3HSJEGJJLmAYAYTIzgmK3L+Yv99acZkychRq7jC6zJqoMNsxiSq76XoUdbfsGGX62kCr8Mj7hKCDVNCi+VHa3qChsjlcUDA42e9zN0u.xFVLNDp6CIAdz.jQhSHPt35TBJHA080ibGXOxk7G4f39pF8SJQqDrhxbVgg5gmwDyoRrJjjXv3kSLRqiS7i.WdjnL1daDXwYLB9bhSHa6Dfdj3mGtx39JEx4TIeOnu89OS9z4dbWZbDBGGpoy0cQtpzE6.FdC.WkNW1vsxrmO6kmEmkLdNF74H7QJtsk7UKElnkPJ78OR3iF7xftuEsjOUJq+6WsjK2H51VVwClttU7yHydaOnOe.XhzCLs34pn9t4TpCnmVbDbLgskyZ7aaIwKzQSS8E5v0ebnOUT7238cy7290uboV3lguXoW7WDe9mKErK5opMme2MOQ4O65+tU+6+3ewRXxdHelTpWDDVJwoi367EQXEbzs.X9ElkTuv8uSw6tZS9crd3JkgyskQ014cr1sxph+lc4RU+D726QeeisJy+9d76fookjIlAzMuJ6k34D87sM2GObe8r6umniqemLdepCk2mav38Rd8Wzk2+m+pY9Ah2A2EIde7KkLo7K8e73gCOT+P4gFZG8KLKhGFWaLOLt5Xd3K9I+mE94tu3bjGlBrO4Og7vQJ2dQoGB27VtMi5JOni6ta0UjweQuave3Vf9evuDSYK
-
@Lindon I feel like the macro system doesn't quite fulfil it's purpose. I'm not crazy about it taking over the control of the knob as opposed to just doing what the knob does but allowing user control of the knob as well. I'm going to look at building a new system for my next product.
-
@Goodflow yeah that works - but of course it limits us to "just" the 8 Macro slots....
-
@DanH said in Can someone explain front-end macros to me?:
@Lindon I feel like the macro system doesn't quite fulfil it's purpose. I'm not crazy about it taking over the control of the knob as opposed to just doing what the knob does but allowing user control of the knob as well. I'm going to look at building a new system for my next product.
to be honest - I tried the macro system before - and it was so flakey - it kept crashing larger projects - and HoriZEN is a LARGE project - I'm hoping its had some love since then
-
I think this is a very specific and narrow use of the macro system - I wasn't even aware of macro modulators, I'm not sure what I'd use them for.
I'm more interested in something similar to Kontakt's automation system, where the user can assign a macro/automation slot to a control and then control it through parameter automation in their DAW - linking it to their own LFO/Envelopes/Modulators/etc. if they wish. Does the macro system support that?
-
@Lindon said in Can someone explain front-end macros to me?:
@Goodflow yeah that works - but of course it limits us to "just" the 8 Macro slots....
The hise_num_macros preprocessor definition solves that.
There’s been improvement but it still gets crashy in large projects. A home brewed alternative is way out of my depth though so all I can do is hope it gets more love.
@d-healey said in Can someone explain front-end macros to me?:
I think this is a very specific and narrow use of the macro system - I wasn't even aware of macro modulators, I'm not sure what I'd use them for.
I'm more interested in something similar to Kontakt's automation system, where the user can assign a macro/automation slot to a control and then control it through parameter automation in their DAW - linking it to their own LFO/Envelopes/Modulators/etc. if they wish. Does the macro system support that?
I think you can put constant modulators in the Macro Slots, assign those constant values to be controlled by corresponding user knobs (visible or not), named “Macro 1,2,3,etc”, and make those user knobs ispluginparameter=true. Then your external modulator can control the values feeding the constant modulators.
-
@Goodflow said in Can someone explain front-end macros to me?:
I think you can put constant modulators in the Macro Slots, assign those constant values to be controlled by corresponding user knobs (visible or not), named “Macro 1,2,3,etc”, and make those user knobs ispluginparameter=true. Then your external modulator can control the values feeding the constant modulators.
That might work, I'll give it a try, thanks. I'm not sure I need to use constant modulators though - or a modulation container at all.