Forum
    • Categories
    • Register
    • Login

    Modulator level broadcaster

    Scheduled Pinned Locked Moved Feature Requests
    broadcasterlistener
    33 Posts 4 Posters 4.4k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • David HealeyD
      David Healey @Christoph Hart
      last edited by

      @Christoph-Hart That makes sense.

      So the situation I have is I want to take the value of a modulator (LFO or CC) and scale it using a table on the UI and pass the result to one of the macro parameters of a scriptnode effect.

      The catch is I want one table per scriptnode parameter so I can't just use the modulator's single table.

      Do you have a suggestion for the best way to achieve this?

      Currently I'm polling the modulator, scaling the value with the table, and passing the value to the knob, but since this is in the UI thread it doesn't work when the plugin interface is not visible.

      1 Reply Last reply Reply Quote 0
      • David HealeyD
        David Healey
        last edited by

        Is there a broadcaster that can listen to a modulator's intensity (not talking about LFOs) but things like CC modulators?

        I tried attachToModuleParameter but best I can do is get the defaultValue knob's value.

        Christoph HartC 1 Reply Last reply Reply Quote 0
        • Christoph HartC
          Christoph Hart @David Healey
          last edited by

          @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").

          David HealeyD 2 Replies Last reply Reply Quote 0
          • David HealeyD
            David Healey @Christoph Hart
            last edited by

            @Christoph-Hart Yeah that would be great, thanks!

            1 Reply Last reply Reply Quote 0
            • David HealeyD
              David Healey @Christoph Hart
              last edited by

              @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?

              Christoph HartC 1 Reply Last reply Reply Quote 0
              • Christoph HartC
                Christoph Hart @David Healey
                last edited by

                @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
                
                David HealeyD LindonL DanHD 3 Replies Last reply Reply Quote 3
                • David HealeyD
                  David Healey @Christoph Hart
                  last edited by

                  @Christoph-Hart Excellent!

                  1 Reply Last reply Reply Quote 0
                  • LindonL
                    Lindon @Christoph Hart
                    last edited by

                    @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?

                    HISE Development for hire.
                    www.channelrobot.com

                    LindonL 1 Reply Last reply Reply Quote 0
                    • LindonL
                      Lindon @Lindon
                      last edited by Lindon

                      @Lindon --just go load the snippet lindon...

                      ... lindon loads the snippet.....

                      Ohh..I see... cool

                      HISE Development for hire.
                      www.channelrobot.com

                      LindonL 1 Reply Last reply Reply Quote 1
                      • LindonL
                        Lindon @Lindon
                        last edited by

                        @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});
                        

                        HISE Development for hire.
                        www.channelrobot.com

                        Christoph HartC 1 Reply Last reply Reply Quote 0
                        • Christoph HartC
                          Christoph Hart @Lindon
                          last edited by

                          @Lindon Try it :)

                          1 Reply Last reply Reply Quote 1
                          • David HealeyD
                            David Healey
                            last edited by

                            This post is deleted!
                            1 Reply Last reply Reply Quote 0
                            • David HealeyD
                              David Healey
                              last edited by David Healey

                              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?

                              Christoph HartC 1 Reply Last reply Reply Quote 1
                              • Christoph HartC
                                Christoph Hart @David Healey
                                last edited by

                                @d-healey is it a global mod?

                                David HealeyD 1 Reply Last reply Reply Quote 0
                                • DanHD
                                  DanH @Christoph Hart
                                  last edited by

                                  @Christoph-Hart This is huge! Well done!

                                  DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                  https://dhplugins.com/ | https://dcbreaks.com/
                                  London, UK

                                  1 Reply Last reply Reply Quote 0
                                  • David HealeyD
                                    David Healey @Christoph Hart
                                    last edited by

                                    @Christoph-Hart Yes

                                    Christoph HartC 1 Reply Last reply Reply Quote 0
                                    • Christoph HartC
                                      Christoph Hart @David Healey
                                      last edited by

                                      @d-healey then you can attach a global cable to the modulator and a broadcaster to the global cable.

                                      David HealeyD 1 Reply Last reply Reply Quote 0
                                      • David HealeyD
                                        David Healey @Christoph Hart
                                        last edited by David Healey

                                        @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);
                                        
                                        Christoph HartC 1 Reply Last reply Reply Quote 0
                                        • Christoph HartC
                                          Christoph Hart @David Healey
                                          last edited by

                                          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 HartC 1 Reply Last reply Reply Quote 0
                                          • Christoph HartC
                                            Christoph Hart @Christoph Hart
                                            last edited by

                                            @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", "");
                                            
                                            David HealeyD 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            30

                                            Online

                                            2.1k

                                            Users

                                            13.0k

                                            Topics

                                            113.0k

                                            Posts