About the end of October of 2003 I was given the opportunity to design a laser show for public display on December 31st, 2003 for "Akron's First Night", the New Year's celebration in Akron, Ohio USA, the city in which I live. I had never worked with laser display before. The guy who asked me to design the show let me barrow some of his equipment. He had an 80-milliwatt NdYAG laser, a pair of scanning galvos, a Pangolin QuadMod32 with Lasershow Designer and another piece of software called Anarchy. He also let me barrow a book called "Laser F/X: The Light Show Handbook", by L. Michael Roberts. I got the technical description for the ILDA file format: http://www.mylaserpage.de/down/ilda.pdf and created a set of C++ objects that would allow me to generate, open from file, view, manipulate and save data in reasonably close accordance with the ILDA standard. This code (ilda.hpp and ilda.cpp) is built on top of my Linux frame buffer API, EZFB. Once I had a decent representation of the ILDA format in code, I needed an application to make use of it. So I began working on laserboy.cpp. This application was intended to be my C++ workbench where I could define chunks of code to do all sorts of things to ILDA frames with single keystrokes. Keep in mind, at the same time I had Lasershow Designer and Anarchy and I was quite happy with the features and functionalities of those applications. My application was to become everything that those applications could not give me. Also remember, I had very little time and no experience to complete a laser show that might be seen (and hopefully remembered) by many people. My ILDA programming setup: I have a Windows machine with Anarchy on it. Using ssh or telnet, from my Windows machine, I shell into my Linux machine and run laserboy from this prompt. Now my Windows terminal is the Linux keyboard and text screen. The Linux machine is now a graphics display and application server. It's monitor is sitting next to me with its video display completely dedicated and controlled by EZFB / laserboy. I use samba to share some drive space from the Linux machine. This is where Anarchy and LD open and save their frames. I draw original frames in Anarchy or I generate math forms in my own code. I have my C++ editor open to laserboy.cpp and I write transforms that can be applied with single key strokes. The results can be loaded back in to laserboy by hitting the F2 key and typing the name of the ILDA file just generated. Some effects take a single frame as input and generate a series of frames. Some effects work on whole frame sets. Multiple effects may be applied for more complex animations. I import the frames to make shows in LD. I ended up with a 45 minute show (a full ADAT tape) that played for about 5 and a half hours from the tenth floor roof of The Goodyear Polymer Science Center on to the front of EJ Thomas Performing Arts Hall. Unfortunately all we had to show it with was about 1 watt of multi-line argon ion with no color control or blanking. Sometime after the New Year, I was still thinking a lot about lasers. I really enjoyed the art, technology and purity of the whole thing. So, I decided to look up the author of the book I had read quite a bit of in the past two months. I called L. Michael Roberts on the phone. He is a marvelously friendly person. We talked for quite a while on a few occasions. He asked me if I had heard of NeoLase. I had no idea what he was talking about. Apparently there is a group of laser enthusiasts in Northeast Ohio! He gave me a few names and email addresses and sent them a heads-up message that I might be contacting them. And, I did. That's how I met Rob, one of the guys who did LaserMAME. He lives about an hour from me. After a few emails and phone conversations, he invited me and my partner Terry to his home to see his full-color laser projector. WOW! A couple of the other guys from the group were there too and we watched lots of laser art, including my "First Night Akron 2004" show in blazing color! My code comes with very few comments and no instructions. If you're not into C/C++ code, this project might not be for you! To get a better understanding of what laserboy does, read laserboy.cpp. The executable laserboy may be issued with no argument or the name of an ILDA file in the #define FRAMES_SHARE directory. If no file is specified, in.ild is assumed. If in.ild can not be opened the application begins with no data. My code can discriminate shapes in frames, size them, rotate them and move them. This is done with NO REGARD to the blanked points in between the shapes. Some day, I'll work some point optimization code into this project! As time permits, I would like to add lots of features to this code. I am hoping that it gets picked up and used and becomes the core of an OpenILDA project. In ilda.hpp, there are some #defines that describe boundaries of various volumes of space. These are for bounds checking of moving or growing objects. Obviously the code needs to be recompiled after changing any of these values. The program fbset can be used to set the resolution of the video display to anything that your monitor will support. Since ILDA frames are vector art, they are drawn to fill the screen correctly at any resolution. There is more to the story that will come with updates to this project. Enjoy! ~James. 1/18/2005 :o)