Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - James

Pages: [1] 2 3 ... 12
DACs / LaserBoy piDAC
« on: April 13, 2024, 04:42:43 pm »
Let me tell you about a project I've been working on since about September of 23.
The LaserBoy piDAC.
I put together a set of criteria for creating a device that is intended to be placed inside of a laser projector.
It is a single board computer running a common distro of Linux.
It is a full workstation computer with USB keyboard, mouse and HDMI 4K video.
It has a full GUI desktop environment.
It has a modified multichannel audio device, aka LaserBoy DAC.
It can run the LaserBoy application!
It can play LaserBoy wav files from its own local storage.
It has both a gigabit wired Ethernet port and a wifi.
The gigabit port is set to a unique static IP and can be joined to a private wired peer to peer network that requires no router (and no wifi).
The wifi can be enabled or disabled to allow the device to connect to the Internet (or not).
The device has a vnc server that allows remote desktop connections either to the native console (its own keyboard, mouse, monitor view) or completely headless (the device with nothing but a network connection).
The device can offer its LaserBoy DAC as a network UDP listener and accept low latency network streams to send directly out its DAC (real-time network addressable laser control device).
The protocols for this network connection are platform independent, meaning  there is no significant difference between using Windows, Linux, MacOS  or many others as the control workstation capable of streaming to any  number of these individually addressed piDACs independently and  simultaneously.
The protocol is free, open  source, widely used and specifically designed for low latency data  streaming of all kinds. The protocol is setup to only transmit exactly  the data that ends up going right out of the piDAC's sound device and  nothing more. It can be setup for any number of channels up to 6 or 8,  with an obvious default of 5 {X, Y, r, g, b}.
The protocol is supported in every OS with a free open source API written in C, but so far I have not had to write any custom code to make it work!
The protocol can present itself as a  stream sink device that can be placed on the canvas of Pure Data, MaxMSP  and other such programming environments -- in other words, any number  of individually addressable nodes that are live lasers!
Each  piDAC runs a samba share of its own /LaserBoy directory that can be  found and mounted as a network share. So the control workstation can  easily copy files to and from itself and any of the piDACs.
I have chosen a specific set of devices to make a bunch of these, but the  idea is not at all hardware dependent. Any single board computer running any version of Linux with any multichannel sound device could be made to work.
It took me a long time to  figure out how to make all of this work. In this time, I also suffered  the loss of my husband of nearly 31 years in mid January, 24, so it has  at times been impossible for me to work on it.
It is also a fair bit of hand work to make each physical example that I have. I would like to be known as the guy who figured this all out, but I would also like to be able to make some money for once. I've been working on LaserBoy for more than 20 years!
Being that this is all based on generic off the shelf hardware and free open source code, protocols and standards, it would not be too difficult to copy. I'm hoping that people would want to support where it came from and see the value of getting one (or more) hand made by me personally sent to them.
I would also like to attract other developers to add to the capabilities of this platform to make it the open source standard for network laser control.
Here's a bunch of pictures!

LaserBoy !!! / Finally some LaserBoy tutorials!
« on: October 20, 2020, 07:21:19 pm »
Check out my LaserBoy YouTube Playlist for a series of videos about using LaserBoy.


struct LaserBoy_bmp (written in C)

class LaserBoy_color

class LaserBoy_palette_base : public vector<LaserBoy_color>
class LaserBoy_palette : public LaserBoy_palette_base
class LaserBoy_palette_set_base : public vector<LaserBoy_palette>
class LaserBoy_palette_set : public LaserBoy_palette_set_base

class LaserBoy_3D_double
class LaserBoy_real_vertex : public LaserBoy_3D_double, public LaserBoy_color
class LaserBoy_real_segment_base : public vector<LaserBoy_real_vertex>
class LaserBoy_real_segment : public LaserBoy_real_segment_base
class LaserBoy_real_segment_set : public vector<LaserBoy_real_segment>

class LaserBoy_ild_header

