DMX Lighting Sequence Player

Summary of DMX Lighting Sequence Player


This article describes a custom low-cost, low-power board designed to automatically play DMX lighting sequences for the Portland CORE effigy at Burning Man without requiring a PC. The system utilizes Vixen version 2 to create XML-based ".vix" files and relies on a modified Python script using ElementTree to parse the sequence data accurately.

Parts used in the Portland CORE effigy lighting project:

  • DMX controlled lighting
  • Custom built board
  • Vixen version 2 software
  • Python 2.7 script
  • ElementTree module
  • Bill Porter's original script
  • .vix sequence files

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

Quick Solutions to Questions related to Portland CORE effigy lighting project:

  • How is the lighting sequence created?
    The sequence is created using Vixen version 2 by clicking time slots and using toolbar buttons to turn lights on or off.
  • Why was Vixen version 2 chosen over version 3?
    Vixen version 2 uses simple time slots required for this project, whereas version 3 does not use them.
  • What file format does Vixen save sequences in?
    Vixen saves files as .vix files which are in XML format containing raw sequence data encoded as base64.
  • Can the project run without a PC?
    Yes, the goal is a low-cost and low-power way to automatically play the sequence without a PC.
  • Which Python version is compatible with this script?
    The script apparently only works with Python 2.7 and not Python version 3.
  • Why was Bill Porters script modified?
    Bills script could not read .vix files with image previews because it double counted channels within the preview section.
  • What tool was used to fix the channel counting issue?
    The author rewrote the script using Pythons ElementTree to carefully find only the channels in the main section of the file.

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
Scroll to Top