Build a phaser and store it as a preset
gma3_build_phaserBuilds repeatable phaser effects from structured steps or templates into grandMA3 presets, with preview, verification, and safe storage.
Instructions
Build a repeatable effect from structured steps and store it into Preset ., reading every step back. Steps: per attribute an absolute and/or relative value (unit percent, or physical: degrees for Pan/Tilt) or a preset called into the step, plus step timing (width, transition, accel, decel). phaser: fixture distribution (phase {from, to} in degrees over the selection grid, from > to runs the other way; {from, step}: a phase step per fixture, e.g. step 180 between neighbours; "spread": 0 -> 360 x (n-1)/n; {from: 0, to: 360} is one even cycle (360/n apart, like "spread": the console leaves the end out so the last fixture does not repeat the first), any other range uses both ends (0 -> 270 on 4: 0, 90, 180, 270; other whole cycles such as 0 -> 720 or 360 -> 0 are not established and the check accepts either); repeat {groups|wings|blocks: n} repeats it along X; shuffle: an XShuffle seed that permutes the phases) and playback speed (speed_bpm; measure = the number of beats one phaser cycle lasts at that speed, so the step widths, in percent of a beat, should add up to measure x 100; speed_master 1-16). These three are kept apart in the plan and the result. mirror {attributes, wings (default 2)}: the fixtures (grid order) are cut into wings and every second wing gets those attributes inverted (relative and physical values negated, percent 100 - v), e.g. the second beam's Pan. variants [sync, follow, mirror] build the versions of one effect into consecutive presets from preset, named " sync|follow|mirror": sync without a phase spread, follow with the phase (default spread), mirror with the spread mirrored about the centre (wings 2) and Pan (or mirror.attributes) inverted on the second half. Templates (instead of steps): dimmer_chase {on, off, speed_bpm, spread}, alternating_colors {colors: [{red, green, blue} or {preset}], x2, speed_bpm, snap}, pan_tilt {pan, tilt (degrees), speed_bpm, spread}: a relative circle around the current position. Position shapes in physical degrees around center {pan, tilt}: circle and figure8 (size = radius), cone (tilt held at tilt, pan sweeping a full turn and back), fan (closed on the centre, then open over size degrees of pan from the first fixture to the last), bounce (tilt up and down by size); default 20 BPM. Dimmer patterns for rows of fixtures or cells (grid order): runner (one on at a time), comet {tail: cells}, alternate, thirds, fill (fill up, then empty), sparkle {every, seed}; default 120 BPM. preview: true returns the expanded steps and the console commands. fixtures are selected in list order on grid X (or group: a stored group with its grid); up to 1024. Every attribute is checked against every fixture before anything is sent (the console ignores unsupported attributes silently). effects: several effects (each with its own preset, fixtures or group, steps or template, phaser, mirror, variants, name) built in one Preview session, one result line per preset with a compact phase summary (detail: true for every step); a failed effect does not stop the others. The effect is built in the console's Preview environment (its own empty programmer; nothing is output) and the operator's Normal programmer is fingerprinted before and after: it is never touched. The built programmer is checked per fixture, step and layer, including the phase per fixture, then stored with the gma3_store_preset rules (mode selective or global, existing refuse|merge|overwrite, step presets embedded, on_name_taken refuse|allow_suffix: a name, variant names included, that another preset of the pool has, or that two presets of the call share, is refused before anything is sent, naming the holder; the console would store it as "#2") and verified step by step; the Preview programmer is cleared and Preview left in every case. audition_ms (default 0: no playback) calls the stored preset on the fixtures in the Normal programmer, which must be empty, for that long and releases it with ClearAll. Requires exclusive: true (not for preview). If a build is interrupted, gma3_phaser_release leaves Preview. Needs bridge 0.23.0.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Preset mode (default selective). | |
| name | No | Preset name. | |
| unit | No | Unit of the step values (default percent). | |
| group | No | A stored group instead of fixtures; its grid sets the distribution order. | |
| steps | No | 2-16 steps. | |
| detail | No | Return every step, the console commands and the stored rows (default false: a compact result; with several presets one line each). | |
| mirror | No | Invert these attributes on every second wing (default 2 wings: the second half). | |
| phaser | No | Phaser layers: playback speed, phase distribution, measure, speed master, repetition, shuffle. | |
| preset | No | Target preset "<pool>.<number>" (the first of the variants); an All pool (21-25) takes any attributes. Required unless effects is given. | |
| verify | No | Read the stored preset back step by step (default true). | |
| effects | No | Several effects in one call (instead of preset/fixtures/steps/template): built in one Preview session; unit, mode, existing, on_name_taken and verify given for the call are defaults. | |
| preview | No | Only check and return the plan and commands (default false). | |
| existing | No | When the preset exists (default refuse). | |
| fixtures | No | Fixture ids or ranges, distributed in list order. | |
| template | No | A template instead of steps; see the description for its options. | |
| variants | No | Build these versions into consecutive presets from preset: sync, follow, mirror. | |
| exclusive | No | Required (true) unless preview. | |
| audition_ms | No | Play the stored effect for this long in the empty Normal programmer, then release it (default 0: no playback; max 30000). | |
| on_name_taken | No | When another preset of the pool has the name: refuse (default, nothing is sent) or allow_suffix (the console stores "<name>#2"). |