Originally we were tasked with automating a DMX board, and syncing some of its functions with audio. There are literally zillions of ways of doing this, especially if your pockets are deep. One option was to use a Gilderfluke or Alcorn-Mcbride product-- a programmable show controller, and interfacing it to an expensive lightboard like ETC or Horizon. However, we had the hardware lying around to change a mac mini, into a full show control system with lightboard function and gui. This is nothing groundbreaking, but it's still fun. Most of all, we didn't have to source a lightboard.
The i/o interface was the Phidgets 0/16/16. This was convenient since it was usb based and provided a total of 16 inputs and 16 outputs, all opto-isolated.
The DMX interface was the Entec DMX usb pro, utilizing a purchased copy of dmxusbpro by Olaf Matthes.
Everything was then tied together in the max/msp programming environment. The "under the hood" was covered up with a nice interface for the general user. The prize-winning max object on this one was "col." It essentially allows a user to program cues via text files (which is nice if you are programming 12 cues at a time to a fixture), without knowing a thing about max/msp.
In the end, for a little under $1000 we have a mini show controller with these features:
-control 1 DMX universe, 512 channels, via GUI.
-trigger events on a schedule for complete automation
-16 digital triggers
-16 digital outputs
-audio and event playback via trigger
-programmable and expandable cues/events
-diagnostic panel (power, status, connection, etc)
It was mostly a rush job, and a lot of sweat was poured when nothing worked, at all. The manufacturer's manual for one of our DMX devices, was written so that a lot of guestamation had to be used. A contractor had also done some funny stuff with dmx to microplex adapters, ensuring that failure was imminent. In the end it was a success. if i had more time, i would have added a log feature and terminal access. The "exciting" bit is that the entire system can be tweaked to interface with shell scripts.