Programs
Six tools for complete Art-Net control:
artdemo
Generate and transmit Art-Net test data.
$ artdemo [-t target_ip] [-p port] [-i interval_ms] [-c frame_count] [-v] (-a | -u universe ...)
- Send test ramp patterns to specified universes
- Broadcast to all universes with -a flag
- Configurable frame rate and packet count
- Custom target IP address support
- Verbose mode (-v) shows real-time status updates with frame count, ramp offset, and channel values
$ artdemo -u 2 # Send to universe 2
$ artdemo -a # Send to all universes
$ artdemo -u 1 -u 3 -i 25 # Send to universes 1 & 3 at 40fps
$ artdemo -u 1 -v # Send to universe 1 with verbose status
artmon
Real-time Art-Net monitor.
$ artmon [-u universe] [-p port] [-a] [-n]
- Real-time DMX channel monitoring
- Two display modes: Numbers and Bar Graph (toggle with 'b')
- Color-coded rows for easy reading
$ artmon -u 1 # Monitor universe 1
$ artmon -a # Monitor all universes
$ artmon -u 2 -n # Monitor universe 2, no colors
artpipe
Event-driven command execution based on DMX value changes. Automate your lighting workflows.
$ artpipe -u <universe> -c <channel> [-p port] [OPTIONS] [--] <command> [args...]
- Execute commands on DMX threshold crossings
- Dual command mode: separate commands for high→low and low→high
- Single command mode with trigger types: high, low, nz
- Variable formatting mode (-v): expand variables in command arguments
- Runs every time transition occurs (not just once)
- Perfect for automation and integration
Variable Formatting (-v mode):
%%C or $C - Channel number (1-based)
%%U or $U - Universe number
%%V or $V - Current DMX value
$ artpipe -u 1 -c 1 --high echo "high" --low echo "low"
$ artpipe -u 0 -c 5 -t nz -- /path/to/script.sh
$ artpipe -u 2 -c 10 --high /usr/local/bin/light-on.sh --low /usr/local/bin/light-off.sh
$ artpipe -u 2 -c 1 -v say "channel %%C universe %%U is %%V"
$ artpipe -u 1 -c 1 -v --high echo "Value: $V" --low echo "Value: $V"
$ artpipe -u 1 -c 1 -v echo "A new value was received: $V" >> artlog.txt
artplay
Play pre-recorded Art-Net sequences from CSV files.
$ artplay -f <file.csv> [-u universe] [-p port] [-t target_ip]
$ artplay -d [output_file.csv]
- Play Art-Net sequences from CSV files
- CSV format: first column = delay (ms), remaining columns = channel values
- Frames played in row order with timing respected
- Generate demo CSV file with -d flag
$ artplay -d # Create demo.csv file
$ artplay -f sequence.csv -u 1 # Play sequence on universe 1
$ artplay -f show.csv -u 0 -t 192.168.1.100 # Play to specific IP
CSV Format Example:
50,255,0,0,0,0,0,0 # Frame 1: 50ms delay, channel 1=255
100,0,255,0,0,0,0,0 # Frame 2: 100ms delay, channel 2=255
50,0,0,255,0,0,0,0 # Frame 3: 50ms delay, channel 3=255
artrec
Record Art-Net sequences to CSV files. Capture live DMX data and save it for playback with artplay.
$ artrec -f <file.csv> [-u universe] [-p port] [-m min_delay_ms] [-a]
- Record live Art-Net data to CSV format (compatible with artplay)
- Automatic timing - calculates delays between recorded frames
$ artrec -f recording.csv -u 1 # Record universe 1 to recording.csv
$ artrec -f show.csv -u 0 -m 50 # Record with 50ms minimum delay
$ artrec -f capture.csv -a # Record all universes
$ artplay -f recording.csv -u 1 # Play back the recording
pipenet
Pipe data to Art-Net! Convert any text input into DMX values and send them to your lighting rig. The perfect bridge between command-line tools and your lights.
$ pipenet -u <universe> -c <channel> [-t target_ip] [-p port] [-v]
- Reads from stdin - pipe any data source
- Always attempts to convert input: numbers parsed directly, ASCII characters converted to byte values
- Supports comma-separated, space-separated, or newline-separated values
- Automatically maps values to consecutive channels
- Verbose mode (-v) shows conversion details and warnings
- Perfect for integrating with scripts, sensors, or other tools
- Each line of input is sent as a separate frame
$ echo 255 | pipenet -u 1 -c 1 # Send 255 to channel 1
$ echo 1,2,3 | pipenet -u 1 -c 3 # Send 1,2,3 to channels 3,4,5
$ echo "hello" | pipenet -u 1 -c 1 # Send ASCII: 104,101,108,108,111
$ echo "A,100,B" | pipenet -u 1 -c 1 # Mixed: A=65, 100, B=66
$ cat values.txt | pipenet -u 0 -c 1 # Send each line from file
$ cat | pipenet -u 1 -c 1 # Interactive: type lines, press Enter
$ cat | pipenet -u 1 -c 1 -v # Interactive with verbose details
$ sensors | grep temp | awk '{print $2}' | pipenet -u 1 -c 10 # Temperature to lights!
Interactive Mode
Use cat | pipenet for interactive input. Type lines and press Enter - each line is sent as Art-Net data:
$ cat | pipenet -u 1 -c 1
# Type "hello" and press Enter → sends ASCII values
# Type "255,128,0" and press Enter → sends RGB values
# Press Ctrl+D to exit