Last year I built a festival stage installation as a big ring of LED (864 LED) run by Pixelblaze. It was rotating sound reactive patterns with occasional pattern change or color/parameter input from me to change the mood.
This year the stage will be bigger, so the festival is adding some DMX fixtures around (basic RGB lamps). These lamps are currently driven in DMX through a Artnet to DMX decoder controller through Luminair, a iOS app.Is it very basic and we can mostly control color and a few animations modes “built-in”.
I’m struggling to see how I could operate these together with my ring.
I understand I can go 3 ways:
full artnet control of the ring: big downside is that I will lose most of the cool animations I programmed on Pixelblaze, or then I need a VJ operator, ditch Luminair for Resolume and replace Pixelblaze by an Artnet pixel pusher (or Flamecaster).
interpret the DMX signal to change Pixelblaze patterns, and (that’s the important point), adjust pattern color to match what is sent to the DMX fixtures. I guess this would need me to write a full DMX driver in the pattern (if it’s even possible), but what about using a DMX decoder that could maybe output some analogue or digital signal I could read with Pixelblaze GPIO ? Technically I need only basic info: color mostly.
control directly everything from native Pixelblaze (color and patterns), and use GPIO to send a DMX signal to other appliances ? That sounds complicated as well but that would be the best because I would be able to adjust dynamically to colors changes generated by my patterns (solution above would force me to use mono-color patterns mostly)
Or am I being too ambitious and and I should look for more pro solutions + VJ ?
Thank you !
Until PixelBlaze adds ArtNet support, especially using an ArtNet channel for picking patterns or setting pattern variables, I would look into two potential directions. Both assume (from experience) that the ideal solution is to use an existing lighting console with DMX or ArtNet output. This way, if you take your Pixelblaze fixture to another show where the operator is using a GrandMA or WMX1 or Lumenair (the three I’ve used) or any other DMX controller, you can just show up as another DMX lighting fixture to control.
This assumes your not looking for Flamecaster because you don’t actually want to send 3 ArtNet channels per pixel to control the individual color of every single pixel - you probably want to use one ArtNet channel to select an existing Pixelblaze pattern you invested time in, and another to set the color. In this way, you can more reliably trust WiFi in a production setting because you’re not trying to cram lots of pixel data every frame over the WiFi, you’re just sending set-pattern activation commands and one or two palette values. Pixelblaze continues to handle the heavy work of rendering amd understanding the map, and you don’t need to figure out Resolume (or better, Chromatik) and code new patterns.
More effort: Python ArtNet to Pixelblaze-client bridge on a Rasberry Pi.
I’d use the Ethernet port as your ArtNet receiver, and code a simple Python ArtNet receiver (see example code from Flamecaster) that translates the ArtNet (DMX) channel values into commands you send out over the RPi WiFI to Pixelblaze (ideally very close by) using the Python pixelblaze-client library.
The upside here is you don’t need to change anything in your Pixelblaze code and it’s going to be quite flexible, downside is you need to code Python and work on a RPi, which has a learning curve.
Less effort: DMX-to-analog-voltage.
Use one of these, $31 and read up to 4 channels of values of analog input. In your Pixelblaze patterns you can add code to switch modes in one pattern or switch patterns, as well as select colors or trigger other effects.
To use it with Lumenair, you’ll also want to pair it with some ArtNet to DMX adapter - there’s a lot of cheap wireless and wired options here.
Downside is adapting your pattern code a little, soldering up a voltage divider or three, and needing to figure out the ArtNet side. I ultimately still think it’s slightly less effort unless you code python daily and have experience with RPi.
It’s actually really simple to make Flamecaster treat the whole Pixelblaze as an RGB DMX fixture – you just change the pattern running on the Pixelblaze to use the first color it finds for the whole display, then lie to Flamecaster when you setup the Art-Net channels and tell it there’s only one pixel.
If you wanted to extend this logic to pattern changing or other things (provided you’ve got something on the controller side that can handle this), you just extend that to two Pixels – one for the color and one for pattern or other control information.
FWIW, I wouldn’t recommend using Flamecaster to stream a lot of pixel data to a single Pixelblaze in a festival environment. As the number of pixels you send goes up, it becomes very, very reliant on having near-perfect wifi performance. One or two though – no problem.
I think having DMX / OSC control over parameterized Pixelblaze features makes a TON of sense. Stuff like brightness, playlist position, and some kind of mapping to controls like sliders. TONS of sense. This lets you bring in PB to DMX setups while PB gets to do what PB does best, render awesome patterns locally. No FPS or bandwidth issues, a lot less headache with DMX limitations you’d normally hit pushing pixels instead of control data.
I also think that in some cases pushing pixels to PB makes sense - mainly when you are switching between a stand alone setup where PB runs the show, but still want to bring in the fixture for a larger show driven by a laptop or something.
This does sound like it’d be worth some experimentation.
I’ll make small update to Flamecaster to let you easily run a Pixelblaze in “Fixture” mode. You’ll be able to send it commands on individual DMX channels, instead of just as 24-bit pixel data, and you can run a pattern to interpret the channel data on your Pixelblaze. (I’ll also supply a “Generic RGB Fixture” pattern as an example/test pattern – it should be easy to configure with any controller software.)