class LaserBoy_3D_short
class LaserBoy_vertex : public LaserBoy_3D_short, public LaserBoy_color
class LaserBoy_segment_base : public vector<LaserBoy_vertex>
class LaserBoy_segment : public LaserBoy_segment_base
class LaserBoy_frame : public LaserBoy_ild_header, public LaserBoy_segment
class LaserBoy_frame_set_base : public vector<LaserBoy_frame>
class LaserBoy_frame_set : public LaserBoy_frame_set_base

class LaserBoy_wave_optimization_parameters
class LaserBoy_wave_header
class LaserBoy_wave_sample

class LaserBoy_space : public LaserBoy_frame_set, public LaserBoy_palette_set

class LaserBoy_TUI : public LaserBoy_space
class LaserBoy_GUI_base
class LaserBoy_SDL_GUI : public LaserBoy_GUI_base

About This Forum / 54
« on: November 17, 2018, 03:18:46 am »
I had an awesome birthday 11/16/18.

I wish you could have been there!


Media of the moment / James Lehman solo exhibition at Akrona Gallery
« on: October 26, 2015, 05:01:28 pm »
Hey everyone!

I just got the date.

January 7th, 2016.

will be the opening reception for a 3 week solo exhibition of my work at Akrona Gallery.

I will have at least 20 paintings and probably as many or more of my polymer clay items on display and for sale.

I will also have a nice collection of my wire-wrapped stones so there will be items from about $20 to thousands for all art collectors.

Hope to see you there!


I just made a pile of cool necklaces!


LaserBoy !!! / Totally new functions!
« on: February 23, 2015, 02:54:08 pm »
A new new new newer version of LB is available!

I added a couple of new features and several new settings.

LB now does proximity based curve fitting (of a sort).

If you go into menu [Tab] system value settings, you can set option 2 insignificant distance. The default is 60.

This value has always been there for wave import normalization, but now it serves as a parameter for minimizing the loaded frame set.

If you look in menu h frame transforms, you'll see some new functions have been added and the key values are slightly different.

Option f fit to insignificant distance is the function itself. You can apply it to the art directly with the f key, and it is also included in the minimization process.

I have found that insignificant distance (in the [Tab] menu) can be set as high as option 3 max optimized lit vector in points with very nice results, depending on the art you apply it to.

For example, I can set option c rendered arc angle in degrees to something very small like 0.2 and then go into menu m render segments by coordinates and draw some really nice curvy math figures. The rendered arc angle determines how the curve is quantized into individual vertices. The smaller the arc step the more points there will be.

Then I can go into menu h and hit k to minimize and the points along the curve are reduced in number but the curve is still nicely fitted.

Be aware that using a high number for insignificant distance can really wreck art with a lot of small details.

Another function I just added is called conglomerate segments. It looks at all the lit segments in a frame to see of any of the ends meet. If so it glues those segments together into one continuous lit segment. If there are multiple segment ends that match, it looks at all of them and chooses the one that requires the least change in direction.

I have found that DXF imports can be all broken up into individual vectors in the wrong order, even though you might have drawn the image using POLYLINE.

This function will fix that.

It can be a very time consuming function when there are a lot of individual lit segments. The number of calculations it takes is exponentially related to how many items it has to sort.

In menu x system switch settings there are two new settings; 8 conglomerate in minimize and 9 fracture conglomerate. The first one tells LB whether it should use this function during minimization or not. The second one tells LB if it should fracture all of the segments into individual lit vectors before sorting them out and conglomerating them.

One other feature I added is in the u user interface visuals menu. Now you can choose to have the menu font with an opaque background. This makes it easier to read over a lot of detailed vector art.


About This Forum / ... And we're back!
« on: March 24, 2014, 11:30:19 pm »
Wow! That was a break!

The RAID in the server crashed!

I took it home on 02/25/14 and finally got it fixed and re-racked today, 03/24/14.

I replaced two of the six drives. Over time I am going to replace all the drives with brand new ones.

We should be OK.

Special thanks to BlinkenLights for fixing the crashed MySQL table for The LaserBoy Forum!

James.   :)

LaserBoy !!! / 10 Years and counting!
« on: February 14, 2014, 10:07:46 pm »
I started working on the code that would become LaserBoy back in late 2003.

