Candle 2017 is a re-implementation of an interactive art installation by Nuno Godinho, whereby a beautifully framed high quality display shows a candle burning video, against a pitch black background. Blowing into the display triggers natural candle reactions: the flame flickers more or less depending on the blowing strength and can even be fully blown out with a strong enough blow - when so, the base candle burning video is restarted and smoothly faded in after a few seconds.
Originally written in C++ using OpenFrameworks, Nuno never got it to run with acceptable performance on the desired target platform, a Raspberry Pi; it required being driven by a much more powerful and expensive system, like a Mac Mini.
This project is a Python implementation that succeeds in delivering the required performance on a Raspberry Pi.
Heads up: there are no silver bullets here! It's not like Python on a Raspberry Pi has suddenly more performance than well written C++ code on a Mac Mini. It just takes a completely different approach, better leveraging the available resources on the smaller system.
Refer to Running Candle 2017 to learn everything about the requirements, installation, configuring, running, and using Candle 2017.
This project wouldn't be possible without several open source software packages; here's a thank you note to the projects Candle 2017 directly depends on, in particular to their authors, maintainers, contributors and sponsors:
- Raspbian, the operating system based on Debian optimized for the Raspberry Pi.
- Python, the language and interpreter.
- Twisted, the event-driven networking engine.
- txdbus, for its Twisted based interface to DBus.
- autobahn, for its Twisted based WebSocket implementation.
- evdev, for its bindings to the Linux input handling subsystem.
- pylint, a Python source code analyzer.
- omxplayer, a flexible and high-performance Raspberry Pi command line video player.
- ALSA, the Advanced Linux Sound Architecture project.
- chartjs-plugin-annotation.js, a charts.js plugin that draws lines and boxes on the chart area.
For direct dependency completeness, Wires, a Python Callable decoupling library, by one of the authors, is also used.
Lastly, a thank you note to the Raspberry Pi Foundation for the Raspberry Pi.