DMX Lighting Sequence Player

Portland CORE effigy at Burning Man will be using DMX controlled lighting this year.  At least that’s the plan, but a low-cost and low-power way to automatically play the lighting sequence (without a PC) is needed.  Here’s a little board I made for the purpose.
Click “Read more” for source code and other technical details.
DMX Lighting Sequence Player
First, the lighting sequence is created using Vixen version 2.  Creating the sequence is pretty simple, just click ranges of time slots and use the toolbar buttons to turn the light on, off, fade up, fade down, etc.  Vixen has lots of little features to create patterns, but so far I’ve only used the simplest ones.
One nice feature of Vixen, which I knew existed but never tried back on the Hand-Eye Supply float (Tobias did most of the Vixen stuff) is the Sequence Preview.  It takes a photo of your project and then you can define pixels that will overlay the image for each lighting channel.  Here’s a screenshot:
Vixen version 3 greatly expands the preview feature and adds lots of new features, but it doesn’t use the simple time slots that we need from version 2.  Maybe someday I’ll revist this project and make a way to use version 3, but for now it’s limited to Vixen 2.
Vixen saves files to its Sequences folder as a “.vix” file.  It’s XML format, with a big binary dump of the raw sequence data encoded as base64.  I started reading about Vixen’s file format, determined to write a program to play it.  Pretty soon, I found Bill Porter had already done it, and written a very nice tutorial.
I just modified Bill’s awesome script.  I’ve done very little with Python before, but it’s a pretty easy language to pick up.  There are lots of tutorials and great documentation online.  But being a Python novice, I probably didn’t do everything the best way.  At least it works.  Actually, it apparently only works with Python 2.7, but not Python version 3.  Again, I’m a Python novice….
It turned out Bill’s script could not read a .vix file with the image preview.  It finds too many channels, because the channels within the preview get double counted.  Bill used Phython’s minidom XML parser with getElementsByTagName() to find all the channels.  I found much better documentation for Python’s ElementTree, so I rewrote the script using that to carefully find only the channels in the main section of the file.

For more detail: DMX Lighting Sequence Player


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top