ilda file player in rust for helios dac
Find a file
sammm 85733ab881 Initial commit
ildrustplayer: a minimal ILDA (.ild) file player for the Helios Laser DAC.

- Parser for ILDA IDTF: sections 0 (3D), 1 (2D), 2 (palette)
- Tolerates missing null-header terminator (EOF is legal)
- Strict by default; --dry-run uses lenient parsing and reports skipped formats
- --dry-run prints a JSON or text summary without touching the DAC
- CLI: --pps, --loops, --device-index, --dry-run/--info, --format json|text
- Sample .ild files in ild/ for quick testing
2026-10-18 20:00:49 +02:00
ild Initial commit 2026-10-18 20:00:49 +02:00
src Initial commit 2026-10-18 20:00:49 +02:00
.gitignore Initial commit 2026-10-18 20:00:49 +02:00
Cargo.lock Initial commit 2026-10-18 20:00:49 +02:00
Cargo.toml Initial commit 2026-10-18 20:00:49 +02:00
README.md Initial commit 2026-10-18 20:00:49 +02:00

ildrustplayer

A minimal ILDA (.ild) file player for the Helios Laser DAC on Linux, written in Rust.

The official Helios SDK only ships a low-level frame writer — this crate adds a parser for the standard ILDA Image Data Transfer Format and a tiny playback loop.

Features

  • Parses ILDA sections: 3D (format 0), 2D (format 1), indexed palette (format 2)
  • Handles the spec-mandated "null header" terminator
  • Silently skips unknown section formats (≥ 3)
  • Maps signed ILDA coordinates (−32768..=32767) to the Helios unsigned 0..=0xFFFF range
  • Respects blanking bits (bit 6 of the status byte) and per-point colour indices
  • Defaults to a 2-entry palette (black/white) when none is declared
  • Plays on the first detected DAC; supports --device-index N for multi-projector rigs

Build & run

# 1) install the udev rule so you can access the DAC without sudo
#    see https://github.com/Grix/helios_dac/blob/master/docs/udev_rules_for_linux.md

# 2) build
cargo build --release

# 3) play
./target/release/ildrustplayer path/to/show.ild --pps 30000 --loops 0

CLI flags:

Flag Default Meaning
--pps N 30000 Points per second (Helios max is 65 500)
--loops N 1 Replay count; 0 = infinite
--device-index N 0 Which DAC to use when several are connected

Safety

⚠️ Lasers can permanently damage eyesight and may be regulated by law in your jurisdiction. Always:

  • Use the lowest --pps that looks acceptable
  • Verify the projector is aimed at a safe surface
  • Have an E-stop (shutter) within arm's reach
  • Comply with local laser-show regulations (class, audience scanning, etc.)

This software has not been tested by the author against real hardware.

References