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 847 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 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

                            24

                            Online

                            1.8k

                            Users

                            12.1k

                            Topics

                            105.4k

                            Posts