I thought I would share my own designed system - maybe someone might find part of it useful.

Two years ago I undertook the idea of building my controllers from the ground up (big mistake lol). Anyways, I have my system tested with 48 non-dimmable channels, plus 400 pixels. My system is very scalable in the configuration, but I don't know how big of a display it will support yet. Next year I plan on having 2,000 to 3,000 pixels or maybe more and of course still the 48 nondimmable channels.

Anyways the system is solely based on a RPI (I know, I could have used FPP), and arduino based micro controllers, SSR relay boards, and shift registers. nothing more.
My dimmable channels are basic 8 channel SSR boards, using shift registers as port expanders.

A few "definitions" of my system.
Vixen: I develop my sequences in vixen (duh)
Director: the device that runs the show. the director is a RPI
Controller: obviously a controller - a controller runs on a RPI. one RPI can be a director and controller at the same time. the director communicates over IP/ETH to the remote controllers using a generic "Serial over IP" type of protocol.
Each controller is divided into one or more sub-controllers, there are two types of subcontrollers 1) shift - i.e. a non-dimmable usually 24 channel controller, and 2) pixel - a pixel node controller using either a arduino or a teensy. The arduino/teensy is connected to the RPI controller via USB cable.

almost everything is configurable within the config.xml file, which is read by the director and controllers at runtime.

Ok, that is enough for now. The code can be found at: The code is pretty complex as it is very flexible. The main program is the pictrl.py (ran on either a director or controller).