Every day, people are making all kinds of incredible software powered by Fedora. The Fedora user community is broad and diverse, and sometimes, we hear about things that we never imagined possible. Rochester Institute of Technology student and Fedora user Brendan Whitfield developed an open-source library for interfacing with laser projectors to create all kinds of awesome images and animations using lasers (including the Fedora logo)! We wanted to know more about the work Brendan was doing and interviewed him about his project, LZR.

Impacting laser development with open-source

LZR is one of Brendan’s latest projects fueled by a passion and interest in working with lasers. Since an early age, he wanted to learn more about all of the “magic” that goes behind powering powerful lights. LZR is just the latest manifestation of that obsession. In addition to writing the free and open-source library for handling the user’s graphics to the laser projector via a laser digital-to-analog converter (DAC), like EtherDream (open software DAC), he also spends some of his time building and modifying the actual laser projectors.

I spent some time with Brendan at the Rochester Mini Maker Faire on November 21st in Rochester, NY. In addition to being a student at RIT, he also is involved with FOSS@MAGIC, a group of students and professors passionate about Free and Open Source Software, which is associated with the FOSS Minor offered at RIT. As part of the FOSS@MAGIC booth at the Faire, he had a live demo of his laser software, along with a Leap Motion sensor to detect people’s fingers and convert it to moving lasers against a whiteboard. While I was with Brendan, I had the opportunity to ask him a few questions about his project and how open source influenced the creation of the library.

How does your program work and connect to the projector to create the digital laser images? How would you describe it to someone who has never seen your program’s code before?

“Lasers produce graphics by scanning a single beam according to vector data. To connect to a laser projector, you need a little bit of hardware. Typically, they take XY and color data from a digital-to-analog adapter that you attach to your computer. There are a number of proprietary options on the market, but also a smattering of independently-developed adapters. The one that caught my eye was the EtherDream. It’s an open-source ARM board that accepts vector graphics over Ethernet.

This gets you halfway to a laser show, but you still need a human interface to produce the graphics. These are typically reminiscent of video editors, with timelines, clips, and effects. My code currently consists of a library, a daemon, and a visualizer. The library provides applications with all of the functions and data structures needed to easily operate on laser graphics.

Modularity is also a strong point I’m focusing on. I routinely run into freeware that is written as a monolith, which makes it difficult to splice your own programs into the mix. For this reason, LZR uses ZeroMQ to stream frames between applications. This makes it trivial to attach things like visualizers, or if you feel so inclined, run your laser completely via IP. As long as there’s a daemon to run the adapter at the other end, you can route your laser graphics any way you see fit.”

What inspired you to make LZR?

“It started with an early love of lighting. My father is a professional lighting designer, and I always loved tagging along when I was little. I was introduced to automated lights, and that just about blew my little mind. I was hooked at an early age, and spent many summer days choreographing light-shows in my garage. From that starting point, lasers were an obvious next step.

Thankfully, there’s a fantastic community of enthusiasts on the net, and plenty of information to work from. So, somewhere at the end of middle school, with the help of my brother and father, I managed to wire a couple of galvos to a DAC schematic that I’d seen floating around. It looked like a mess, but it worked! I started off running the whole setup with various pieces of freeware from other hobbyists, but I quickly ran into limitations, or wanted different functionality. So I wrote my own projection software in Visual Basic (I was a young programmer). I had no idea what I was doing, but that’s how you learn. Back then, linking to DLLs for serial control was certified voodoo. How do you rotate 2D points? Who cares! Just copy the equation and match the variables! After some time, I managed to implement a basic drawing GUI, and a primitive effects stack. But, because VB timers can only give you millisecond resolution, I eventually abandoned this project.

Fast-forward to college years, and I’ve fallen into the black-hole of software. Specifically, the sub-black-hole of FOSS! So, with more software skills to leverage, I’ve decided to take another crack at building my own laser software.”

When you were beginning your project, why did you choose to use an open-source license for your project?

“There are many proprietary options for making laser shows. I stay away from them for the following reasons:

I can’t modify most of them beyond simple scripts and plugins.

They can be ludicrously expensive (I’m a college student).

While I am thankful for the work of the hobbyists, I often find the software to be…

Windows-only.

Freeware (free as in beer, but not open source).

Single-purposed (basic drawing, function generators, playback only, etc…).

Monolithic.

So instead of complaining about it, I will try to do better, and will share whatever I come up with. The only reason I was able to start lasing in middle school is because a bunch of people started sharing information online. So the next time some kid wants to make a wacky program for a local venue, they have access to all the tools. Open source is an amazing catalyst for creativity.”

Check out LZR

LZR comes with the benefit of being completely open source, and contributions are welcome. Anyone can take the code and modify it to suit their purposes.

Brendan has several other projects available on his GitHub. You can also find his contact information in his profile.

All the photos in this article were taken by Brendan Whitfield.