Range (min/max) of an attribute of an effect
-
To clarify what I mean:
I connect UI sliders to the parameters of my effect using.set("processorId",...)and.set("parameterId",...). It works great!However, this means that the min/max/middle point values are not automatically correct. How can I ensure that the values match?
This happens when loading the effect and not just when loading a preset, which is why I don't think I can use
updateConnectedComponentsFromModuleState. -
@Oli-Ullmann You're referring to scriptnode effects?
-
@d-healey
No, I have an effect slot where I load effects via script and then connect the sliders in my UI via script.And I have a hardcoded effect that I use to do the same thing. So I load precompiled effects via script and then connect the parameters of the effects via script.
Are you familiar with the “Enable Connection Learn” feature? It does exactly what I need. I can't access it via script, only with the mouse via the Interface Designer.
-
@Oli-Ullmann said in Range (min/max) of an attribute of an effect:
I have an effect slot
Perfect - you can use
SlotFX.getParameterProperties() -
@d-healey
Hey David,That sounds great! :-) However, the parameter is undefined for me. Or am I doing something wrong?
Here's a snippet:
HiseSnippet 1101.3oc2Vs0aaaCElxIpnQ6BZw1a6Eg7jxPVfctWLLrz3KsFaN0nNKHCECALTGEyEJRMR5rHLzel6+w9GrcnjrsbS5VfQ2dX9Aabt98QdtPOTqXfwnzDufSyy.h2G6OJWZG2dLkKI86P79BeiPY6c6HAOFzCoZZJXA8ofwRNNOiZLPLwyakW3BvasUIEe9iu8XpfJYvbUDxYJNC9ddJ2NW6vi9NtPziFCmxSq48tG0mojsUB0Djbq32jjQYWSuBNg5bqgO4kTyXh2W5uGzDZs29IOaWFc6C1NYmcX6r8y1OlEmbPyVGt+trDXmD1gDuG0MlaU5QVpELDuUOVEmOZr5Wkk.bF2vuT.NgVjQHxkp6oDwtinSKo8XtHd3zaMCAyxv42gqTdG949C3w7Y5meW9jBCgyin9EnWiEo2JKPuV0oWyZz6dnjWMJsZIkdp+HllmYmawwmOxuuDqkITrNUmJk9RZbVC+1JzCocqT50POMJLKhn8a1byP7qM95f.rVYrgtNkvuIrnCZqq.6HWmy4Qq6zu9ht0VkdoB8cZ9QuQUYJIJTFPgGtnlIrkw4jzpUh1Tg3RrgHBS3TyUlliCjj.LqAQw4iChAp3IBrEzXibtsPliVmagTy5aFtdAWST5HHjKmllMBVat+z339n2QfyStTvkPXxDIyxUxv6xoH1zy1lg2PESfMB9sxz4PtaA.QU37lBGB+pvV+Dl70vLXTBXqLMGuYrZ2M+ziyroQrrlAZKGLQarAF0aQVETiOmnrvqjQEnF71fv20TRx8Zqh8BPeulcSr5+t.ijSRuDz0OyNGwtxEa08e+s50mDYk8J0bTI6K41WkAx227IopAyMVTwJzUawPwSpFJJpTGqtkvicyDyJdjBZWeoF4G52gZoSSFl2427ntNvM3FtxIt076.lqsprBeqp93NnGHz2NC1i94ixmyge7nhtTh2u6Gzdh9Fn6uDLhmlIfWC2.5KqDbaiCPJdiRLwUSB5.BZdP6wJ8DSvvwTCz67fQfL18C0NQSw5QPIoPUCUh7YBcSyr43ucxkzTNyD7bIUja.z+wzLWhdIUGyT3ZxvATC1OFVWmKWYiURNC05V.N.vxfTkBAmn3F3EZjrCQ5AZRJEO39deVwSC2YKFt+zM.6nZ8kptCakA7ntvlL21JogayqWE+fso8gRwm5OjaYiueN13d3H1f8uAGqde5S7K23Lmfq5267+CdLpB+G6W9vPAzOpnoeQvW4ACdqGN39SmKqFaJP+SKP+hoppyhSlj1iKvlY2BJOWMoWuS6JoHxeXYI40JbFUd0.pUycs+Hxiv+1CCvBjTBhBBzvsKqTt4TB4leKD9S7SkwVNYuJislZ7+MXjRYZ0ErxM4tR7iKzf2sxh+X3Z9Cbxgsd2k2DRJt54BFawTcm.2dYCbmkMvcW1.2aYCb+kMvCV1.O7eNP2KCOehUkVtgjPFLrawisdd0l5H+01mppv -
@Oli-Ullmann I'm not sure, looks like a bug to me.
-
@d-healey
Oh no! I can still solve it using a gigantic switch statement, but that's not really good practice.
Thanks anyway, David! :-) -
@Oli-Ullmann said in Range (min/max) of an attribute of an effect:
@d-healey
Oh no! I can still solve it using a gigantic switch statement, but that's not really good practice.
Thanks anyway, David! :-)well essentially I use a json object that defines (for each FX) the UI widgets being used, and what their values are like this:
{ EffectName:"CHORUS", EffectHardCodedName:"ChorusFX", NumControls: 6, ControlText: ["Rate","Feedback","Depth","LFO","FX Gain","Mix"], ControlTargetNumber: [1,3,2,5,4,0], ControlMinimums: [0.1,-100,0,0,-100,0], ControlMaximums: [1,50,1,.3,6,1], ControlMultipliers: [40,0.01,1,1,1,1], ControlModes: ["NormalizedPercentage", "Linear","NormalizedPercentage","NormalizedPercentage","Decibels","NormalizedPercentage"], ControlStepSize:[0.01,1,0.01,0.01,1,0.01], ControlSuffix:[" %"," %"," %"," %"," dB"," %"], ControlMiddlePosition:[.5,0,.5,.15,-12,.5], ControlDefaultValue:[.08,35,.1,.17,0,.5], ControlsRow1:3, ControlsRow2:3 },and when the effect is chosen, and loaded into the slot/hardcoded FX I just run thru this setting up the widgets... it does everything from showing/hiding(NumControls) to assigning to the hardcoded FX param(ControlTargetNumber) and where they appear on the FX panel (Row1 and Row2)
pretty simple really...
-
@Lindon
Yes, that's right, it's pretty simple, and I'm now doing something similar for the HISE internal effects (not for the hardcoded effects, because the function works there).But with
SlotFX.getParameterProperties(), there's much less code to write. And that's better for maintenance and if you want to add new effects in updates. -
@Oli-Ullmann I think it would be even nicer if this was available for effects, whether or not they are using a slot.
-
@d-healey
That's right. Because withSlotFX.getCurrentEffect(), you always get the effect loaded in the slot. So you could also implement it in the effect class and still have access to the functionality from a slot.So I believe... :-)