Over-engineering a chandelier

I’m currently working on an led chandelier consisting of 30 of pendant lights, each with about 80 leds. (That is ultimately going to be controlled by home-assistant.io)

I was originally trying to create something to handle a variety of animations from near scratch using the OLA python bindings, but then I came across the wonderful bibliopixel project.

While I’m still trying to step through all of the pieces of bibliopixel, it looks like a lot of the heavy lifting is taken care of. I will probably be using the recently created Artnet driver to send data to this pixel controller.

However, I do believe have some interesting challenges for my project:

  1. Interaction: I’m hoping to be able have real-time adjustable parameters for the animations (e.g. speed, color, brightness, frequency…Db).
  2. Simultaneous animations: I would like to be able to fade between active animations.
  3. RGB APA102 and WhiteWhiteWhite APA102: As this will also be used as a regular light, I’m also going to be using pure white pixels too, which throws a lot of the RGB assumptions out of the water.
  4. The layout: The design of each pendant will consist of 100 pixels (half RGB and half WWW) wrapped in a helix, candy cane style pattern around a piece of aluminum tube. I believe this should give me the most even spread of pure white light when needed.
  5. I’m hoping to be able to design effects using both a linear helix mapping as well as a translation into a more standard grid wrapped around a cylinder for effects that need vertical or horizontal movement
  6. Each pendant light is going to have xyz rotation parameters to indicate where it exists in space for handling animations spread across multiple pendants.
  7. Furthermore, the lights are going to be split across two spaces, so being able to segment an animation to a portion of the layout would be desired.
  8. The power consumption: I’m also looking to limit the total power consumption of each pendant so that I don’t have to have each light hanging by a thick cord. By treating each pendant as a unique object, I hope to be able to set a max total brightness, which would be used to to automatically scale down the array for each pendant as needed without compromising the brightness of a single lit pixel.

Hopefully I’ve not gone too far into the weeds with this, but I would be interested to hear anyone’s thoughts on how to overcome some of these challenges as it relates to the bibliopixel project.

Thank you!

1. I have just finished adding the ability to do almost any sort of real
time adjustment of parameters from an external control source. I need to
do a little more cleaning up before I emit a demo but that's all there.

What we don't have is the ability to listen to sound! However, there
would be two ways to do this. One is to have a separate program send us
the information through ArtNet or other means. Another, better way is to
write a Control that receives this data using some sort of third-party
library. We already have that for Keyboard, Midi and soon ArtNet

The audio stuff is on the cards - the programming will be minimal but the
issue is going to be choosing from between the many such libraries.

We have a very good starting point though:
https://github.com/ManiacalLabs/BiblioPixelAnimations/blob/master/BiblioPixelAnimations/matrix/spectrum/init.py