0110.be logo

~ Scareflow: a node-based show controller for Halloween

Every Halloween I build an interactive installation for trick-or-treaters, like last year’s speaking pumpkin. The lesson from last year: keep thing simple. So this year I tried and failed again. But, I learned a few thing and built some reusable software.

Now that LLMs are more capable, it also changed what you can do in a couple of evenings. Before, I did web-based environments since it allowed quickly prototyping by hand, now native applications are feasible which brings a couple of advantages: lower latency, network integration, driving multiple audio devices,… Additionally, there are now AI-systems which are very good at 3D modeling and rigging 3D models: before I was limited to assets I could find.

Scareflow

Scareflow is a node-based show controller. You wire events (key presses, OSC messages) through delay, random and cooldown blocks to sounds, WLED lights, Tasmota smart plugs or OSC output. Sounds start within milliseconds, so thunder, lightning and visuals can be synchronized.


Fig: The Scareflow node editor with the example show.


The glue is Open Sound Control (OSC): small UDP messages with an address like /pierke/scare. It works as low-latency inter-process communication on one machine or across the network. Any environment that speaks OSC can be integrated. If you want to build your own event-based show, Scareflow is a good place to start: the editor needs no code, shows are plain TOML-files. Prompt your LLM for extensions and integrations with other event types.

Check out Scareflow on GitHub to build your own show and extend it with your own events.

A Flipper Zero as remote

This Halloween I rediscovered my Flipper Zero as a programming platform: it has Bluetooth and a Sub-GHz software defined radio built in. Pimpkin Remote is a small Flipper app with two roles.

It acts as a Bluetooth keyboard whose key presses trigger events in Scareflow, and serves as a remote for a smoke machine. The smoke machine responds to 315MHz messages sent from the Flipper Zero directly. Again thanks to LLMs programming the Flipper Zero became much more accessible.

Hallowierke

Hallowierke is a skeleton marionette in the costume of Pierke, the Ghent puppet, projected on a window. It dances, looks around and waves until an OSC message from Scareflow arrives. Then, it is electrocuted by a bolt of lightning. Mwoehahaha.

The player is written in Rust with Bevy. The rigged puppet, 17 bones and nine animations, is generated by a Python script for Blender. Astra by ChatGPT is great at this: it produced a rigged, dressed and animated model, something I would never have attempted by hand. As with Dewey, I now have a moving puppet but learned little about rigging. For a Halloween porch, that is a trade I am willing to make.


Fig: Pimpkin Remote.
Hallowierke dancing, then struck by lightning
Fig: Hallowierke dances until the lightning strikes.

For next year, I will keep it simple.