Text Widgets: Display Values from Other Widgets (On Press / On Select / On Change)
under review
AJ Kerezy
Description:
Let
Text
widgets show live or snapshot values from other widgets
(faders, toggles, radios, menus, meters, clip/mixer props), triggered by On Press
, On Select
, On Change
, On Release
, or Timed Poll
. Provide a simple templating syntax, formatting options, and safe cross-page references.Problem:
Labels often need to mirror state elsewhere (e.g., show the value of a hidden fader or the currently selected radio item). Today this requires ad-hoc variables/macros and isn’t discoverable. There’s no direct way to say “when I press/select here, display that control’s value there,” with formatting, scope, and low latency.
Proposed Solution:
- Binding & Templating:
- Inline tokens:
{widget:<nameOrId>.value}
, {clip.selected.name}
, {mixer.track[2].pan}
, etc. - Multiple tokens per label with text, e.g.,
Delay: {widget:DelayMix.value|pct0} @ {tempo.bpm|0.0}
. -
Format pipes
: |0
, |0.0
, |pct0
, |ms
, |Hz
, |signed
, |pad2
, |upper
, custom |map
tables.- Triggers (per Text widget):
-
On Press
(of a target widget), On Release
, On Select
(radio/menu), On Change
(value changed), Interval
(e.g., 10 Hz), and Manual Refresh
. - “
Snapshot vs. Live
” mode: one-off capture at trigger vs. continuous subscription until dismissed. -
Debounce/Throttle
to avoid spam during fast moves; hold/long-press
variants.- Targeting & Scope:
- Reference
by name, tag, color, or ID
; choose Nearest on Page
, This Page
, or Project-wide
(cross-page safe). - Safe failure text (e.g., “—”) and warnings for missing/ambiguous targets; picker UI to resolve conflicts.
- Styling & Layout:
- Auto-fit text, min/max font size, marquee for overflow, number alignment options, prefix/suffix units, conditional color (e.g., red when > −6 dB).
- Optional
icon/pictogram
alongside value; supports Genmoji
and embedded assets.- Actions & Variables:
- Actions:
Text → Bind To Widget…
, Set Template Text
, Refresh Now
, Start/Stop Live Subscription
, Set Trigger (Press/Select/Change/Interval)
. - Vars:
text.boundTargets[]
, text.lastValue
, text.isLive
, text.refreshHz
, text.error
.- Debug & Safety:
- Inspector shows resolved tokens and current values; “copy resolved text” for logs.
- Sandboxed cross-page reads (read-only) with permission toggle; rate limit for background polling.
- Advanced:
-
Conditional templates
: {if widget:Rec.state=="record"}● REC{else}idle{end}
. -
Aggregation
: {avg widget:Band*.gainDb|0.0} dB
, {max group:"Sends".value|pct0}
. -
Event queue
: buffer last N changes for quick flick-through (“previous value” recall).Benefits:
- Clear, at-a-glance feedback without exposing the source controls.
- Faster programming—no fragile macro webs for simple readouts.
- Consistent, formatted labels across pages and projects.
- Performance-safe updates with throttling and subscriptions.
Examples:
- A Textwidget on the Master page showsReverb {widget:RevMix.value|pct0}when the Reverb button is pressed, then stays live while held.
- A Radiofor delay times updates a nearby labelOn Select:Delay: {widget:DelayTime.selectedLabel}.
- A compact header displays BPM {tempo.bpm|0} • Grid {edit.grid|note}with a10 Hzinterval trigger.
- Press a “Show Current Send”button: text snapshots{mixer.track[Vox].sendA|pct0}without subscribing.
This summary was automatically generated by GPT-5 Thinking on 2025-11-04.
ultracello
marked this post as
under review