Modulator level broadcaster
-
@Christoph-Hart said in Modulator level broadcaster:
@d-healey Now it is.
I've also added the possibility to connect global cables directly to Global modulators as source and any module parameter as target, so you don't have to go through scriptnode anymore for this.
const var gm = Engine.getGlobalRoutingManager(); const var c = gm.getCable("Global LFO 1"); c.connectToGlobalModulator("LFO", true); c.connectToModuleParameter("Simple Gain1", "Balance", {"MinValue": -25.0, "MaxValue": 25.0});
this opens up many new options of block-rate modulation of any parameter in HISE!
HiseSnippet 1248.3oc2X0saaaCEVx1rKwqanYqXWLfAH3qb2RMraSS2OXndwINvXwIFQtocXWTvHQaSDIRMJprlUz62c6UXWsmi8HrWgsmf8FrcnnrjbhqqqqaV5zEBlmen93ge7bNz8DbGRXHWXXtZ+yBHFlWGYeFSNp0HLkYzYaPNpK2sOITZr0YA3vPhqgoYwcUpMWsjQ7ye+fsvdXlCISjgwQbpCYOpOUlIsWyuk540F6R5S8yY8FM63vYs3d7H.JEQ0MBvNmfGR1GqLq.xv7Z63RkbgsDKIgFlk1h6dl8H9Oxz1eDMjdrGQMnggMLQZws4dtJDqjZzZD0ys23kbnggIpWV.nnN.bSTWpKMUdVf3FwJrx7He7vrvjvq3DvqQd3UOG7lBjLyAoRZHsFx1QPCjYZT34cQcXRhX.FB64gh1ViB+lIpEGrfIq4iOgzV.CR8n5l0qutE75VeU4xPnOTZcJVXMz25qs1gMjxH0FRj65wOF6cHORRYC6hYvFhnJ3QlCNf8C8U11BCqupUztXsW6CrZTIdxqAVyHNx9bsNfNE4ggXU0JfUUV2RJhHpIMyvXSH8vBX2G.b0J1T+.Ohkh00.7nRBcC94ypzkxNB6EQp7kV29N2qFrrpzE+zwhTRdNL6ChXNRJmYwY6ykjCXUuU4mUd0xOur04UMXvT0oBlBtmmJDLE0JBsXVNVkE4eLQrND2.nkZHrKOI0A8hoN4Y1N581bFxYcXT4AAD1KhuajPHfe8vNaikXEeKQFXW.QHoJHXtM4T3vql8sJZaR3IRd.b78BTyafR2NyeRQsQkn.hASPOUTPVHUdV9zGKsiOyKDWC0iJcFMcLVXJXDhTuIvXRRm2CsyfA.0OCfkPse7anLLEx88WIMqe7IrcG+4eeT9ibyH0ugw1DO7DApGQckixD7cMmr3f0m9Q2+26vNEHa83dXw4CyEm60YiYuNKM2bA0Rx50guVZ91Llc0n4k69An3P9aS.NlR71CfuApG9p.gHsxqTPeJTYX+HeanCIGB.UnTompZgYAUdc835pwJ.YSXtwC9G3IQYC0XyDkMFqbJgjxIsa.IfTAiqmLzp8iaLsFML+YTV0t.AI.KH848.FZ0PrJGxgPHYcqi83NmXS+IxEKQFngvVJKp5jrzVjJonkTpiKk.+xqVbRR7OFctFrTyFPoI59E+jD0Vo5sRMXVY3+i4s49f4t49ymiuz7sQ8RZluzUtl4m27Me3E1ZBuD6YZhFBVSCSDB5MOFa5e8RQyVz.Uwbk91BxODQXNi0+q69m+0CTzhNYrpl+RyGgOkLfK7SX1oyzdjgPDHuj9D+.NbsTm7LPaeNWNBNjNIY6lM2iyC1gotMha9Io2Hbnp29PhbhoAlV3BG3P3dFsTIfxqryPFWPz2WHu7VQgRt+3EP78Sskjf3SwleOZyMpAOC9L06unE75tGrbF+pzCZi4eOe1TS0U4R2xULzqfsyqQYJw6+PT9NZTtB5PLyk6GitqEO3U5LzCCI8wwe7LVmdFiEqYZp+VjkEgXobwoh+u9hSWJcEbY7M7wNB9SbzMSoRFrRrDXcyh+61VE0UM1pgQbCVpZ.0qU2vGpX9DGGUH91PA3o6ycV.et6B3yFKfO2aA7YyEvm6u.974yzGUyJeSDTyQejCDzaGcN.yzRclEM9WfpZONI
Whats "LFO" here- is it (for example) an LFO used in the Gain Modulation section of the Simple Gain fx?
-
-
@Lindon can I do this:
const var gm = Engine.getGlobalRoutingManager(); const var c = gm.getCable("Global LFO 1"); c.connectToGlobalModulator("LFO", true); c.connectToModuleParameter("Simple Gain1", "Balance", {"MinValue": -25.0, "MaxValue": 25.0}); c.connectToModuleParameter("Simple Gain2", "Balance", {"MinValue": -25.0, "MaxValue": 25.0});
-
@Lindon Try it :)
-
This post is deleted! -
I want to use the
attachToModuleParameter
to send the output intensity of the LFO to a knob. It looks to me though that I picked the wrong word when I said Intensity as this is of course the intensity slider, what I need is the output level.Is there a way to get this with a broadcaster?
-
@d-healey is it a global mod?
-
@Christoph-Hart This is huge! Well done!
-
@Christoph-Hart Yes
-
@d-healey then you can attach a global cable to the modulator and a broadcaster to the global cable.
-
@Christoph-Hart Which attach function do I use to attach the broadcaster to the cable?
Also, any reason I shouldn't do it this way?
const var gm = Engine.getGlobalRoutingManager(); const var c = gm.getCable("Global LFO 1"); c.connectToGlobalModulator("LFO Modulator1", true); const var Knob1 = Content.getComponent("Knob1"); c.registerCallback(function(value) {Knob1.setValue(value);}, false);
-
You just pass in the broadcaster into the
registerCallback()
function and then it will distribute it to its listeners:const var rm = Engine.getGlobalRoutingManager(); const var lfo_cable = rm.getCable("LFO"); lfo_cable.connectToGlobalModulator("LFO Modulator1", true); const var bc = Engine.createBroadcaster({ "id": "Mod Output", "args": ["value"] }); // Use the broadcaster instead of a function lfo_cable.registerCallback(bc, AsyncNotification); bc.addListener("", "logger", function(value) { //Console.print(value); });
Whether you want a broadcaster or directly use a function is up to your project layout, but using a broadcaster will get you more flexibility.
-
@Christoph-Hart And if you want to connect it to a knob, you even don't need to script that, but let the
addComponentValueListener()
function do its job:bc.addComponentValueListener("Knob1", "direct link", "");
-
@Christoph-Hart Thank you. Yes the broadcaster solution will be more suitable here because I have multiple controls being linked to the LFO.
-
This post is deleted! -
Now I'm thinking this may just look annoying and not be very useful. What does the group think?
-
@d-healey well it might work better is your modulator wasnt running so fast...
-
@Lindon But the faster the better, no? :) In the end I won't be able to control what speed the user sets it to so I'm going for ugliest scenario here.
-
@d-healey well its really up to the user as you say - as a user if I set my modulator speed high then I would expect it to show me something like you have....
-
You can add a simple low pass filter on the scripting layer to the values if you want to smooth fast changes.
-