That was going to be my point as well. My “production” application runs light shows for electronic music events. The only state that matters is in-memory in the STM. There is no database. STM works wonderfully in the rare cases where there are multiple values which need to be changed in a coordinated way.
Indeed, without OLA I would not have even been able to get started. And at their request, I pulled my Clojure interface for OLA into a separate library, ola-clojure [1] which Afterglow now uses, but which can be used by anyone else who wants to control lighting from Clojure at a lower level than Afterglow provides.
Thanks! I was floored when a colleague told me he saw Afterglow on the front page of HN this morning, I wasn’t even aware it had been submitted.
Your ideas of crowd feedback input are interesting. If you can get those encoded as MIDI or OSC somehow they could feed right into cue variables and effect parameters. As for ambient noise, one of the next big areas I want to explore is audio input and FFTs so that effects can respond to energy at different parts of the audio spectrum, and let you build sound-driven light shows—like some multi-head fixtures can do already, but spread spatially over your entire lighting rig, regardless of who made which piece.
I hope you can explore building some of those ideas and let me know how they go. I’ve found the framework so far to be very productive for integrating with new concepts—I added control of laser shows via Pangolin Beyond over UDP in a weekend. The learning curve is steep (less so if you know Clojure) but I’m happy to help and answer questions, and that’s been improving the documentation too.
And thanks for your feedback about the README. I know it can use more work, it’s hard to explain something this sprawling, but I keep improving it. I also want to shoot some video of the rich grid controller interface on the Push and Launchpad, how they tie to the web UI and other MIDI controllers, and how effects can react to pad pressure. But usually I’d rather code a new feature than take the time to do that… Which is why the only performance video I have up so far came from another user.