Skip to content

The shot CLI

Render one preset to a PNG (the agent then Reads the file):

Terminal window
cargo run -p standalone --example shot -- --preset "Whorl" --frames 120 --out shot.png

Flags:

flagmeaning
--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)
--allcontact 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
--jsonemit 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|richquality 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 --ffmpegthe one argument you may move
--help, -hprint the usage text and exit 0

Bad arguments and unknown presets exit non-zero with a message.

In this section

Built from a8ce055 at version 0.115.0. This site tracks main and is not versioned per release.