ilda file player in rust for helios dac
- Rust 100%
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 |
||
|---|---|---|
| ild | ||
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
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 Nfor 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
--ppsthat 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
- ILDA IDTF spec: https://www.ilda.com/resources/StandardsDocs/ILDA_IDTF14_rev011.pdf
- Paul Bourke summary: https://paulbourke.net/dataformats/ilda/
- Helios DAC + SDK: https://bitlasers.com/helios-laser-dac/ / https://github.com/Grix/helios_dac
- Rust crate: https://crates.io/crates/helios-dac