Modulation does not work when processorID/parameterID is set dynamically.
-
@Christoph-Hart
I just noticed that this only seems to happen when the min/max/middlePosition values of the slider change. If these remain the same, everything works fine even when dynamically assigning the processorId/parameterId. -
@Oli-Ullmann yeah that looks sketchy. Modulated sliders are not supposed to be reassigned as there is too much edge case stuff involved into making this work.
Can you redesign your project to avoid reassigning modulated sliders?
-
@Christoph-Hart
Hmm, my use case is as follows:My plug-in has 8 effect slots. The user can select any effect per slot.
However, I don't want to create a separate slider for each parameter of each effect. That's why I change the processorId and parameterId of each slider appropriately when loading an effect. And I adjust the min/max/middlePosition values. Except for the modulation, this works perfectly!
The only solution I can think of is the following:
I always leave the min and max values of the sliders from 0 to 1 and control the effect parameters via the slider callback.
Depending on which effect is selected, I multiply the current value of the slider by the maximum value of the effect. For a frequency, for example, sliderValue * 20000 (With Math.range(20, 20000)).
This should work for unipolar parameters. With bipolar values, i.e., if the parameter ranges from -1 to +1, for example, it gets more complicated. But even that will definitely work with a little math. :-)
However, that would mean a lot more code and is not as clean as the current solution, which makes extensive use of your API.
Or do you have a better idea?
PS. I use hardcoded effects and the effect slot from HISE.
-
@Oli-Ullmann why are you using effect slots? just use hardcoded modules directly for your slot system, then the processor / parameters won't change at all, you just need to hide the ones that aren't used.
-
@Christoph-Hart
I have the same problems with HardcodedMasterFX. And I use SlotFx because I wanted to use the HISE internal delay for its tempo sync functionality. -
@Oli-Ullmann said in Modulation does not work when processorID/parameterID is set dynamically.:
the HISE internal delay for its tempo sync functionality.
that shouldn't be the reason, you can replicate this easily with scriptnode.
I have the same problems with HardcodedMasterFX
What do you mean? If you're just reloading different networks into the same Hardcoded modules you can leave the processor / parameter attributes constant, no?
-
@Christoph-Hart said in Modulation does not work when processorID/parameterID is set dynamically.:
that shouldn't be the reason, you can replicate this easily with scriptnode.
Puh, unfortunately I'm not really familiar with Scriptnode yet. But I'll take a look at it! :-)
What do you mean? If you're just reloading different networks into the same Hardcoded modules you can leave the processor / parameter attributes constant, no?
I will test this thoroughly tomorrow and provide feedback here. It didn't work during a quick test, but I will create a new test project for this purpose.
-
Puh, unfortunately I'm not really familiar with Scriptnode yet.
Well, then stop what you're currently doing and start learning scriptnode, then you'll look back at the HISE delay module and laugh at it for being so bland.
Here's a simple delay. It uses the tempo_sync node for calculating the delay times and has a filter in the delay feedback path so it gets dampened over time. That's just one of the things that you can customize with scriptnode. You can go from there, add ping pong mode, distort the feedback path or whatever you want.
HiseSnippet 2582.3oc6a07aaibEmzxT9yM6toYQ5QUr8f2h.CKYGuwnGDi+PYMZrspkiSbu3NlbjEgI4vRRYKsEEM.sG1asG2bqmxwhEF8Ruki8vVf.j8Oft.8xdy6+.M8MbHEmQjRVRQ1wYW6.Dn4Myv48989bFxorKQC64QbkjmbmlNXI4oUpzz1u1J0PF1Rqupj7MT1.44icywHsbSGjmGVWRVNyCnDjmXTof+Nq3xHSjsFNljjztDCM7CMrL7ioVV8WYXZVBoi2wvhazKnttFwdEhIoNvOYTlSxAocD5P7lH5vFQQ5yPd0jj+EJGjGcv7UWBgxu3An6ketkVJe06d2Ocg6ocf1RZKpixizW3dUyKImcMcCehaEejO1SRdzkI5MqTibhMaA10vy3.SLsQdoJvJyHWhXpSEQJUoUpYXpWNBn7jjjUJGCaYXv1sT1vP2nE8X36CB5HW7L3AP4QDYuLBrW9NwdovRxbrznLV5CUpn4Z33G2CkelRYcaPaVEA5IdVgMVI4WnrBAFfs+rVnivkbgFslvLKN2b2IG7eexurZcaMeChcNh8lDe7V1y7IS96mbhI+CSlq8tpVM09nKiKwzD6lZ2TSC2tMwYrqac.18N4NFYVG2Zff3KhoY6MLUiI0bCjXutsg+VN3v1c2nPJD1fe8n0WE4inJkPZv3bvt9FT1QdU7wfKASEMgxpXui7INfSQB8GX4Pzqah7EMmnNcgc.3gfNjpnr8L7ax6T1G1Xy0UardkE+PkxF9Z0RmGGIEdDPpKBdLzy78TVqZUrleLCNpRomLntgy02tgSF5FBqIcwmNrYtROIepNfegRrwtiK1A4h2gT1D0bFOjkiIdafGuStCLIZGUw3ywI8PbXrvxzQLiVMjsM1zaPbjxNjBNIsMotug8gaf7cMZ.gO2rtUEHFuFdkPtCnIOB0Gh0dNZapcQErsdPiWC+E1YdZa4vNyG0Im62lX+SHtGEnNB+sj73TreLEcL.jR22zjbxJDKGiPCT.9CnUlX1zoFw1PiRhMhHl79Vj5vyOjSistWNRSDwzPRpcPFlTi8J08fvG5aYWAdNAYFkyrK10KXMGSYtYg+AF+aRzgtFqDRCf6lkQ90ndQzHRfIK1cVsVltQR.ugCK6XTOzmUTJTF+.hgEEYnIPopuxHWXFPHcZznQjyvEchY.SaAtmivLWW2aWZuZHSocoFHzIErJzgGw5zgNohtay8OA6CgJ6jj34XBUBjjK345Ix9rC+iulx4IkxIhVCAoB5UjexFyONTd3bP1jqC2b6NflXoCfh2OhM22xnA1Ub8+ff0Gb7lsQUnFH2TV91me5vCOeDkbJgBcj1TnuO06iC7C0oLqZo1FbVZ7cbzXFW4g.ngbAWuSnQ32A4dH1OXQ3IDl3yFGDmwSrYHNstdDFeHUAzhenzyFjhSbQ58mIEz57yjSvo15Qsfxh1vvNTLiSKsApQazNqXEerCyaOdbUNBeBSEyORl+J6ArCtg+NjfeC78w.DGrnJOxVGWE.UcfyNjUiak5G7.WRcmfFIXoUwUQ0M8SP+908IVPb5.iHoDdkAHhfU3TfUnKd1C6l8ePm8ks2H71dhnclti168hjnMfrhn8e6YO6eVLAZ+hC+pORkYtFnkujAaN4ZxdxJR8un1Sx0u8mr5qJxpYuhEg3WCxgNrDtETSW3VP8bjmggdZZkswdX+KIWCoAIAGuoqjPREZ.lAMoRq41mIUBV52SopQi7KtePoehq9s4Vc9AkjGDeHmGa7lTZfLGqOlhEnYL5Ljw5NspZX8zOLpTZf2XJLsReqzxn7v1BAt2SO80CWnZTNFcBEWrF13Xb6rpKqH5Yi5Nshih5SjgOcOTRFtKQpuDxKNoRILV+.DXCdoFsdDde4on9B6yJaNQEZPtw3dSh07yUDs+M6cZeg1iz2n8.j+XUJiFbZaCA39kGU84OpC4O1SUDt66jiR+U0jlRmUrqlRQmj3PxT5ocP1dppXl.hMdeGhYadp2DrLLo51Ya0eZoBZ0on0ye+z8NmfKztbLwMhNioRrUK9mzXNf.2HZqwqA6tWGJPKXBQaWVvDLa2MAWPMgV5KdkZO4vq9mr92glfkbw+t5vlfa1Q0T7H5E0D3EjpZBn2ylfpyO+qJ1lv8hu9q+3dS3j93u+kABWFke8vx16rhoa6cVwywUpPJ0kUPs+hJeYU+7.DUnGSvbgUxr5294+4zTMAzGRxS2hxEtS72UTMcSTlPYMazAl.udw6yvEuNqhG1VWLV8MZUUUPeIiSGNo9sdpTJ.j63JhXyVkqItaiNs0iwYkvN+fTC61sWC6oO6BrF1IijrBWWD6EcQrSGWHZgqqh85pX6ypXmpUgnEttL1qKi85xXutL1qKi8pbYriETQZgqP0wxUsWWJj87Jwcr3SWu+eYUsl00urpqeYU+H+kU0wcAM1EytfFWYU2lOF6KJRhaXo2d48s+UOH7F7idS5RIdUOs1HjO1xgruWSaMwnG2p0GbA2HRFFQ3AzC6FRrb13OHHtOKhTES9McIHh7avQJ0oJrYuNOWASfQ6+MBWnO27xXJ6PQtK5DgsuK3t66eVwjB1b8ofMsxFzW+nioArHWpkFO06HEszqmXwE1wCzRztAv5TWWr9vbWzcR9L5ztyZeinSyx0GvSCeAesFvhXiL49XagxgV0viojSQDCYEwf0bbfpU0pGod9n25Lprue1dJ7tP7UgfWso5jZG9FmdmDfdkF9gu5e.DZHBdcBqBhIRY71soxoNLAunfuIPMdNX3GMYH.bIV8KWqt3XgIfNtS1c3WzT+ibiwRt2I36IK8O9WO+K+uugvW5EqDeb7BXGG.I0gODyVaJriSjO+ME0UTdX4RWI.7Nap9y9J2Ze6M+th8F5wc9nsUsV7gDJ0ghDiOW1NO0jH3FFMthif+uuow287u7aJ1OejvAeT4BvPqccHsLgbjEJ368+M9l2baVmSo7Xzw3f6AWvWc+GEztJw0J2Cv1XW58cIeWtIburWuIbN87MgaKMefE1wEY64P7v4EzYXKic.yEOApsMiBoNiBhU53W2V7QyHILJJTTBfBtwMtZDwB7DKirEdXPagmD0VsUy+SQVz3JXPx02xSC.FTalgkqa5gergtes77SLlbAdxeFxUOH4G+EMJS2tOfc7NsHdmq3FeJWAnruEtbfCmKt0aw6VlvEmZhHdrhA8UDsFjzxDbiC3wapDFVIhpne3FDaRzE3IVquM1203vCwh6YHMA5999zTSsnbK0swlXjGmu4OWkcKHBNH6ACK5+6xYp5qepBicyQCdj6c26DXlePem.6cuOHd3Uas3sUf3xExEnJy81QWdYbUBuLVCKjlKY+vykj5zOd.EPtsC+LX1f1NWdoiauTNKHkw9ZZhOpDSrvfNw4GzItvfNw6NnSbwAche5fNw6c9SjlQO7rgn9FPYNkWi8MKHGseS5Kh4+qFm6nN
-
@Christoph-Hart
Hey Christoph,
Thanks a lot! I'll take a look at that! Thanks for your support! :-) -
@Christoph-Hart
Ok, ScriptNode is really fantastic! When you integrate custom nodes such as precompiled RNBO effects, the possibilities are truly endless! Thank you so much for bringing this to my attention! :-)One question I can't find the answer to:
How can I switch nodes on and off from the UI?As far as I understand, I have to create a parameter with a range of 0-1, which I then connect to the node's power button. However, this doesn't work for me. Is there a trick to it? Simply connecting a cable between the parameter and the node's power button doesn't work.
Many thanks,
Oli