Modulator level broadcaster
-
@Christoph-Hart Yeah that would be great, thanks!
-
@Christoph-Hart said in Modulator level broadcaster:
@d-healey Intensity is not a parameter but a property of the modulator base class, but I think I can add a special case to it so you can use
attachToModuleParameter()
(like I'm already doing with "Bypassed").Was this ever added?
-
@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
-
@Christoph-Hart Excellent!
-
@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?