I used that code to develop a show for First Night Akron 2004.

Not long after that I focused my attention on getting a multi-channel sound card to work as a laser DAC.

The rest, as they say, is history.

Thanks to everyone who has had a positive attitude toward me, my work and this forum!

James. :)

Media of the moment / Cool Video!
« on: December 08, 2013, 11:33:23 am »
Check this out!

Phillip in Berlin made a museum installation and a video. He used LaserBoy to convert from DXF to ILDA and optimize!


DACs / Genuine Extra Stimulus LaserBoy Correction Amp Boards!
« on: September 06, 2013, 02:59:40 pm »
Check it out!

This is a totally new design of the LaserBoy Correction Amp board!

This is the first one I did completely by myself (other than all the ones I made by hand on copper proto-board).

Back in 2008, I did a layout and the trace routing for a board and drlava did the circuit CAD. This is the green board that has been out there pictured all over the web.

This new red one is a bit smaller and features all of the design revisions since then.

It has a variable negative voltage regulator instead of a fixed one. It has much finer resolution for the offset null and it has a higher gain factor. Plus it has 5.1v zener diodes to prevent over-voltage on the color channels!

It is a single sided board with almost 100% copper coverage for the ground plane.

Right now I am waiting on shipments of all the parts to make finished LaserBoy DACs like the one pictured here and kits of the PCB and all the parts.

This kit will also work with PCI internal sound cards without the need of the DC/DC converter by using the +12 and -12 V from the PCI slot. I will probably make a few finished examples of that configuration for sale as well.

I will let everyone know when they are available.

LaserBoy !!! / Raspberry Pi (and other tiny Linux computers)
« on: April 14, 2013, 04:04:45 pm »
Hey everyone! Check it out!

This latest version of LaserBoy has been specifically reworked to compile and run on the Raspberry Pi!

It comes with instructions for the adventurous.

I fixed a lot of weird color issues that now make it look perfect in 16 bit packed pixel video (default video mode for Xfree86 on the Pi). These fixes should also resolves some issues for Mac OSX, that I could not see any other way.

Please check it out (both Pi and Mac users) and let me know how it goes.

Now I have a lot of more work to do to try to get the USB SND8 sound device (LaserBoy DAC) to work on the Pi. Future plans are to write a web interface so that the Pi can be a headless laser projector control device.


LaserBoy !!! / Beautiful Single Line vector Font for LaserBoy!
« on: February 28, 2013, 02:20:01 pm »
Check this out!

As part of the new development in LaserBoy and its improved font rendering capability, I have created a new (manually drawn) Single Line Vector Font!

You will never get a font that has as few points or is as easy to scan (fast) as this by rendering any kind of True Type (double stroke) computer font!

Read this post:

There are actually two versions:


Since I spent several days manually drawing each glyph of this font, I would like to make it available to LaserBoy users for $20 for both the narrow and the wide versions in ild file form, ready to be dropped into the LaserBoy/ild folder and used just like the other fonts that come with the LaserBoy distribution.

Please contact me through this forum if you are interested in purchasing these font files. I take PayPal or snail mailed personal checks.

James.  :)

LaserBoy !!! / Installing MinGW C++ compiler in Windows (for LaserBoy!)
« on: February 18, 2013, 07:12:24 pm »
This is a step-by-step guild to setting up MinGW (GNU environment with GCC 4.7.2) in Windows, building and installing Boost-C++ 1.53.0, installing SDL 1.2.15, and Dev-C++ as a code editor.

Once all of this is done, it will be possible to double click on that comes with the current distribution of LaserBoy in the src directory and Dev-C++ will open the project ready to compile and link.

For this installation C:\ is assumed to be the root of your system drive.

Step one: Get your files!

Get the latest version of mingw-get-inst

Get the latest version of boost. It comes in several different compression platforms. You might as well get the Windows zip. This document assumes the current version is

Get the SDL development libraries. Look for the Windows MinGW version. It will be something like SDL-devel-1.2.15-mingw32.tar.gz.

