A TSL connection can help you speak the same protocol in either direction: send tally and labels out to a multiviewer or UMD display, or receive tally state in from another system that controls it. Both directions use the same connection type, so one system handles both without separate integrations.
Before you begin#
You need:
- Access to Routing → Tally / UMD → TSL Connections.
- For sending: the display's IP address or hostname and its TSL port.
- For receiving: the address and port the sending system will connect to, and awareness of which network interface should accept that connection.
- The TSL version and transport your display or upstream system actually supports.
Choose a direction#
- Open Routing → Tally / UMD → TSL Connections.
- Select Add.
- Enter a Label.
- Set Connection Type to Client (Connect) to send to a TSL server, or Server (Listen) to receive from a TSL client.
- Continue with the direction-specific fields below.
- Select Create.
Client (Connect) connects to a TSL server: this is the usual choice for sending labels and tally to a multiviewer or UMD display. New connections default to Client (Connect).
Server (Listen) listens for incoming TSL connections instead: choose this when another system, such as a switcher's own tally output or a third-party controller, needs to send tally and labels into Buttons.
Send tally and labels to a display#
With Client (Connect) selected:
- Enter Host: the IP address or hostname to connect to.
- Enter Port.
- Select Protocol: TSL 5.0 UDP (the default), TSL 5.0 TCP, TSL 4.0, or TSL 3.1 (Legacy). Match whatever your display actually supports; don't assume its protocol from the default.
- Optionally set Repeat interval (ms) if the receiver drops a lamp shortly after a one-off frame: it resends the full current tally state on that interval (100–60,000 ms) instead of only when it changes. Leave it at 0 (the default) to send only on change.
Receive tally and labels from another system#
With Server (Listen) selected:
- Set Listen address: All interfaces (0.0.0.0) to accept connections on any network interface, or Localhost only (127.0.0.1) to accept connections only from the same machine.
- Enter Port, the port the sending system will connect to.
- Select Protocol to match the sending system.
To turn what arrives on this connection into Tally Channels on your own ports, create a Provider and set its condition type to TSL Server Input, then configure which address and tally position it should watch. This is what lets an upstream controller's own tally decisions flow into Buttons' tally model instead of staying isolated on the connection.
For a simple case, reading a Server (Listen) connection's incoming state as a button or workflow feedback directly is often faster than building a Provider and Consumer around it. Add the TSL Input internal feedback (from the same Feedback picker as any connection's own feedbacks) and configure:
- TSL Connection: which Server (Listen) connection to read from.
- TSL Channel: the address to watch (0–126, default 1).
- TSL Screen: the screen to watch, or leave it at Any to merge every screen received on that address (TSL 5.0 is the only version that sends screens other than 0).
- Read: Tally State to evaluate the tally condition below, or Label to read display text instead.
- With Read set to Tally State, choose which condition counts as true: an overall tally (Any tally, Any red, Any green, Any amber, No tally) or the same set scoped to just the Left, Text, or Right tally position.
- With Read set to Label, choose which field to read: Text, or the Left, Text, or Right tally color.
The feedback shows a live preview of what the connection has actually received on the selected channel once a connection is chosen, so you can confirm the address and screen are right before saving.
This is a shortcut around the full Provider/Consumer model in
Understand the Tally system, not a replacement for it: use it when a button or workflow just needs to react to one TSL channel directly, and reach for a Provider and Consumer when the same tally needs to follow routing or drive more than one output.
Confirm the result#
Open the connection to see its live state:
- A Client (Connect) connection shows Output State ("TSL data being sent to receiver"), one row per address currently receiving tally or a label.
- A Server (Listen) connection shows Received State ("TSL data received from external devices"), one row per address the connection has actually received data for.
If a Client (Connect) connection reports Connecting/healthy but the display shows nothing, the connection succeeding doesn't prove the display is using the data: for UDP transport in particular, Buttons can send without an acknowledgement. Verify on the display itself.
Lock a tally position for testing#
Each row in Output State or Received State lets you lock an individual tally position (right-hand, text, or left-hand) to a specific value, independent of any Consumer's own Test Mode. This is useful for confirming a display responds correctly to a specific indication without needing a live route or an incoming signal to produce it.
Locked positions stay forced until you release them: Release All (N) clears every position you locked on this connection; if other connections also have locked positions, Release All Connections (N) clears all of them at once. Release test locks after you're done; a locked position keeps showing its forced value even after you close the page.
If you get stuck#
What you see | What to try |
|---|
A Client (Connect) connection won't reach the display. | Confirm Host, Port, and that Protocol matches what the display actually supports. |
A Server (Listen) connection never receives anything. | Confirm the sending system is configured to connect to this Buttons host's address and the configured Port, and that Listen address isn't restricted to Localhost only if the sender is on another machine. |
Data arrives, but no Tally Channel ever activates. | Confirm a Provider exists with condition type TSL Server Input, watching the same address and tally position the sender is using. |
A locked test value won't clear. | Use Release All (N) on the connection, or Release All Connections if locks exist on more than one connection. |
Where to go next#