Control ScriptNode from UI knob AND envelope?
-
I have a PolyshapeFX with a Drive control. I want to control it from both a UI knob (setting base value) and an envelope (adding to base value).
I don't know ScriptNode very well at all, so I'm relying on Claude a lot here.
The various approaches we (it) tried could only accept control from one source. UI knob > Drive work fine, but as soon as we add the envelope modulation, it overwrites the UI knob connection.
Is it possible to have this kind of control in ScriptNode?
UI knob ─── setAttribute() ─────┐ # (base value) ├──▶ ScriptNode "Drive" macro ──▶ node param Envelope ── ExternalModulation ─┘ # (added value) -
D dannytaurus referenced this topic
-
@dannytaurus Matrix Modulation does this. And bonus thing, you get the envelope visual feedback on the UI knob
-
@dannytaurus It may be a matter of preference, but you can accomplish all of this just using Scriptnode. Take a look at a lot of the math nodes (for any type of waveshaping, adding/dividing/etc. of signals) and control nodes (for routing different control signals).
Again it's probably whatever you are most comfortable with. Personally I treat the Matrix Modulation more as a tool if I need different, flexible modulation sources. But if it's always an envelope modulation then Scriptnode has all you need.
Here is really hacky example:
HiseSnippet 2617.3oc2Zs0aaibElTNiSrRxtaZ2caen.cfwBzrYCzRJQcqEEqum3F6DgHsIAnnHcL4HIBSxgkbnsUCBPebennn+D5Oo9SI+CZOyPRog1z1xp1A6VkGhlamy249YF4dQLaZbLKRSu5fIgTM86g5OIfOdywD2.sc2RSeYz.ZLWaiIgj3Xpilt9ROQrl9J2RS94Ce2FDORfMc1TZZuh4ZS2y02kOa1dq8LWOucHNzAt9J61ZscsYAax7XI.NVBYnERrOjLh9bhXaUPZOkDOVS+QHhcCSCCqVNMNfPNvodWqgzFsZYY1XXWCKRWRKitsLrLATusiKmE0mS3zXM8asAyYR+wriCRYvqbicOviJFXp0G3b5z6v7bDhnXVsMG654zKWAEqooi5MScsTp55yQ6653Nc9YpsOSt.d1ITUf5UJBukJ.OSU3Yn.uRfjtBjtUJjd.pucjaHe1JB7bWztAbZzPBXmTgR5d0p75Jnu8QOBuEcna.EyGSwwt+UJlMT9c27yVC+nus5lLXX.ulO4P5NQvfoj9glF0sdLtaSiu92UspffulhGEQN.SvQzgzHJ3mf4LIQGl34gisinz.7POFg6FLByc8RYB3RDywGQhv6js1.XIS7uGmy9QT9lL+PV.L3gqVXWqly9+PBPjXJWxvc2Jm0v2Nl9a.1mDC3fEgAWO7ley2fsyIXspOBiw6Ffe5t82F6xwG6JPKXi.QIzCj0wBmknGiOHgC5GIEDmFXuCrgjQtARRbLEaSBvNyTrDadBwSgU3pf7V.+0hExlTL2hvIO7cqJrsq9awqt8IfpNf3AtHPDhXyq9dPXGlDXycY.LBdNiSeQvC+5puq5JUeeU7oWZ3vRWSvtHlmGMpzkEgrQWzAeXPh+AB8wQDuD5zMBtkE80QmuutZnncpzqrQVvtAt7WDRCNu.TsLUlHtHCUvV4xnhuHKpX8DGW1qIGQAqtulqiHRsvblZRAPMYl12uqvJjSVfC.WCoQbWg.ouE8HHYWZv2JnsnwGxYg.im5bBQe7rrEofP0VKwvmhJX90NQk8STGbrqCe7rI9mqMl5NZrRV1eXsLLlmf5rdLZGLRMaqKm5W935oSvomvU2flhjcmqr5UQ19p0lIa+4eXshx1G9GmV19a+w0ByM265HjMIow6wXg3ddjIzHSMPO57ZW938nC4a54ZeXt2xLLeuqj0ntBhWiofX7e+TH9ewOi0X2hVipnmQmb.iD4nXCtGxpdGq1s51nSQiwcQVMq2siUmFlEMJhSz0paq10617LVGoqZk+jN5cUw3UA98ZAHgbGlV0LdrXtsbigLXSdgMGLJOWF1BKOj3ESkquG6X3XvTckCepa5Hy5ski2Dxox7eRDIbrqcbgSBkOHId70CCojHQOAvp7njzE2.xZdHPpWBpVFrfQsVcke5zwncWi1lxcMfMZjGcelCs.kEUSgpqAATOATjy88wzWQsgbKJXYJ2fE2wiv6ym3cJJ0a6bivomGxQEwmwk54yucfiBuaU88PyLmotKTwm4j.rrXa.hlkxV.xWVn1qnrYPrKehZyTWa8FLuP7Andtb6wkiwJkfQHO3MAFy5n59nsGNDrpy.3sP67lal1mTY+mjx96h5C0ok8.KY9WJGiEouvOgFPiDJOyKnc3+871Nb3b2NbZf5.HfJNjEWfv8o9tCfzZwpSJb8in+EYbl57aB97ktzG9tc.grzyzmvShjtEq6yRB3EbCV5h5x9bKsWLhPY+kze6s9QWK2+DHxuvsBVIGi8c8C8naGbD0CZdQhweFJKgc9rEcr2mEvBGyBbsUs5ujxibGMhFoh8REn04bhn9a9Le9Zuj5QIpdve0Z6AddjHQ99ETWXdkugTo1qeIJEtXQzH9mtYrW5+qyXWvbhR4+mf5w7lj0K2aj.3WHmJ02EmtBdm2Tz6FZ7IqQnMR.7GItahttHkW5Uh0+0nxtlixMaPWS9nyt2h1yo7iYQGJkzruC8XKDopHGH3gS2mpstmG63YBXF2.IP3JneajQM3eo6ZS4MRScRzSuRBzRaVyL4YzQ5U.VOycZCOl8g8gq+KVR387TR7.hqmnef9IwvMvbdQPefNxpbBq6ykgu2dGhnarI8Hhlhe.RbGNvkfFUydpqghXLyXHTKoO1ixxBMYOnKReXnv3HDRAexqLlBMPh7kM0WAAaQrt7kZRAzxou7gOTVHEAE.3Wn.vYaoLToRh4EB5JP3dngdzSdKYrSbzow.MK0aMksTFFJPiKADHk6mlFxHFAIDpHPymh.WeEM6qRuuapWfV+iE4VFPhFQ4hSWQchrq.GPkQEwEGpk5GjdyrXeFiOl571vbFoMkkhcbaTJa0tPxKu0FH14W+9TArmdFg.F3POIUusMbwFGGpi7vB8hlhPCtZSGAnYe2fb0fH7QaexIYiWA0v.9.y0+P5woFOg.ZTqdylca1wntQqNsMMZzP5eemrxHZCfqkMfIIBHRGA5eAiVFIa1Ki1+bTcy50Za0od21c5T2pS2tZYUjmhll.m0tQf5xnmx7blSf1pUmt0ZazxpYmFcLa115L.03FCn2FZSwlLYtP5sQlRBWDc4yphukOe7gPlvXAqWAAI7D4HNGl+kPllHehGjrzoGMxFBAIilBFAcaVhhp4MjhZETdCVymppQoppFWMUUcA53zvrBFSUcKijM0UPkdZUg4hXSteVH1dTHy4BZWt1AylIQGQuAcRlKvbuz.keTfkOI2W7FAMyZVYZkpBY20tvJf2Csa7qDqZS7xYFT8SohcoEvJT49WI6d.5HrVI6rrB3kRxKqahKTLJFgceT5Uovuj3GVpF5bJVeGn6l.exImSA5BEMWRwM.MOtA4jY8DNyG5SV9nRELomWtPQVNSizOlVcMLMaYpvh6HRoaTH2SomHsim9RUu7Ec8oerKjTV1wUPaGPfaG3LG4jT7KmZqJ3K9YS8EyVsL+uoG8x74leOGDJzmTzsoJZe.+tgdSNkmyxWCdNhq.b99Nn4qfNrKW+DesBa8xZlYdoM4DIsKyLdJ43b7ftDu9kA+ux5FnSWn0LnCxlcLMsZUOq.rXaWsZdykbBDF7nuZJvEJHop3Z7jHwaYLGLSIUoZHSpSZg3k6OMdQrTYAKoG55KRYYDmDL9iUF1qg3Dk33qny7bQdDZcGm+GLpY5yBVU3V5v+WStPY1zrybIF0JErF5Kp0XtTZpBWA1VQsjXZpkmEbv.A7uLP.9jp+1A4+5uJOVHXagaMmV7oHLA4WIMTCCqFcsrZaT2zpiUi1y4c+KonvY8zyDq6Ch01AGk8PTebDsTZOexR4sFMKO+B0l4FL1g9D4i7sP+kEn8RVh3GmdeBOx8Dwick32GzJ14uqWb9i4jM1H2QuOMvQN3+.exVzb5ydBKZlu3GEd3SriXuMKUrPAdG4Lf0MPFvJzyvXbI+IYHdOt2ZaWjTm4f0WzC1XQOn0hdvlK5AasnGr8hdvNW9AE+PbYY6DATvsQ5sc5yvom21qt9RZ+WOE3+oAYou can use whatever envelope shape you want here, it needs to be placed in a midichain to process midi events though.
The minmax node is good for setting new ranges, and the pma node is great for quick multiplication/addition/subtraction/division functions.
-
Also, I haven't used it much to date, but it looks like the hise-cli is starting to support a lot of dsp controls (which I am presuming is for Scriptnode xml), but I could be totally off the mark here. Might be worth giving it a go!
-
@dannytaurus If you compile the effect and you've enabled modulation slots, you can add a regular HISE envelope to the slot I think.
-
It depends whether you want it to be a static connection or a dynamic modulation routing.
If static, then a control.pma node would be the best candidate - connect the UI knob to the value and the envelope output (either from an extra_mod or an inbuilt scriptnode AHDSR) to the add output, this will combine the two with unipolar modulation mode.
Scales and offsets a normalised modulation signal using a multiply-add formula with clamped output.
The PMA node (Parameter Multiply Add) scales and offsets a normalised modulation signal. It takes a 0-1 input value, multiplies it by a configurable factor, adds a constant offset, and clamps the result to the 0-1 range. This is one of the most commonly used control nodes for adjusting modulation depth, inverting signals, or combining parameters.Each parameter change triggers an independent output update. If Value, Multiply, and Add all change in sequence, three separate output values are sent to connected targets.