convention live production

convention live production

preparation

though an agenda was set for the convention, allowing us to know what proposals to prepare for, the possibility could have existed that a proposal could get added to the agenda on the floor. so, we processed every proposal that reached the sign-on threshold, regardless of whether it was on the agenda.

displaying live

the convention was in person, but it was also livestreamed via an open source ntc-hosted platform called owncast.

this presented an issue: what displayed on the large screens in the convention debate hall would need to be different than what was displayed to viewers of the livestream.

the solution: i installed two instances of obs, an open source broadcasting platform, on my machine. using node-red, i created dashboards allowing me to click a button in node-red and change any of the displays, overlays, chyrons, and graphics. i also integrated my stream deck, allowing me to physically press pre-programmed buttons to launch commands.

automating the process

[node-red](https://nodered.org) is a low-code app builder at its core. it can be used to visualize data, but can also be used as a clickable dashboard. i deployed a local instance of node-red on my machine and connected it to both instances of obs via websocket.

node-red main page

the main page of the dashboard controlled both the livestream overlay and debate hall display. resolutions, c/b amendments, and potential floor motions were color coded for visual clarity. overlays and chyrons could be toggled on or off as needed.

breaks were controlled by a text field and button, controlling both the livestream and debate hall display.

on the back end of node-red, nodes were created to control obs scenes and plugins. as an example, when toggling the chyron for any of the chairs, their names and chapters were populated in a text file that was dynamically displayed as an overlay in obs in real time.

chair display nodes

each section of the agenda was organized on the back end in node-red, allowing me to easily make updates on the fly as necessary.

any potential floor motion was prepared for, too.