ScriptFX Parameter Example?
-
Are there any examples available for the old (pre-scriptnode) ScriptFX stuff? Specifically how to attach a Parameter Slider to the actual DSP in the processBlock?
-
Continous Noise and Sine wave generators in fx plugins....
Now it is :) Check out this example patch: It's a monophonic synthesiser without any sound generator :) HiseSnippet 1700.3oc0X0zaaTDFd2DuPsCAZQbgaqhDRNpgH61T...
Forum (forum.hise.audio)
-
@orange Thank you but this is specific to the pre-built libraries, I need to access a custom variable in the processBlock:
function processBlock(channels) { for (c in channels) { for (s in c) { s = s + (Math.abs(s) * scalar); // i need "scalar" as a param to connect to the frontend } } }
Not sure where to instantiate it, and what type ie reg/var
-
ah okay i can just add them like a regular script and reference them in the processBlock, super easy, thanks again!
-
@iamlamprey Is there a reason why you still need to use this old approach? Especially If you need to process on a per-sample basis, then using HiseScript is super inefficient (it's at least 10x slower than using scriptnode / SNEX).
The example you posted is a one liner using the
core.expr
node.HiseSnippet 1027.3ocuV0sahbCE1FxPJraq5J0Gfo2QZihf1saqTuX2.IzhZgf1IEs2EY7XBVLi8HOdRBsp22Gq9HsuAsmy3AXHPSSPaKHAy4O6OeNemimQFMWjlpMDZ8KWjHHzm6ErPYm0cFSpH8OiP+DuArTqv36T0YQBKMUDRnzp+.pfV+.R9m2+5NrHlhKVqhPFqkbwOKik10ZG8leRFE0iEJtTFWx6W9l9bspqNRmA3opWKRBiOmcsXHCcqhGgV67PoUaBrLqHE7oiNbQvL8sJm+ikoxIQBTnMI.VHmZR2YxnvQKOqoDB8fQqO4Ucm7OyafLTtR+5LvmlavecDkyAzJODjZ+DfDsDjNvAoW3EvMxD6ZKHddlWeETPlxfTcYn37kP+SutZvAk8jX1bQOCHrJflupUqi8geN56mlo3VoV4qUC0VwEplG032ZTuwu2v+9llNcm1vswnihDlcZFqtlGJvlpr3IByw92vhxDqbDN9alSq83xob2otjiZUekzdQhnPtmNJDyU3yaWAHEoM3oeo+YLKCKJE5.+RDFqDgC8LwM.q1Uhp6clHctUm.75spe.yQGlEwraRmv9lBCP9XiZHVnToR6hx8UOANVqGji8Xg3K7FIs7Y6FiU1AFgL0+EXrny7i8Ne5TA2tFfG306c6aaXqmbaXih1PXOwM+4Eh98dW6c1.9GdqI6IFQByHtTOJhsnYJKNIR7V.iG6OIRymGH+Uw1cHINHzA8nIeFSoDQo6SiTsOPCmHuUmYkpqGvrF4cDp2vr3.XLMWzs.cfNZErGxI2BkQdQfPElK7WvmBisQYZgw1KMVp8anvdq1LOubT7LgdnK2mlmjuZ5csImFEousqNNQVvRgZPttQ5nEIyzJIGU47XIROMVmAaRAb+QV5kLYDRqCxRgAEgWnB.myuFiVcrvjluvG505D3KPyGpCAS05w3PhcwHlcF1ufyd.xovbBeEIcCrVlmfKwxq4bYI.hw3QGujCqOiXF3NOXlMNtoBsZowONFJJA8eUb6S+zwnUNKhLFY.XPDbWbYvbD6gtVySbWhgrA3elWL7+I4Fd7njVYCLU4dXpFbGDrqEn4y8jpjLq+W5O.2J1jzl4JNx+KbT17t9xweHLVcR10qNNUIkRIXJXoD35.opvs0iiFvt6d5d+qCrhDreqreAyE25xFk8zg.2Br0xbZlUCYL2rv+YXUq7h7gGhaEZ9UUJQ9jgzhatJDKXs8CWQ.VgST2RPR5n0yiY48c62Mf+eLkHlwM5q3tAe3A8ix0.StT4ulXc38UAY+1jateFOFdMtq37MWpsB7q12.+58MvWtuA9M6afuZeC7a22.+t+8.w2xtn4BIsPGxnyyIgT54JFbOU9XIxeC5sldUB
-
@Christoph-Hart I think it's because he is building an instrument for Rhapsody.
Is it possible to keep the compiled networks outside of the plugin by shipping the dll to the user?
-
@d-healey said in ScriptFX Parameter Example?:
Is it possible to keep the compiled networks outside of the plugin by shipping the dll to the user?
No, I don't feel comfortable declaring this as a feature robust enough to be shipped to end users - the DLL allows fast iteration during the development process but if you want to make it a robust plugin system a lots of things need to be added / tested.
You can recreate this within scriptnode though:
-
@Christoph-Hart I've built a backend module-creator to rapidly iterate with the
builder
class and I haven't been able to get it loading Scriptnode trees, which is why I'm using the older moduleIf i can load uncompiled Scriptnode trees using the builder that would be awesome
and yeah, it's for Rhapsody
-
@iamlamprey If you export the scriptnode module as Base64 state, it's super easy:
const var b = Synth.createBuilder(); const var i = b.create(b.Effects.ScriptFX, "ScriptnodeFX", 0, b.ChainIndexes.FX); b.get(i, b.InterfaceTypes.Effect).restoreState( "424.3ocaR0raaCCClLsZEwGJvdCxwLfhfjmfAjjVfdHEF0cA6phL6hPjkLjjaiWQuuG28FzQE61ktN4Cle7mOJ9Qk6cJJDbd.O8t1ZBvLQgxqqiW8c35k.ddOz5JI1071ZYHPk.hmzE.veIFceiUE0N6nZOUK8zctbircbPVUanakQ5hQaLN0tB8Oouj8T1vrmyNtnCWh4oLFq1JsVxD9XZN6BmM5clw1lpMj+hQOHMM+kO.+zkk5nyWD4NF.7j4tx1hstGsrsXFrVGzaLTGnvYbIqo.rXq1Tl+pRD..t00D01erRF858.Jtoopv03Uzh9aG6CG.oROfmlvLDJHa4AvK7oO3rDF6CN60fPZXHaj8eCEez42wMFwda.Gzo9g2T+62CqIefUB.OSLcB+kxmiviwUREO3s4x3V.+rPwbK0VxOgkSsE9Obc7lDGjnoq+c7kJPHjkkv6XNSTw+mj7+t5wboWVQQxefj2P7qpUZ65zZBvgmB8mUx8+iue+0TGOSz49CE.GyO7sqWJixTi50Pd2US9nNszwkzCZE08XdnXIE1Ec0.7GsPlzUC"); b.flush();
-
@Christoph-Hart How are you exporting the tree to Base64? Your example works but my exported strings don't load anything
I'm right clicking the root container and using this button:
-
ah it's the Edit menu version... okay now it's working cheers
-
@iamlamprey either there or you can just call
exportState()
from a script, this will also give you the Base64 string.