Project complete! The LEDs are in place, the code is done, the PCB is built, and everything is installed and running. So what is there left to do? Shoot some videos of everything in action!

In all of these videos, the ambilight is generating colors in real time based on the monitor’s image. The monitor image is as-filmed and is not superimposed.


Video #1: Color Test

The first video is a basic color test, demonstrating color matching and motion handling. I couldn’t find a test video I liked, so I decided to make my own!

The video includes sequences of all solid colors, all colors on a two-color polar gradient (180° offset), and all colors simultaneously on a polar gradient. It also begins on white and ends on black.

I’ve uploaded the source video and released it under Creative Commons (Attribution) if you’d like to use it to test your own ambilight. You can find it here.

Video #2: Video Game Demo

This second video is where the ambilight truly shines.

Video games are my favorite thing to use with the ambilight, because you have somewhat direct control over the edge colors. It works fantastic with both beautiful slow-paced games (Firewatch) and fast-paced, colorful games (Overwatch).

I put together a demo reel with a dozen or so games that shows off the system’s capabilities. I’m sure I spent far more time on the demo reel than I should have, but I’m very happy with the end result.

You can find the demo reel on its own here.


If you’re going to shoot some video of your fancy new ambilight why not do it with some style create some nice looping gifs to go with it?

Because the 256 color limit of the gif format doesn’t work great for gradients, these are actually HLTM5 compatible gifv‘s (webm). The resizing also takes away some quality – click through to watch them in full resolution on gfycat!

Rainbow Color
Ori and the Blind Forest #1
Ori and the Blind Forest #2
Overwatch: Reinhardt
Overwatch: Tracer

Technical Details

Note that brightness for both the monitor and ambilight were tweaked to show up best for the camera. I also normally use a different ambilight calibration (1 / 0.67 / 0.33 RGB), which looks more correct by my eye but tinted on camera.

Since filming these videos I’ve also fixed a major bug in the Arduino code, which now allows higher framerates. I currently use a grab rate of 20 ms – anything lower causes buffering on the PC side.

Monitor Settings:
  • Resolution: 1920×1080
  • Brightness: 100%
  • Contrast: 50%
Prismatik Settings:
  • 80 LEDs
  • 40 ms grab interval (~25 fps)
  • 0% Over-brightening
  • 3% Scene luminosity threshold (Minimum luminosity level)
  • 70% Brightness (exposure matching the monitor)
  • 2.0 Gamma
  • Color calibrated profile (1 / 0.78 / 0.23 RGB)
Camera Settings:
  • DSLR
  • 1920×1080 at 29.97 fps
  • 90mm focal length
  • Shutter Speed: 1/50th
  • Aperture: f/5.6
  • ISO: 800
Codec Settings:
  • 1920×1080 H264 @ 8 mbps (YouTube)
  • 1280×720 WebM @ 8 mbps (Gfycat)

This post is part of a series on creating a DIY ambilight using Adalight and WS2812B LEDs. Check out the project page here.

Next up: Part 8 – Conclusion


    1. Absolutely possible, and you’ll get better performance as well. The Teensy runs at 3.3V though, so make sure you use an external level shifter or take advantage of the built-in one on pin 17.

  1. You use a full HD monitor in this project, can I use the same code for a 4K monitor as well? I’m really looking forward to trying this, I was hoping you could provide some clarity on this.

    Subhankar Das

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.