Automator - UI Feedback Node | MUSE
In this video, you’ll get a comprehensive walkthrough of the UI Feedback node in MUSE Automator and how it’s used to update touch panel elements in real time. We’ll explore how to control button states, multi-state indicators, level controls, and dynamic text using both manual configuration and message payloads. You’ll also learn how different input methods influence feedback behavior and how to structure messages for more advanced text updates. By the end, you’ll be able to design responsive, data-driven user interfaces that accurately reflect your system’s current state.
What You’ll Learn:
• Using the UI Feedback node to update touch panel elements
• Controlling button states and multi-state indicators
• Working with level controls and visual feedback
• Updating dynamic text using message payloads
• Understanding how input methods affect feedback behavior
• Structuring messages for advanced UI updates
• Creating responsive, real-time user interfaces
Hello and welcome to this video on the UI Feedback node in Muse Automator. The UI Feedback node is used to affect feedback changes on a touch panel such as button states, level values, or text fields.
For this example, we have created a flow that includes our Controller and Control Panel nodes that are already configured to communicate with our Muse controller and our Touch Panel. We will also be using inject nodes to trigger each of the UI Feedback nodes for demonstration purposes but in a production system you would use these UI Feedback in conjunction with the logic of your actual program.
The first feedback type we will go over is channel feedback. Open the UI Feedback node settings in our Channel Feedback group and see that our Control Panel has been selected for Panel, and the Type is set to Channel. In addition, the touch panel button named Channel is selected from our list of buttons, and the Input method is message payload.
Close the UI Feedback settings and notice that we have two Inject nodes going into this one UI Feedback node. The first sends a message with the payload of True and the second has a payload of False. When we activate the True Inject node you will see the feedback for the button named channel on our Touch Panel turn On. When we activate the False Inject node you will see the feedback turn off.
Next, let’s look at the Multi-State Feedback section. In this example we have used 3 separate UI Feedback nodes and each one will manually select a different button state. Opening the node settings of the first one you will see we have selected the State type, our button named “M State”, our Input method is “Manual Configuration”, and in the State field we have enter 1. The other nodes in this section are using the same configuration except for the state field which would be set to 2 and 3.
Close the node settings and notice that each of our UI Feedback nodes in this section has its own inject node connected to it. Because these nodes use the Input method of Manual Configuration it does not matter what message payload we are sending to these nodes. Any message they receive will trigger the node to update the feedback to the state we configured.
We can now trigger each of the inject nodes in this section and you will see the feedback on our button named M State update on our Touch Panel. State 1 of our button is Blue, State 2 is Red, and State 3 is Green.
Next, we will look at the Level Feedback section. When looking at the UI Feedback node settings here we have selected the Type of Level, selected the level on the Main page of our panel, and chosen an Input of message payload. We will be using multiple Inject nodes configured to send a message payload of various number values to this UI Feedback Node.
As we trigger each of these Inject nodes you will see the bargraph on our touch panel update with the value that we are injecting.
The final section we will look at is the Text Changes section. For this we will look at both Manual Configuration and Message Payload Input methods.
Open the first UI Feeback in the Manual Configuration section and see we have selected a Type of Text, the button named Text on our Main Page, and the Input Method of Manual Configuration. In the State field we have entered the value of 0 for all states and in the Text field we have entered a value of ‘Hello World’.
The second node has the same settings except for the Text field has a value of “Testing 12345”. We can use the corresponding Inject nodes to trigger each of these UI Feedback nodes. You will see the button text update to the value that we manually configured in each UI Feedback node.
Moving down to the message payload section you will notice that we have a couple of extra nodes. This is because when using the UI Feedback node to update Text with an Input method of message payload we must use an object to specify both the State and the Text to update. The UI Feedback node in this section is using the same Type and Button as our previous example, but the Input method is set to Message Payload.
In our example we have 2 options on how to accomplish this. We will first look at the function node. This function stores the incoming msg.payload in a variable named ‘str’. It then replaces the replaces the original payload with a new object that has 2 properties, one property named ‘states’ that has a fixed value of 0 and another property named ‘text’ that contains the value of the original payload. The modified message is then passed on to the next node, in this case our UI Feedback node.
We can use our Inject nodes to send a string of “Hello World” and “Testing 1234” through this function and out to our UI Feedback node and you will see the button text update on the touch panel. If we look at the debug info for this message you will also notice that the payload contains the 2 object properties that we mentioned instead of just a single message.
In the final example we are using a Change node to accomplish the same thing as the function node did previously. The first rule in the Change node sets the value of the states parameter of a flow object named textObj to a value of 0. The second rule sets the value of the text parameter of the same flow object to the value of the incoming message payload. Then the third rule sets the value of msg.payload to the object of textObj, the same object that we just set the parameters of. It then passes the modified message out to the UI Feedback node.
We can now use the Inject nodes to send messages into this Change node and see that our Text is updated on our button.