-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
31 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# Cesar | ||
A unified lighting / sound / video controller for theatrical applications | ||
|
||
## About | ||
This project stemmed from a necessity to control a sound board, a lighting board, and multiple video projections simultaneously with realtime cues for a theatrical production of "Cesar and Rubin", by Ed Begley Jr. | ||
|
||
|
||
### Architecture | ||
|
||
For the show, we used Qlab4 as the master controller, which sends OSC messages (with SLIP encoding) to Cesar, which interprets the command and translates it to the appropriate device, along with all other cues currently running. | ||
|
||
Everything is built around an iPython kernel (using magic functions). On startup, the `@line_magic cesar()` function is loaded, which attempts to set up the following: | ||
|
||
- ##### QLab | ||
Connect to QLab over OSC, and | ||
- ##### Sound | ||
Connect to Allen & Heath QU-32 as a USB midi device. | ||
- ##### Lights | ||
Connect to EOS Element lighting console over OSC protocol | ||
- ##### Video | ||
Create a tkinter GUI, sized to the full resolution of the external monitor | ||
- ##### Control | ||
Create a secondary tkinter GUI window for quick access to controls | ||
|
||
After everything is connected, Cesar is ready to accept OSC commands, while the python interpreter remains ready to accept new commands, used to change settings on the fly as needed. | ||
|
||
|
||
### Commands | ||
All cues sent to Cesar are decoded with the SLIP protocol (RFC 1055) and then translated into its compilable python equivilent. For example, to fade an audio channel, send an OSC message such as: `/mix/cesar v`, which becomes `mix('cesar', v)`, executed in the iPython namepace against the sound module, which is sent to the sound board over USB with the appropriate midi values according to the A&H spec and the patch list. | ||
|
||
The advantage here is many disparate effects can fire simultaneously, and still leave the command line free to execute emergency cues in the context of the live show. |