Hi!
Acclaim Lighting makes LED based lighting products. Some of their products include architectural lighting, high brightness fixtures utilizing Luxeon LEDs, and even lighting to cover a whole floor or wall. It all is controlled by DMX-512. Well–almost; the interesting fixture here is the X-Panel Frame. This device consists of 12 5×5 RGB LED arrays, arranged in a matrix. Due to the number of channels, it needs more than 512 channels so it supports “DMX-1000K,” a protocol I am completely unfamiliar with. Fortunately, if you limit yourself to 6 X-Panel modules, DMX-512 works just fine, and the display size is just a bit limited.
Now, of course I was unwilling to use the recommended software provided by Acclaim; it didn’t run on my platform of choice. Actually, I didn’t even have a copy of the stuff. Nor could I find a USB DMX-512 interface. But I did have an idea.
The power of Cocoa allowed me to whip up a little application for my Mac in about two evenings. It took about 2 more days to finish up all the features. But what exactly does it do? First I made the whole display blink, then added some chasing features, and did some automated fading. Simple stuff, but it was lots of fun. It made me want to do more; so I wrote a little function that would translate from normal cartesian coordinates+color to the DMX data, reflecting the physical orientation of the device. An NSImageView configured as an image well later, and I could drag & drop photos and have them displayed on the LEDs. The resolution was low, and my scaling unoptimized, but video was the most fulfilling.
But fancy Cocoa programming does me no good without a way to physically control the device. Fortunately I happened to have my EasyLase USB interface handy. I wired up a level converter with some MAX-485 chips, according to the wiring diagram included in the manual. I had recently finished testing the DMX-512 portion of the EasyLase USB Driver for OS X, but this was the first time I used it with a real device : ). (if you need a copy, let me know)
Please excuse the low quality of the video, I just kinda hacked it together. The screen capture and live video are slightly out of sync, and the CCD in my digital camera simply isn’t able to handle the brightness of the LEDs.
The video clip at the end is complements of Charlie Deets. Please don’t laugh at the poor software interface design; it was just a toy.

Dear Joey,
You are an elite haxor. When I grow up, I want to hax just like you!
Sincerely,
Jerry
Comment by Jerry — August 20, 2007 @ 12:11 pm
http://en.wikipedia.org/wiki/Sigmoid_function
Comment by gargarbot — August 20, 2007 @ 6:09 pm
the video wouldn’t load at first, but that is pretty sweet joey.
have fun at school!
Comment by kristina — August 20, 2007 @ 10:28 pm
Thanks! I much appreciate all of your support.
Comment by Joey — August 21, 2007 @ 9:19 pm
This is just awe inspiring!
I have been wanting to do something like this for a while now.
Thanks for the motivation!
Comment by Eric — August 22, 2007 @ 11:57 pm
what API are you using to interact with DMX controllers? or did you write your own? have been trying to use cocoa to make a DMX controller, but I have no idea how to actually interact with a DMX universe.
Comment by Matias — November 11, 2008 @ 2:37 pm
Matias,
I am using the DMX capability on the EasyLaseUSB card, so I’m using the associated API in the EasyLaseUSB driver (which ported to OS X). It is downloadable on this site at http://www.joeyhagedorn.com/projects/lasers . If you’re just looking to work with DMX, that board might be overkill. Upon searching Google, it looks like a product by the name of “DMX PIPE” is compatible with OS X, but you again may need to write a bit of a shared library level driver with your own API to use it, because it appears that the download link just provides the generic FTDI D2XX drivers.
Because the DMX-512 protocol is so straightforward, it is easy to work with at the driver level. If you’re not afraid of a little C, I’d recommend pursuing it. If you have any more questions, please feel free to contact me via e-mail to discuss this further.
Comment by Joey — November 12, 2008 @ 3:22 am