Bad Apple on the original Blinkenlights software by Chaos Computer Club (20th anniversary)
Channel: Chaotic Neutral Czech
Date: 11/09/2021

This video celebrates 40 years of the Chaos Computer Club hacker group in Germany, as well as 20 years from their legendary Blinkenlights installation in Berlin. Everyone's favorite shadow art video was encoded in the Blinkenlights Movie format and played back in the original editor.

The Blinkenlights website is not functional anymore, you can view an archived version, though: https://web.archive.org/web/20030204221822/https://www.blinkenlights.de/
Get BlinkenPaint2.4 for Windows (32-bit): https://web.archive.org/web/20060627090929if_/http://www.blinkenlights.de:80/download/blinkenpaint-2.4.zip
Download the .blm file: https://drive.google.com/file/d/19Dh8C-VQ10cVLzehnxTH-9pqfA4yqNAn
Download this video in lossless encoding: https://drive.google.com/file/d/15r5mYqf6CJpw4KyTGW3-CHAygimcYhRb/view

Song featured in the video: Bad Apple || German Cover
Original song by ZUN (1998)
Remix & Japanese lyrics by Masayoshi Minoshima, Doujin Circle Alstroemeria Records (2007)
Translation & Vocals: StrawbellyCake (2010)

The Blinkenlights movie is a re-encode of the famous Bad Apple!! shadow art video by Anira (2009).

This video was mostly created using the FFmpeg command line tool. Details of the process:
(I promise to learn to use Linux in the near future, I'm just staying with Windows due to laziness)
First, I downloaded the video using FreeRapid Downloader and used FFmpeg to convert it into a 18×8 GIF at 20 fps with a custom palette of only 2 colors, with some dithering to enhance small features, trying to make up for the lack of spatial resolution using temporal resolution (which turned out less great than expected). The Python Image Library and some code largely stolen from StackOverflow then allowed me to extract pixel values for each frame into a text file, and minor edits using Notepad++ made it into a valid Blinkenlights Movie file. Sadly, the BlinkenPaint software would lag randomly during OBS screen recordings, making it impossible to sync with audio, even with duration times compensated by a speed increase. So I wrote an AutoHotKey script to regularly press the ➡ key and take a 240×200 screenshot of the displayed building, though sometimes BlinkenPaint would miss the key press, giving the generated images randomly inserted offsets. I solved this by altering the .blm file so that every second frame would have a duration of 100 ms instead, and then using AutoHotKey's PixelGetColor function to verify that the duration display had changed before taking a screenshot. The 4384 PNGs of 115 MB total were merged into a lossless MP4 video ("lossless" the same way that JPEG quality 100 works) of 12 MB by FFmpeg, and then its Blend function was used to layer two more versions of this video, delayed by one and two frames, over the base vid with transparency for an afterglow effect. Using my favorite bitmap graphics software, LogoMotion, and some screenshots found online, I faked the program running under Windows 95. The resulting image could be nearest-neighbor-scaled into 1306×1058, to which I added a 22px black rectangle to achieve an exact 1080p vertical resolution. The scrolling marquee was rendered in MS Paint, as neither LogoMotion nor GIMP could process text so large (26982×11 before resolution doubling). The final render was processed by FFmpeg, doubling the size of all assets, placing the building video into the correct place in the fake screenshot, using a linear time-based function for the text's x-position to achieve scrolling, and losslessly muxing audio and subtitles.

Thanks to the Touhou Project and its community for an environment that encourages fan creations and other derivative works, as well as to the Chaos Computer Club for the open source release of Blinkenlights design and software, and their 40-year strive for freedom of information. Too bad I don't have the time or access to a high-rise needed to play this video IRL. Maybe the CCC will make another installation (perhaps with cheap bulk custom-FW WiFi LED bulbs from China to make the installation more "portable" and installable in buildings that are in use during daytime).