The shot CLI
Render one preset to a PNG (the agent then Reads the file):
cargo run -p standalone --example shot -- --preset "Whorl" --frames 120 --out shot.pngFlags:
| flag | meaning |
|---|---|
--preset <name> | preset to render (by name, as shown in the report / library); optional when the library holds exactly one preset |
--presets <dir> | load the library from <dir> instead of the resolved preset directory |
--preset-file <path> | load exactly one preset from <path> (beats --presets) |
--set k=v,... | constant stimulus frame: bass,mid,treb,onset,bar,novelty (0..1), tempo (BPM), beat (non-zero = true). Keys are the grammar’s names, so tempo is what a binding writes. It reaches the frame’s scalars only — not the 64-band spectrum, so bin(x) reads 0 — see the calibration traps before trusting a value |
--frames <N> | frames to advance before capture (default 120) |
--size <WxH> | render size (default 1280x720) |
--out <path> | output PNG (single shot) or dir/file (--all) |
--all | contact sheet of every preset, labeled (needs --out) |
--report [family=<sys>] | per-family metrics table — reactivity, animation, coverage and the transient probe; family= takes any system name — all twelve the scene registry carries: attractor, emitter, fragment_field, lsystem, parametric_curve, reaction_diffusion, shape_collage, shape_field, spectrum, star_pattern, swarm, warp_mesh |
--json | emit the report as JSON instead of a text table |
--signal <kind:param> | synth-audio filmstrip (see below) |
--audio <clip.wav> | filmstrip from a 16-bit PCM WAV |
--strip <N> | frames tiled along the audio (default 8) |
--at <hop>,... | explicit filmstrip hops, beating --strip’s even spacing — how to capture a transient |
--frame-at <hop> | one frame at that hop, written at the full --size — no tile scaling, no border. Needs --signal/--audio; not combinable with --at. Which flag takes a picture worth keeping |
--tier floor|rich | quality tier to capture at (default floor — see above) |
--horizon <minutes> | the long-run drift check — N simulated minutes at capture cadence, one statistics row per interval. Minutes of wall clock; never a gate |
--interval <secs> | simulated seconds between horizon rows (default 30) |
--render <clip.wav> | offline video — walk the clip at --fps and stream every frame to stdout for an encoder to read. Deterministic and decoupled from real time |
--fps <n|num/den> | the render mode’s frame rate (default 60). A decimal is rejected: write 30000/1001, not 29.97 |
--ffmpeg <path> | spawn this encoder and wire the pipe, so one command produces a file. Needs --out <file>. No encoder ships and there is no fallback |
--crf <0-51> | the encoder’s rate-quality setting (default 18, archival). Higher is smaller; +6 is about half the size. Needs --ffmpeg — the one argument you may move |
--help, -h | print the usage text and exit 0 |
Bad arguments and unknown presets exit non-zero with a message.
In this section
- The horizon: does a world still look like itself after minutes?
- —render: a music video from a track
- The three calibration traps
- Aiming a capture at a transient
- A full-size frame under real audio
- What the report’s columns mean
- Which preset library a shot uses
- Editing presets live
- Examples
- Held bindings: the scene may not be seeing this frame’s value
Built from a8ce055 at version 0.115.0. This site tracks main and is not versioned per release.