State Feedback
Loopy Pro is equipped with a state feedback system that widgets’ visual states in sync with the elements they control.
For example, if you create an on-screen fader to control a plugin’s delay time, the fader will be updated to reflect the plugin’s delay time setting whether it is changed by the fader, an interaction with the plugin itself, a MIDI binding, or changing the plugin’s preset. Or, you might have a button that triggers playback of a particular clip. Whenever that clip plays, the button will become highlighted to indicate that the clip is playing — no matter what triggered the playback.
For buttons, button grids, and radio buttons, state feedback determines whether the button is lit/highlighted or unlit. For stepped dials, state feedback can determine which step is shown as active which means that it will also affect what step is triggered when the dial is triggered or nudged.
State Feedback Options
Loopy Pro provides a State Feedback option for certain widgets that determines how it synchronizes the widget state with its corresponding actions. Buttons, stepped dials and radio buttons have State Feedback options available via the gear wheel icon in the widget’s setup panel. The options are:
- First Action - set the widget’s state based on the state of the widget’s first action (or the first action of a widget step or radio button). If a widget’s actions are to play clip 1 and turn on the reverb. The widget’s state is determined by solely by whether clip 1 is playing or not.
- All Actions - set the widget’s state based on the state of all of the actions together. If a widget’s actions are to play clip 1 and turn on the reverb, it will show as on/highlighted only when clip 1 is playing and the reverb is on. If you turn off the reverb, the widget will become unlit even if clip 1 is playing.
- Disabled - ignore the state of the widget’s actions. For radio buttons and stepped dials, this setting leaves the dial or radio button at the last step that was active. This setting is used when you want the widget to stay where you set it regardless of what is happening in Loopy Pro. See the section When to Disable State Feedback below.
How Are Actions Matched?
Loopy Pro synchronizes the widget's state with the actions it controls and the state of the action targets. For example, if a button is set to "Play Clip 1," it will be highlighted when Clip 1 is playing. If the action is "Mute Clip 1," the button will highlight when that clip is muted. Similarly, if the button's action is "Mute All Clips," it will only be highlighted when all clips are muted. Pressing the button will mute all clips and highlight the button (unless State Feedback is disabled). If you unmute any clips, the button will no longer be highlighted.
Some actions in Loopy Pro don't have an associated state for the app to track. When an action lacks a state, Loopy Pro treats it as "false." For example, the "Send MIDI Message" action doesn't have a state that Loopy can monitor, as it has no way to determine the state of the message receiver. If a widget performs multiple actions and one or more of them can't be tracked, the "All Actions" state feedback will always indicate that the state is off.
“Trigger Widget” actions match if the triggered widget is on/highlighted after triggered. If you have a button that triggers another button, for example, the first button’s state will be determined by the state of the button it triggered.
There are ways to work around the lack of state-matching for such actions. See Tech_Note:_Persistent Send_MIDI Widgets
When to disable state feedback
State feedback is helpful when you want the widgets to updated to reflect the actions they trigger. There are situations where you will want Loopy Pro to leave a dial or radio button set to its assigned step regardless of the underlying actions. You will want to disable state feedback for radio buttons and stepped dials that will be used to trigger actions regardless of the state of your clips and widgets.
Here are a couple of examples where you would want to disable state feedback:
- Synth Routing Switch example - Let’s say you want a group or radio buttons that mutes all the synths but the one. Each radio button has two actions, trigger the buttons called mute all synths then unmute the targeted synth. We can’t use first action for state feedback because the first action mutes all the synths and when the radio button has executed all the actions, there will be a synth that is not muted So, we need to disable state feedback. The radio button will reflect whatever radio button was pressed.
- Context-Sensitive Dial example - In the article Context-Sensitive Actions Using Follow Actions and a Stepped Dial, we discuss using a dial that is set up by follow actions to a step that will be triggered manually. If State Feedback were on, Loopy Pro might change the dial in an unhelpful way.
Testing State Feedback
There may be times when you want to use state feedback with a group of actions, and it is not behaving as you expect. When that happens test each action individually in a widget to see what state results from triggering the widget.