HISE Logo Forum
    • Categories
    • Register
    • Login

    Monitor changes inside Scriptfx - the correct method? (broadcasters listeners)

    Scheduled Pinned Locked Moved Solved General Questions
    34 Posts 3 Posters 866 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.
    • ustkU
      ustk @griffinboy
      last edited by

      @griffinboy Yeah cable is what I am trying to use, I need to receive JSON data from UI.

      Thanks for your template code it's awesome! Well... when I'll be able to make it work lol

      Can't help pressing F5 in the forum...

      griffinboyG 1 Reply Last reply Reply Quote 0
      • griffinboyG
        griffinboy @ustk
        last edited by griffinboy

        @ustk

        Christoph wrote an example for exactly that somewhere... I wonder where it was I'm not sure, search for global cable posts!

        That template above has a version of it. Use GPT to untangle my comments itll understand mostly what I was writing there

        ustkU 2 Replies Last reply Reply Quote 1
        • ustkU
          ustk @griffinboy
          last edited by

          @griffinboy I tried many keywords already with no luck...

          Can't help pressing F5 in the forum...

          Christoph HartC 1 Reply Last reply Reply Quote 0
          • ustkU
            ustk @griffinboy
            last edited by ustk

            @griffinboy Cool I got it to compile with the callback! ☺
            Now it's a matter of properly reading the JSON I am sending... -> Working

            UI code:

            const var RoutingManager = Engine.getGlobalRoutingManager();
            const var DataCable = RoutingManager.getCable("dataCable");
            
            const var data = {level: 0.0};
            
            
            inline function onKnob1Control(component, value)
            {
            	data.level = value;
            	
            	DataCable.sendData(data);
            };
            

            C++

                global_cable_data()
                {
                    // Register a data callback for the global cable
                    this->registerDataCallback<GlobalCables::dataCable>([this](const var& data)
                    {
                        if (auto* obj = data.getDynamicObject())
                        {
                            const var& levelVar = obj->getProperty("level");
            
                            //if (levelVar.isDouble() || levelVar.isInt())
                            //{
                                gain = static_cast<float>(static_cast<double>(levelVar));
                            //}
                        }
                    });
                }
            

            This doesn't seem to update gain

            EDIT: my bad... wasn't listening on the right set of speakers lol 🤣 WORKING LKE A CHARM!!!
            Thanks a lot @griffinboy !

            Can't help pressing F5 in the forum...

            griffinboyG 1 Reply Last reply Reply Quote 3
            • griffinboyG
              griffinboy @ustk
              last edited by

              @ustk

              Nice thanks for posting the working answer

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

                @ustk said in Monitor changes inside Scriptfx - the correct method? (broadcasters listeners):

                @griffinboy I tried many keywords already with no luck...

                In the docs:

                Link Preview Image
                HISE | ScriptNode | global_cable

                Send a double precision float value anywhere to HISE

                favicon

                (docs.hise.dev)

                What is the way to send the value to the node from the UI?
                Is there a callback that should be defined?

                For UI -> Node communication, just use the stock parameter system. Only for Node -> UI communication (eg. reporting back analysis values from your C++ class) you need to use the global cables - and then you can choose between a realtimesafe single value or any arbitrary data that will be allocated and copied around over the DLL boundaries (which is not realtime safe).

                ustkU 1 Reply Last reply Reply Quote 2
                • ustkU
                  ustk @Christoph Hart
                  last edited by

                  @Christoph-Hart hmmm... have to look at this ! I made it to work UI -> global cable -> node, but I'll try with standard parameter to send an array of JSON

                  Can't help pressing F5 in the forum...

                  griffinboyG 1 Reply Last reply Reply Quote 0
                  • griffinboyG
                    griffinboy @ustk
                    last edited by

                    @ustk

                    GCs are the only way to send an array into a node, unless you encode it as audio or other.

                    ustkU 1 Reply Last reply Reply Quote 1
                    • ustkU
                      ustk @griffinboy
                      last edited by

                      @griffinboy oh that's what I was thinking, @Christoph-Hart's shortcut needed a sequel 😆

                      Can't help pressing F5 in the forum...

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

                        @ustk ah ok, I was just underwhelmed by the data you send over the cable in your example (a single gain number lol) but I have no idea what you're doing in the real world.

                        If you need to send more to your node, then yeah the global cable might be the best option.

                        ustkU 1 Reply Last reply Reply Quote 0
                        • ustkU
                          ustk @Christoph Hart
                          last edited by

                          @Christoph-Hart said in Monitor changes inside Scriptfx - the correct method? (broadcasters listeners):

                          @ustk ah ok, I was just underwhelmed by the data you send over the cable in your example (a single gain number lol)

                          Yeah you make me feel padawan like, which I probably am lol.

                          but I have no idea what you're doing in the real world.

                          I'm wondering the same thing every single day, until I'm uploaded to the cloud...

                          More seriously, I draw a spline in the interface, and send the control points to the node in order to reconstruct the wave shaper in a buffer...
                          Sounds the right approach or did I spend a week luring myself?

                          Can't help pressing F5 in the forum...

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

                            @ustk the table UI component is exactly that - a path with (quadratic) curves that are rendered to a float buffer and can be send to a C++ class over the ExternalData API. If for some reason the Table doesn't fit your requirements then yes your approach would be the next best thing.

                            ustkU 2 Replies Last reply Reply Quote 0
                            • ustkU
                              ustk @Christoph Hart
                              last edited by

                              @Christoph-Hart I am making a cubic B-spline so a quadratic is somewhat underwhelming lol 😆

                              But that would be so much easier

                              Can't help pressing F5 in the forum...

                              1 Reply Last reply Reply Quote 0
                              • ustkU
                                ustk @Christoph Hart
                                last edited by

                                @Christoph-Hart Do you think making the table to be working with any kind of custom spline (using a custom object) can be a serious request?
                                Since there are many type of spline behaviour out there...

                                Can't help pressing F5 in the forum...

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post

                                13

                                Online

                                1.8k

                                Users

                                12.1k

                                Topics

                                105.5k

                                Posts