Hold
Capture and hold a value when triggered. Works on any value type.
What it does
Hold captures a value at a moment in time and keeps outputting that frozen value until the next capture. Any type works: a number, a colour, a vector, an image, a collection. What goes into Input comes back out unchanged, frozen.
Trigger decides when a new capture happens. A boolean gives a direct on/off trigger. A number, vector or colour is watched for a Threshold crossing, using magnitude for a vector and brightness for a colour. Edge sets which crossing counts: rising, falling, either, or every frame.
When to use it
A value frozen at a moment and held: a snapshot, a latch, a remembered step
Step-and-hold motion: a value that jumps to a new reading only when triggered
A fast-changing signal sampled down to discrete steps, for numbers, colours or images
Knowing when a capture happened or how many have occurred: the Triggered and Count outputs
| Parameter | Type | Default |
|---|---|---|
input | Any | — |
trigger | OneOf([Boolean, Number, Vec3, Color]) | — |
threshold | Number | 0.500 |
edge | String | "Rising" |
capture_initial | Boolean | true |
Gotchas
Set Edge to "Every Frame" to re-capture continuously, which makes Output track Input every frame. This disables the hold behaviour without removing the node.
With nothing wired into Trigger, Hold captures once, on the first frame, when Capture Initial is on. With no trigger and Capture Initial off, Output never updates.
Threshold and Edge matter only when Trigger carries a number, vector or colour; they describe a crossing. A boolean Trigger is read directly, true fires, and Threshold is ignored.
Worked example
Add a Hold node and wire the value to freeze into Input.
Wire a boolean signal, a beat, a button or a comparison, into Trigger.
Leave Edge on "Rising" to capture each time the trigger switches on.
Read Output downstream for the frozen value, or check Triggered/Count to react to capture events themselves.