Note Dec 2018: an updated version of the project running on Node.js and React is currently in development. The new project has advanced features, such as the ability to skip songs, set timers, and configure the pinout through the web interface. You can view a demo of what the project would look like when installed, or you can check out the source code.
The show runs on a Raspberry Pi and utilizes 8 channels. The project consisted of two parts: an editor to create the shows, and a player.
The editor provides a GUI to create simple shows where channels can be turned on and off in time with the music. The show data can be exported as JSON or as a simple list of timestamps and keyframes.
The player runs on the Pi. It utilizes Python to read the show files, PHP to run the Python scripts, and a locally hosted web page to control the show. It also includes a copy of the show editor, so shows can be designed on the Pi without any importing/exporting.
You can view/download the source code here. See the readme for a guide on getting set up.