XLaser emulates a scanner lighting fixture within an X11 window, useful for example for creating light shows with computer projectors.
Control data is input via the Art-Net protocol, generated by most lighting control desks and software.
Up to 255 projection gobos are supported via a configurable folder containing
images named value
.png (eg. 127.png
). All non-transparent pixels of
a gobo image will be colored in the resulting image.
One XLaser instance uses 16 channels, some of which are reserved but not yet mapped to functionality.
- Channel 1/2: Pan coarse/fine
- Channel 3/4: Tilt coarse/fine
- Channel 5/6/7: Red/Green/Blue color mix
- Channel 8: Dimmer
- Channel 9: Shutter
- 0 Open
- 1-127 Strobe slow-fast
- 128-192 Flash in slow-fast
- 193-255 Flash out slow-fast
- Channel 10: Gobo
- Channel 11: Gobo zoom
- Channel 12: Gobo rotation absolute
- Channel 13: Gobo rotation speed (not yet implemented)
- Channel 14: Gobo focus (experimental)
XLaser is available with multiple backends (currently XRender and OpenGL).
The default target, built by running make
in the project repository, builds
XLaser with the OpenGL backend.
To select the XRender backend (slower, but might work on older hardware),
run make xrender
.
- A C compiler
- libx11-dev
- For the XRender backend
- x11proto-render-dev
- x11proto-xext-dev
- For the OpenGL backend
- libglew-dev
- libgl1-mesa-dev
Basically, edit configs/sample.conf
to match your setup and run xlaser /path/to/your.conf
.
Optionally override the starting address with the -d <address>
parameter (useful to start multiple instances from one configuration file)
The configuration file is split into multiple sections, which may appear in any order in the file.
Controls general behaviour.
Option | Example value | Description |
---|---|---|
bindhost |
* |
Which interface to listen for ArtNet data on |
gobos |
gobos/ |
Where to look for gobo images |
X11 window parameters.
Option | Example value | Description |
---|---|---|
windowed |
true |
Do not initially fullscreen the window |
width |
800 |
Initial window width (when windowed) |
height |
600 |
Initial window height (when windowed) |
x_offset |
100 |
Currently not implemented |
y_offset |
100 |
Currently not implemented |
ArtNet control data input setup.
Option | Example value | Description |
---|---|---|
net |
0 |
The artnet net parameter for this fixture |
subuni |
0 |
The artnet subnet parameter for this fixture |
address |
1 |
The dmx start address (1-512) |
Reassign control channels (for example to emulate other fixtures).
List of remappable channel names
- pan
- panfine
- tilt
- tiltfine
- red
- green
- blue
- dimmer
- shutter
- gobo
- zoom
- rotation
- rotationspeed
- focus
A remap argument may consist of one or more of the following parts
Option | Parameter | Example | Description |
---|---|---|---|
fixed |
value | fixed 123 |
Channel is at fixed value continuously |
source |
offset | source 0 |
Channel value is read from another channel (given as an offset from the base address) |
min |
value | min 0 |
Minimum channel value. The value is interpolated from the full channel range |
max |
value | max 127 |
Maximum channel interpolation value. |
inverted |
none | inverted |
Invert channel values |
Most professional lighting desks can be configured to output one or more universes to an ethernet port via multiple protocols. XLaser requires broad- or unicasted ArtNet as input. Please report any problems encountered with a desk to the Github issues section.
- GLP Creation2 (+ OnPC)
- MA Lighting GrandMA2 OnPC