The trigger's four shapes, arming and hold-off, the event cache with its replay, compare and accumulate, and searching the buffer for a condition. Martino Ferrari Trigger

The trigger watches one signal for a condition and captures a window around it. The Shape dropdown chooses what counts as an event; the arming, hold-off, pre/post window and Normal/Single mode are the same for all four shapes. The captured window is frozen on screen until you re-arm.

How to reach it

The trigger button in the toolbar (t) reveals the trigger panel: the signal, the level, the shape, the edge (rising, falling, either), the mode (Normal or Single) and the pre-trigger share.

Arm starts watching; a arms and disarms from the keyboard. When the pane is locked with its [edit] button — so that it states what the trigger is set to instead of showing the controls — Arm/Disarm is in its heading, and the trigger can be armed or disarmed without unfolding the panel. It is offered only while trigger mode is on, because a trigger that is off has no engine to arm.

Search the buffer is at the foot of the same panel.

A held capture: <gui>event held</gui> in the status bar, the axis pinned to the event, and the trigger marker at x = 0.

The pre-trigger share is drawn to the left of the marker.

The four shapes Edge

A crossing of the level in the chosen direction, the classic behaviour.

Pulse width

A crossing and its return, qualified by how long the excursion lasted: less than, greater than, within or outside a pair of widths; the event is timed at the closing edge.

Window

The signal entering or leaving a band between two levels; the panel keeps the two levels at least one increment apart, because a zero-width band is not a band: the condition becomes an exact float-equality test against the level, which an ordinary signal never satisfies and a signal sitting at the level satisfies on every transition.

Dropout

The absence of a crossing for longer than a timeout; one event per outage, re-arms when a crossing returns.

The shape's own rows are the only ones shown; the rest are hidden, so the panel never offers a pulse width to a window trigger.

The event cache, replay and compare

Every triggered acquisition is kept. Latches are written to the event cache (~/.cache/udpscope/events/<source>/) as a .npy of the event, a .txt of what it was, and a .bmp picture drawn from the samples. The Events pane on the left — opened from the toolbar's event-history button, which appears while recording is enabled, and collapsed until you ask for it — lists the last 32 newest first (time, duration, signals, rate), each row with its own picture beside the numbers.

Clicking a row replays it: the stored event is loaded exactly like an exported file, without changing the layout — the rows, the colours, the window, the cursors and the measurements stay where they are and read the stored data instead. A replay leaves trigger mode, because a file has no edge to wait for, and the pane stays open. Drag the pane's edge to resize it. Live goes back to the stream; the status bar names the file until you do.

Select two or more events in the list and the two buttons under the header act on them: Compare puts two events in two plots side by side, keeping the layout you have — one plot per event, the axes synchronised, so zooming a row in one zooms the same row in the other — and Accumulate overlays up to four of them in the same traces, translucent, so where they agree the trace is brighter. Your own traces stay where they are in both. They need events with the same signals and the same length. A single click selects, a double click replays.

Record events, in the trigger panel with the trigger's other options, is what decides whether anything is kept. It is off by default — nothing is written to disk until you ask — and with it off the history button goes with it.

Worth knowing

Arming enables the signal if it was off, because a trigger on a signal nobody acquires can never fire.

The pre-trigger share is a share of the display window, not of the ring. A 2 s window at 50% captures 1 s before the edge and 1 s after.

There are four display states, and the status bar names each: armed (watching, nothing drawn yet), capturing (the edge was accepted and the post window is filling in view, with the marker at x = 0), event held (the frozen capture) and disarmed. A held capture is never quietly replaced by live data.

The first edge after arming is only accepted once the history reaches back a full pre-trigger window, so a capture may legitimately be shorter than you asked for. The axis is pinned to what the capture actually got.

Disarming during a capture publishes what the capture got to, so the picture on screen at that moment stays on screen. No event fired, so the event count does not move.

The trigger reads the stored signal — decimated and averaged — not the wire signal. A spike narrower than one decimation group is filtered away rather than triggering on data the buffer does not contain.

Example

A 1 Hz sine, level 0, rising, 2 s window at 50%, Single. The capture spans [-1.000 .. 1.000] with n=20001 samples at 10 kS/s — the span times the real rate, plus one — and the marker sits at x = 0 throughout.