Advice for interactive installation

Hi folks,

I’m helping out with an LED sculpture project that utilizes four PixelBlazes and (so far) one Raspberry Pi. The Raspberry Pi is running Firestorm and my Python script, has an analog to digital chip on a shield, and is sending range data on eight IR sensors.

Right now I’m using collecting the range data from the sensors and using that to influence the sound and visuals of the installation. The sound is coming from the Pi, so that’s straightforward enough. Control of the visual is currently being managed from the Pi, making a web call on the Firestorm service, which then calling each of the PixelBlazes, adjusting brightness on a running pattern.

I’m wanting to control and influence the patterns on the PixelBlazes in a subtle way. Ideally I’d like to be able to set a parameter on the PixelBlazes that the patterns can read and use in their pattern scripts. I’m not sure if Firestorm or the PixelBlaze firmware support that kind of thing.

Let’s say we wanted to have three levels of LED ‘activity’, low, medium, and high.

Approach #1 would be to code three variations of one pattern and tell Firestorm to switch between the patterns based on IR range sensor readings. My concern with this approach is that it would be obvious when the patterns changes, rather than smoothly shifting from one to the other.

Approach #2 would be to have a pattern running on the 'Blazes that can take a parameter somehow, and tell Firestorm to pass that parameter along to the Blazes. I don’t know if the system supports that idea or not.

Approach #3 would be to add sensors boards to the Blazes and split the audio track off from the speakers, to feed into the sensor board input. In this approach, the IR range sensors would drive the dynamics of the audio, and that audio would indirectly feed “data” to the Blaze scripts via the sensor board input.

Is Approach #2 possible? Or is there another way I’m not considering to pull off this kind of control?



I think approach #2 is the way to go.

Pixelblaze has a websocket api that allows you to read and set variables in a pattern, as well as control other settings on the Pixelblaze. Here’s documentation – the websocket info is a page or so down.

Firestorm talks to the Pixelblazes via this api, so you could certainly modify it to send whatever variables you need. Since you’ve already got a Python script running though, it might be easiest to send variables from your script.


Oh, that is fantastic, exactly what I was looking for. Thanks for the pointer!