Create your first button covers adding one feedback. This page covers stacking several feedbacks on the same button, testing a variable's own value as a feedback, and generating a feedback per choice the same way you can with actions.
Before you begin#
Stack more than one feedback#
A button can hold as many feedbacks as you need, each independently active or inactive, each overriding its own set of Button Content and Button Styling fields when active. This is how a single button reflects more than one piece of state at once: for example, one feedback that sets Context Background Color when a source is on preview, and a second that sets Background Color when the same source is on program, letting both states show simultaneously on a three-line layout.
Later feedbacks in the list are evaluated after earlier ones, so if two active feedbacks both target the same field, the one lower in the list wins.
Test a variable directly as feedback#
The Internal Expression feedback isn't tied to any connection: it evaluates an expression you write against any variable and reports true or false, the same way a connection's own feedback would. Use it for logic a connection doesn't expose directly, such as checking the current hour or comparing two variables. It gets the same Preview and Test controls as any other feedback, so you can confirm the expression evaluates correctly before relying on it.
Generate a feedback per choice#
When a feedback's own field is a dropdown of choices, its ... menu offers Create Button Repeater from choices, the same as an action's dropdown does. This is how a repeated set of buttons gets matching feedback: for example, repeating an ATEM's Set Program input action across every input, then repeating an On program feedback the same way, so each generated button both switches to its own input and lights up when that input is actually live.
Both repeaters need to reference the same option list (for example, both keyed off the connection's own input list) to stay aligned button for button. The
Repeater tab's
Data Sources list shows every action and feedback repeater feeding the current layout together, so you can confirm they're aligned, see
Build more capable button actions for the full repeater mechanics, including the
$(self.repeatIndex)/
$(self.repeatDataId)/
$(self.repeatDataLabel) variables and the
Customize Data & Labels editor.
Feedback repeaters don't have an encoder-selector equivalent: encoder selection is an action-only concept, since it drives what an encoder's turn does, not what a button displays.
If you get stuck#
What you see | What to try |
|---|
Two feedbacks conflict on the same styling field. | Check their order in the list: a later feedback overrides an earlier one's value for the same field when both are active. |
A repeated feedback doesn't match up with its repeated action. | Confirm both repeaters are built from the same option list, see the Data Sources list on the Repeater tab. |
An Expression feedback never turns true. | Use Test to check the expression directly, and confirm the variable it references is actually populated. |
Where to go next#