Tally Arbiter 1.2 – support for newtek tricaster, GPO Output, and tsl 3.1 protocol conversion

A few weeks ago, I released some free tally light software to the community. I’ve had people checking it out and I am excited to be able to offer some more features!

Some highlights in the 1.1 release:

  • Overall performance improvements
  • Fixed an issue where Devices added during runtime did not obtain a proper initialization state and would not assign tally data properly until the server was restarted
  • Fixed an issue where Devices mapped to OBS Studio sources could not correctly be in both preview and program bus at the same time (when in Studio mode)
  • Better checking on Source connection states
  • TCP/UDP ports are now verified as in-use or reserved to help eliminate user errors
  • More verbose logging in the server console
  • All tally data received by all Sources is now sent to the Settings page (while open) for logging and diagnostic purposes
  • New Producer page; allows users to view all device states (tally information) without having the Settings page open. Created in dark mode for in-service viewing
  • Documentation added to Settings page to assist in initial setup and learning
  • OSC added as a Source type to trigger tally states
  • OSC added as a Device Action type (supports multiple arguments)
  • “Python” client renamed to “blink(1)” in preparation of other types of listener clients that may also use Python
  • Version is now displayed on the Settings page for diagnostic purposes

Now, I am releasing version 1.2! The highlights:

  • Newtek Tricaster support now included as a tally source type
  • OBS can now properly discern whether it is in preview or program
  • Support for TSL Clients – Tally Arbiter can now send all device states (derived and arbitrated from any source type) as TSL 3.1 (UDP or TCP) out by specifying a TSL Address for each Tally Arbiter Device. This can be used to drive UMDs and other tally receiving interfaces by acting as a protocol converter between all source types and TSL.
  • New Python listening client – GPO Output! Now you can trigger just about anything using the GPIO ports on a Raspberry Pi.
  • Bug fixes and UI improvements
  • More documentation and upgrade instructions

The biggest feature in this release is the new TSL Clients functionality. Tally Arbiter can now send out TSL 3.1 data to any number of connected devices any time a device changes state within Tally Arbiter. So, you can have, for example, a multiviewer of one switcher dynamically show whether a camera is in use on that switcher or a switcher of an entirely different brand/model by using Tally Arbiter as a protocol converter.

Here’s a video to show how the new TSL Clients feature works within Tally Arbiter and how to integrate it with a switcher like the Ross Carbonite. In this example, tally data is coming from both a Carbonite and a Blackmagic ATEM and the Carbonite multiviewer reflects that in real-time.

If you’d like to check out Tally Arbiter or learn more about it, check out the GitHub repository here: https://github.com/josephdadams/TallyArbiter/


  1. Man this is great!
    I actually just built a raspberry pi zero on saturday, but using an RGB led. I had modified your listener script (having never used python before), and it was so easy and straightforward. I’m sure I’ll still need to tweak your new code to fit my RGB.
    It’s cool to updates this quick! Very thankful, hopefully soon we’ll be using them at our church!


    1. Hey, that’s awesome! Please send me some pictures of this in use, I’d love to see how you are using it at your church. You can email me, jadams AT fellowshipgreenville.org. Thanks!


      1. Hello, not sure if this would be better via email or if this is fine. I don’t really know python, but your old code made enough sense that I got it modified to work with my RGB led off of the GPIO pins.

        Now I’m trying to get it to work with your new tallyarbiter_listener.py, and I can’t. I believe this is because of how my RGB Led is, but I’m trying (literally just guessing all over the place, editing the file and trying again until it works).

        So far, I got the “flash” button to work, it flashes twice green, and twice red after, but I can’t get it to follow preview/program bus.
        I’m not sure if you can help me with this custom code, but I’ll keep tinkering. It is proving difficult as I’m a novice programmer.

        This is a little excerpt of a code I was using to test the LED on my pi so you can understand how mine works:

        Notice the weirdness of my LED, GPIO.LOW turns them on, GPIO.HIGH turns them off due to it being a common anode type.


  2. Way to go Joseph. I am excited about the GPO Output. Thanks for your work getting the NewTek Tricaster support sorted out. This is by far the most flexible Tally solution available.


    1. Yes. Tally Arbiter is a server that you run that collects the tally data from your sources like your ATEM, tricaster, etc. Then you install the blink(1) listener (or any of the other provided listener clients) onto the remote devices that you want to receive tally data from your Tally Arbiter server.


      1. Ok ok ok I’m coming along on this journey…
        So the readme file in Tally Arbiter is the instruction I need to set up on the Mac that’s connected to my ATEM switcher.

        The Blink Listener Master is what I do to the Raspberry Pi. Then put the Ip of the server AKA my Mac.

        If I set up my raspberry pi with the software from their website, will all the instructions still work? Do I have to use Balena?

        Also – could the listener also be the server? What’s keeping it from just seeing the IP of my switcher?

        Thanks so much! This is literally saving us thousands…


      2. You don’t have to use Balena Etcher if your pi already has an OS. You just need python3 to run the blink listener. You can run a Tally Arbiter listener client on the same computer as the Tally Arbiter server, but you still have to have the server running. Glad my hard work to create this free software is saving you money!


      3. Got it! Thanks for the help!

        Is there a way to automate the server starting at boot, and still have listener automatically start? I’m trying to set it in rc.local but if I make the server automatically start, it’s not giving enough time for the listener to connect…


  3. That worked! But when I boot straight into terminal, it’s saying “tally data received” a million times over in blue font and not letting the listener activate.

    When I boot into desktop mode it works great! Just gets stuck a little here and there…

    Is that to be expected?


      1. I’m using Blackmagic atem television hd. If I unplug the ATEM from the network, it stops the constant tally data updates, and I can start the listener.
        But I’m expecting to turn these off and on every week…

        When I say a million – I mean it’s like a constant barrage of lines – I can’t type anything – it’s just continual lines of tally data.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s