The LED banner is an active RGB LED display, consisting of 8 rows of 80 pixels each fixed on a flexible banner. A Raspberry Pi drives it.
The following can be displayed:
- scrolling fixed images, horizontal or vertical
- scrolling text in various colours
- animated GIFs
- real-time generated images, e.g. game-of-life
The use of a flexible banner makes it easy to transport and easy to put up.
The hardware consists of the following parts:
A Raspberry Pi is used because it can be controlled over the network, can run perl scripts and has a fast SPI port to drive the LEDs.
The power supply has been chosen to supply sufficient current for the LEDs. When the space is closed, the Raspberry Pi stays powered from the "standby 5V" output, while the LEDs are powered down.
The display consists of 8 pieces of LED strip of 80 LEDs each. They are arranged in a left-to-right zig-zag manner for ease of connecting them in series.
The LED strip consists of pairs of RGB LEDs, where each pair is controlled by an LPD8806. See  for more information on driving these chips.
The banner itself is custom made, with metal eyelets in each corner for fixation.
The software runs on the Pi and is mostly written in Perl.
To drive the LEDs, a display server written in C does the low-level driving of the LEDs over the SPI port. It also takes care of the white balance and gamma correction.
There is a simple SDL simulator of the display server that can be run stand-alone on a PC to preview led banner animations, effects, etc. The code can be found in the 'sim' subdirectory of the ledbanner repo.
A number of audio visualisation applications can be found on github in the bannervis project.
The way this works is that a squeezelite audio player runs on the raspi, using option '-v' to make the currently playing audio available in a mmap-ed file in /dev/shm. On the audio server, the audio sent to the ledbanner can be synchronised to the klusbunker. The audio visualisation tools read this file and produce image frame corresponding to the audio.
Video of the spectrogram visualisation.