Get Dev-C++ 5.0 beta 9.2 (, executable only (2.4 MB)
This application will never be updated. It's no longer being developed, but it is a nice C++ editor anyway. The MinGW system is the GNU GCC compiler.

And, of course, LaserBoy! Get the latest version here:


Start with the MinGW system. This will install a GNU like system inside of Windows. It provides a shell that behaves like BASH and a nice collection of commands and utilities.

Run the installer.
Choose the option to "Download latest repository catalogues".
Accept the agreement.
Accept the file location to be C:\MinGW at the root of a drive.
In the "Select Components" section, choose
  • C compiler
  • C++ compiler
  • MinGW Developer ToolKit.
Start the installation process. It takes a while!

After the installation is complete, go into your programs menu and open the MinGW shell. Doing this will create the home directory and add your current Windows login name to the MinGW system.

Navigate to the folder:

Copy the SDL development libraries archive file there.

From the MinGW shell, issue the following command to extract the archive file, while unzipping it, verbosely from the following named file.

tar -xzvf SDL-devel-1.2.15-mingw32.tar.gz

The shell has [Tab] key command completion, so you should just type up to the SDL part and hit tab for the rest, then [Enter] and wait for it to complete.

Now you can move the include files and the libs into the MinGW system.

Navigate to:


Select and cut all the files found in this folder that do not begin with '._' .

Navigate to:


Create a new directory there called SDL

Paste the above cut files in this folder:


Navigate to:


Select and cut all the files found in this folder that do not begin with '._' .

Navigate to and paste the above cut files in this folder:


The LaserBoy distribution comes with the runtime file SLD.dll version 1.2.15. If for some reason you need this file and you do not have LaserBoy, this file is found here:


You are now done installing SDL! You can delete the un-archived folder that you created in your MinGW home directory.

Now you must add the MinGW bin directory to your Windows system PATH statement so that Windows can find the executables located there.

Right click on (My) Computer and look in the Advanced tab for "Environment Variables". Click on that and notice the list called "System Variables". In that list will be one called 'Path'.

To the value of Path, add:


Make sure all the paths are separated with semicolons. Once you have added to the path and saved it, you might need to reboot Windows to load the new system path.

Building and installing Boost:

Unzip the boost sources you downloaded above directly at the root of your system drive.

You should get a folder that looks like:


Open the Windows command shell (not MinGW shell) and change the working directory to:


From there issue this command at the prompt:

build mingw

When it's done, it will have created a special compiler for Boost C++ called bjam.

In a file browser, navigate to:


Select and cut b2.exe and bjam.exe and paste them here:


In the Windows command shell, change directory to:


and issue the command

bjam --toolset=gcc link=static threading=single stage

and hit [Enter]. This can take a very long time!

When it's done, browse to this directory:


and cut or copy everything there and paste it here:


Then browse to:


and copy the whole 'boost' folder


This is to be copied or moved in whole to:


When this operation is done there should be a folder named


with all kinds of folders and *.h files in it.

At this point, you do not need anything in the folder


So you can delete the whole thing if you want.

INSTALL Dev-C++ editor:

Run the Dev-C++ 5.0 beta 9.2 ( installation file that you downloaded previously

Go with a full installation. Let it put itself in


The first time you run Dev-C++ it will probably tell you it cannot find 'make', but it found the MinGW version of make. That's fine!

Once Dev-C++ is installed and opened at least once, you should be able to double click on and open the LaserBoy project in Dev-C++, ready to examine, edit and compile.

When in Dev-C++,

[Ctrl] + F9

Is the keyboard shortcut to build the whole project.

If for some reason Dev-C++ cannot find the resources it needs from MinGW, from the Dev-C++ editing window, look in

    Compiler Options
        Directories [tab]

Within that dialog box make sure of the following:



C Includes

C++ Includes

Note: If the LaserBoy application is running when you try to link the executable, the linker will fail.

Pages: [1] 2 3 ... 12
SMF spam blocked by CleanTalk
SimplePortal 2.3.7 © 2008-2024, SimplePortal