Theater System Overview

The theater software system is intended to run our class show. It is being developed with the following objectives in mind:

The system runs on a dedicated Ubuntu Linux server located in the theater space. The software is structured as several independent servers which primarily communicate using UDP networking and the Open Sound Control message format (OSC). The server provides a VPN for secure communication with external performance tools.

Data Flow Block Diagram

Following is an SVG figure showing the data flow through the theater system. It may be easier to read by opening the frame in a separate window, if your browser allows.

digraph input_matching { node [fontsize=10] edge [fontsize=8] dpi="72" size="12,12!" // declare all nodes lights [label = "light fixtures"] steppers [label = "stepper motors"] arduino [label = "Arduino\nStepperSpline"] dmx [label = "DMX USB Pro"] motion [label = "motion-server.py"] lighting [label = "lighting-server.py"] control [label = "controller.py", style = "dashed"] bridge [label = "MIDI-bridge.py"] player [label = "MIDI-player.py"] VPN [label = "WireGuard\nVPN", shape = "invhouse"] Live [label = "Ableton Live"] drumpad [label = "MPD218 drum pad", shape = "box"] midifile [label = "MIDI data file"] drumsim [label = "virtual_mpd218.py\nPyQt6"] colors [label = "color presets", shape="cylinder"] paths [label = "spline presets", shape="cylinder"] show [label = "timelines", shape="cylinder", style = "dashed"] // declare all edges arduino -> steppers [label = "CNC Shield"] dmx -> lights [label = "DMX"] motion -> arduino [label = "USB"] paths -> bridge paths -> player lighting -> dmx [label = "USB"] colors -> bridge colors -> player control -> motion [label = "OSC UDP"] control -> lighting [label = "OSC UDP"] show -> control player -> motion [label = "OSC UDP"] player -> lighting [label = "OSC UDP"] VPN -> motion [label = "OSC UDP"] VPN -> lighting [label = "OSC UDP"] bridge -> VPN [label = "OSC UDP"] Live -> bridge [label = "MIDI"] drumpad -> Live [label = "MIDI"] drumsim -> Live [label = "MIDI"] midifile -> player [label = "MIDI"] label = "Theater System Data Flow" }