How to Modulate Gain with a Table in ScriptNode?
-
Does anyone know how I would…
- When a note-on occurs, the Gain Node is modulated by the Table.
- The user can set the duration it takes to go from the beginning to end of the table.
This is how far I've gotten…
-
-
HiseSnippet 1317.3ocuX0rbhaDDdDFgiwNaksxt24n2JtnfXu+3JGVa9KgxKXJKVW6dxYrz.LERynHMXa1T4dtky6s7Hjq4leGxKRdCR5YFAHYgYMT1VtJP8OSquomt+ZY5DvsIgg7.jwFcG6SPFaYZMlIFTc.lxPMqgLdhYKbnfDTPqpxXebXHwAYXr1OJUXrQVj55eeaErKlYSloBgNkSsIui5QEyz14finttMvNjtTuXdu2AMs4rpbW9H.OqYVB4isGh6SZiktkwDYjqtCUvCrDXAID7oB2Yr0.9kLs+mRCom6RjBkQVPfzpQUGPcc5LYuFhPFY6Lamuldm+LyVTG5T8yx.eixPgYqHdNvHyhfT4k.RFwfTVMjdpokc.0WLyhDOaZ1jAGH8vPpNNTz9hLt1rJGbfIJ5gGRZD.BSWv1upTocJ.e7hen2HlsfxYE3r1bA4X11uH+ulei7+V9B2zTudy0l7wDvccIAy0r7zMXQKba1HuyIA6T3Br6HxTGgsexbZt6VN0Vuqi4Hm0jQEG6Shjavccj4J48oOAPQoM3t22rFVfkGJQ5.+7IABpDNF0HW.U05inMLqQBGJ39PccpyOnxg6LxEKRVNI6ahL.4iDmgxCJVHULNde0RTiUZg0X2UH9TyNTg8f4iwLyAiPl5g.iQclesY8d8H1hY.LqYiOrpsgkV51v7QsgvyT9v2JRrPiOTdtMf+t4rhc+.hONfzk2wEOd6PrmuK4D.i6T3bWt8PK5mHo6P70PnhzissGfYLha3pzHk6dhbBcBejfx52BKBnWgLLaOxyBnosIUiPGnyHirGRKWRJKqKrHLGkv+AWQFKKkMhLVdhwXsesIhK4ACUGGQ2iLVWm6CUI4y5cUYzgtt7Kqx87oQUovYfRWGt6X+AbF0VpR6wDjdnGeD7Phf6OgC6hotxxZqQg.QgywLKvY0XLi0NkDDpB75lkJB+Ak4s4NfIyFXaHwNtCVLP1uH4dfhSRPQ6oEoIvZ75DYHlLlSmk.H5I25pgbqEirQWOJkftsL5n1L7ToUarK5T44sD7HYLktOAe5AEdvfKMfRf2mGCuyb4wBhFwfXdSOtybP3yhivId7XAvrw.XNUNLI3dhBbPemJ4c+AqbRtXxD.kClSHHHzLV3t3f9DQXzXIFwVWzqNxa5HWQ.vuf5fguHv.esNcTlpT1MmX+oVSh82lv9KfTTYXI1bYiu4lGrktCzeWMY1ZMZnOvJVYDvtq4dSnQlUXNjqlPPTG33bf42pkOgzH99BRuSjfMVKJKJSplR8me9y+8aaguJtND5f+3.KAwWRCG2OqgjK0oj3yg0kNcHATti5UWSEKzB.f5JE.fvdC.nttc.ro463befQOPfREp3O+0eXd9QETohxgiDbOvhyzVonJr0MEX4PlDkXaYB9Nnn1xp1.cy5otxnEN8tEW+T2bu2TL40EGeja6i1eW+2+KutpR9xO8w962Qb9d6pkgO58cRW2WKun9JeBd3b6qTFtO6qtU5f9RVyTzAftG5NwEHjHG0OEweTNp+Rx2mIQN5VIElSOwGuNcOAT+eWHEtt+e87ClzS.3MUTR1SrzbC2Uxoe9aq8OQbCVdbtX.7lZ2DL68k3ltOxCaYdBIjHzQIUrRVGTgyG5gUuj2p8ua8X7JodX6.9YQS6kESekRCTTwT+lDaX1RJWnL5hatakuZvY11ICUpE98q5B2cUW3dq5Be4ptvWspK70q5BeyWdgxeRmn1SIqIz80otlNynNSN8Pw5f9efqsiyv
-
@Christoph-Hart Thanks so much, mate!!!!
-
-
@Christoph-Hart @aaronventure Thanks again for this, especially while you're away. I can't seem to get it working, though. (It's in my sampler's module tree.)
Clipping
The signal is heavily-clipped.
Duration
I can't seem to match the duration of the envelope to the duration of the sample? (Or, perhaps they are matched, and it's too fast to animate.) I'm guessing the the ramp simply fire the table envelope, and that its timing is irrelevant?
If I get it working, I'll package it up as nicely-commented HISE snippet. A custom-envelope dynamic processor seems cool.
-
@clevername27
I tried the snippet here and I get no clipping. But I can see in your screenshot that your table is nearly flat at 50%, so naturally the modulation signal can go over that value.BTW, it's better to put modulators and modulation processors into a
container.modchain
to get a more accurate modulation signals.The duration parameter of the
core.ramp
sets the duration of the modulation, independently of the sample duration. You can increase the max value of that parameter of course.
You could also fetch the sample length value and set the duration accordingly :HiseSnippet 2603.3oc0Y0saabbEdWIs1VLpAIstn8lBLfn.kNVllqD0e0MnThRJQnVVrhJNI0vPXztCIGnk6rX2gRhMvn8xbceRJPeAx6PeE5c8l9FjdNyr+Rtx5mH6zJCXqyLm4b9lyb9ccmPgCKJRDZXV4nwALCyEr5N1WNn8.J22XusML+oVcoCC7Xgjc7Oi4I.l1Zb.MJh4ZXZN6mg7YN+bFpe9O+9sndTeGV1RFFuTvcXOmOjKyVsSq+.2yaWpK6H9vbb2r0dNB+1BOwH.SyZ0vHf5bJsO6ETjsYrL9bZz.CyOwx0tocu0cnqttcykbbVZ80VZi0bXzd8XqZuxZMWuWydTmFKYXducb4RQXWIUxhLLmaKg63tCDm6qUvK4Q7S7XHgsQWPy5k2U34hWQbUi1C3dtcRLVQFFlVcxLcypMcOzZetKOc8LS3Go1fjch7FPyYJBuYK.O67vqQN3UBjLyAo4zP5is55DxCjY6f34Cr1yWxBAySw2RMuFy7usrZK.N7k0GROksaHPjdhZq1nwhD3udzypTAdqhjj1hgmH1RbgM4SIIGrOSBKGH7AhZUS4nJbJ8g1eyNcA9ictP90+59zfmyij0xDeLKnzU9lY7FVqZxlYBVeK18qJv+NfagC.D8lDXW7.U39dbeFo2HeGIW3S1EbJSgQz9L+Q0dTkuox7o3udDCjBWxFFUcQRUTHyWY9dhvZbPcMdFgS9cpqVcOlee4.XgG+3GUYdPF4DB00cOPD0PFeE+0nPdSk2ToLsWBHw3iXIgV6PgWMmDS8hjyndiXJPmXZp6IntoxUqTEWOwFU8adVkBWuXY1l54cBD6UaZ0gfpxSeJ4KYDeFykHEjQQLBkbRHnIGZD3pfK1iIcFPjCXjHk1IZahFhKRNg4Pwyw6QNmQbE.m7HB2WchgvsmzdqEQ8fz9ryikxPZ.A3yWHAShm2XBd8.Tb9.luVkb+9SqUkjhDnpX9tjQAjy4RM5T3gzKTLTQFDxNiKFEkouXOK7lk4jBZEUzmB4E6CuO0cBYPD7VYlfZeSEBoJ2s5ukTsriVcQbeZX+HfiWUkcF79ggsnikV0g64hDtTIs5qUbKoZt0TvyNXmjnBpV4MpHlRzScpTRcFbjHyGHKrADe5xPFK+9L2DG6KQXttX7IyOK5CeQbTmk3EuEJCvg8zwvuj33VK8FtHI89sHAucJ+0yngjHlGS6kmlZvN1x1MYqZUq+Ip.O7.wtTeZ1IeUiWiQ70Rxrn+2c7c0wpO8ofWbjviUOHjC4lzB.2KMwAFEroTFxOYjjUKaYn.31iBonRVL4UGzz9PXKuKC7Qbi1ERjqzWThfwHrG8rbAuuPHYG3qyq.A8jI2pWuR2KN1CS5U11XYzv21Aq4OZ3Irv7IHPFgREEq+Xc40exWdzQmmOGiB+874xCBX9WVQSi3hCXspXTArJUUp9n3JUI4ZL3tXgpzTOFJXmqshVFewdaCtNIBCjKnq.VnjiWCysgfXGltL37VayhNUJBT7FmpDZL3Zp5KRU620u03Th+5erkpPfg4expRikexlNPRCI243je4Ic8ogria6AUX4NDEEwtRiUKg0iDC20SHBOdiF+lHBPQTjFCof1sLmQ0zzT02gNKDti7nxhsafMkEuA3CTnFOVG2OhKGmuos6rdPttP7is5vgD0kiwYJAivq76BLF241OwR2ePF.myZ2u5cSaZ4U+uRqdnEaIjhaHjdMNokBCUR5719tni6fqcG2cBYpNF3+4br8cs1ZDXiBKt5eukRUaNTLxufthQ9gr.H0M7Lm6LOn0gG9YghQASdJRKkSwQgPWGfoH+c7.eFXqk4uisCEQQ8fqiRVQ42pynv9nsJakCgROgQEW6EiFhE77YdXVOSSXouHhguubm8oP1+KxysRKMNhpdigwPTz1SPuzDzKOAcyInWYB5UmfdsL5z5vnmQcqaTNjISwe+qWJdPYcnf4IGmaw6mBD8J4GSJ8IQA6biXUxvJ26c07Syc8BLe6i28+AoZKLt27IXrKW2rS7j55A32l0iNxSlrZwzI6K7EACD9bmhALP.P+9rv7XuzKzlXykmlsxCacHzIFMJWD+ut0ygVkngEyCbirE123QeK885WZogKAyAR9g7t8d0M6sVtb1qU4x6b79iPoyxdlqXkzetR4KXkMgeYeaCyu0Jq2XXPu.nkriDc7niqoGI4P.ivnodBmSwRcS2PcfFBagbTyIt.xsou66cG47abnXjDpWlTyxBJr0EJl6vxWdCafLltARi9HcgAgUDeO7S7l1I0BwMsS1LqyciWvjmKBOU8bD+6PEEz1+Kr70zGKw7+oIg1zySbdGg23jzLpqGTOFcjMuuUi5vezbgMmyicwgGMMYx8HoeA8k4yoQGQ4dX+hcGEASc3dfeWfYUqPnS2KTYat+tTGvJOtCUN.Cjv4V.OUXtPmTO1KC3Y9OnkW+EHuLdwWtNzPfGXx+H8cDQPRiUZKda8.6pJ5lyh6i1wXndO82laHTqSisBP+mmC5YrTFDyKhqKDLyAgJVCEtkffGlGAIbTF.xIfqq9mKm9umB+E08GpzMDNot6kp03icUZL2Ph5DJHEj5bFspU0ndodVy6AU2kLCir7tGQgNKkQwyb5q+fCwOf64hm.7.BLRcDzqokRNuCCiBWW0YJbc+.35Fxpq1n76pZqq3tNGF+3wtHYL4s4QAPlNci7QSsBPumuK6BLE9SrKBXvtkPAwT6y8iMQODhdsan+wt4FMrsW0FZb7hWVXZ8u8e1pqjEnmcnzinyc2gExEtp4Sh6YIVN22BNAljXjTLDrlwUn5dJ6bscKeoZibP0JCpVXhlbXyxxFn0wbOWHBfDwgRiBaVDDZAbikd76+jxxd5qiQdeyx75x617.KUBH6hNNKXAxaPc0Vk54jdrqJNYBeGUK8Qo+FFujyWYGnDmKz3fhayUrVd05E+4rCN8KauyiWN7qGuVaEM7W8dbGum+0qvC5aKNXh.jBlhBQKvDkmVZzhZixiVTacUQK2jv79XxsoByg0Lt6h4JZCtzclJI1BV6E8RbWGpWh+LTx7Gr.J7JzepxCwuB8urpBwm4JdEl45j04AfspwjwaH8UjkIe9hel0J0atzRKsVi0Vq45MsWtwFogq.LmHzrPzagb.2+xyA7.Lq0MDVHCK2vtwx.Carw5M2XsF1wIo5NTHj3+4FY0mVpwTYohWz38ukaAqCYQrXbTP3kmG8x7tA+wbXGkLLjQ1md23tu5SJ+e+e4eMmwe6ezprj0kWrIeFhaVeAEJ2cqBH2RHNcHU0K9s5igecG+7Ci+PjDcIx+2dV4ErTe5LB9kN+wBpuOlHKYzS7IO920Uemk4iUnUeIcOFLdR9OKPDT0AgDjp88BJGRcBEGG26Nh0GnVAPoupnv7V6izjo++2w.6l+XGmhhZpCtzs8fKeaOXya6AW41dvUusGbsa6AW+pOH9IYiKRh45f9U6ri1AzbmTGvYM9urhleDB
(The code in this snippet assumes all samples in your samplemaps have the same length)