Time-line docs
AutomationsNode-RED nodes

Function nodesRequires Pro

Reference the conditional, beat, progress, debounce, enter, and exit function nodes.

Full reference for the Live functions nodes, generated from the in-editor help.

If

Routes messages by the previous, current or next keypoint, group or family of the incoming payload — e.g. “on enter of Build: if the next family is Drop, go left; otherwise go right”.

Configuration

  • Check: which value to inspect. keypoint uses the exact timeline entry (currentKeypoint/nextKeypoint), group uses consecutive same-keypoint runs, family uses the semantic family (Drive/Build/Drop/Breakdown/…).
  • Is one of: the values that route to output 1. Select None / Unknown to match a missing value (start/end of track, or analysis pending).

Inputs — wire either output of a keypoint node (event or stream), Current song/Current keypoint, or any message whose msg.payload carries the keypoint context fields.

Outputs

match: the value is one of the selected values (message passes unchanged)

no match: the value is present but not selected

Behavior

  • If the value cannot be determined the message is dropped (unknown is not “no match”) and the status shows what was missing.
  • previous keypoint (exact scope) needs a stream payload. Event payloads carry previousKeypointGroup/previousKeypointFamily, so group/family scopes work with events too.

Beat

Emits a message whenever the currently playing deck advances to a new beat — the lowest-level rhythm trigger.

Outputmsg.topic: tl/beat. Payload (example):

{
  "deckId": 1,
  "beatInMeasure": 3,
  "beat": 1234,
  "bpm": 128.0,
  "pitch": 0.0,
  "currentPositionMs": 42123,
  "ts": 1730000000000
}

Prop

Type

Behavior

  • Only emits when (deckId, beat, beatInMeasure) changes.
  • Resets beat tracking automatically if the active deck changes.
  • Node status: idle, beat N, or ws disconnected.

BPM Debounce

Quantizes incoming messages to the current BPM grid: stores the latest input and releases it on the next beat or sub-beat boundary.

Behavior

  • Stores the latest received message; emits it on the next tick. If multiple messages arrive between ticks, only the last is emitted. If none arrive, nothing is emitted.
  • A null/undefined payload clears any pending buffered value (prevents a stale value flushing after a keypoint ends).
  • The message itself is unchanged — this node only controls when it comes out.

Config1 once per beat · 1/2 twice · 1/4 four times · 1/8 eight times per beat.

Example

Rendering Node-RED flow…

Node status: idle, tick, disabled, or ws disconnected.

Progress

Maps a TL stream into a numeric output range, keeping the full source snapshot available downstream.

Valid upstreamsCurrent song stream, Current keypoint or any tl-keypoint-* stream output. Event outputs are ignored; when required timing fields are missing the node does not emit and shows a warning status.

Source fields

  • keypoint: currentKeypointProgress
  • group: currentKeypointGroupProgress
  • family: currentKeypointFamilyProgress
  • pre/post keypoint: preKeypointRemainingMs / postKeypointElapsedMs (and the Group/Family equivalents)

Config

  • Source: keypoint, group, or family progress.
  • Window: full, first/last seconds, first/last bars, pre/post seconds or bars.
  • Output Min / Max: maps the curve result into the chosen range.
  • Curve: double-click the graph to add a point; drag points; double-click a point to delete. Drag a segment to bend it; double-click a curved segment to reset it.
  • Only emit while playing: suppresses output when the source deck is paused, cued, or stopped.

Window behavior

  • Full maps the whole scope; First/Last seconds ramp only at the start/end and hold otherwise; bars variants derive the window from BPM (4 beats = 1 bar).
  • Pre/Post emit only inside the configured window before/after the target's window.
  • On named keypoint streams, Full/First/Last emit only while the Source is active — use Pre/Post for before/after-target ramps.

Output — these fields are set on the outgoing message. Other top-level msg.* fields are preserved.

Prop

Type

Examples

Rendering Node-RED flow…

Node status: idle · keypoint 42% / group 73% / family 18% · pre/post N% · not playing · missing ….

Enter tl-enter / Exit tl-exit

Event filters: Enter forwards a message only when msg.payload.event === "enter"; Exit only on "exit". Use them to split a keypoint's event output into a start path and an end path.

ConfigPayload: a standard Node-RED typed value. Default forwards the full event object; set a str/num/bool/json/flow/global/env/jsonata value to emit a custom payload instead.

Behavior — non-matching or malformed messages are ignored. When a message is forwarded the node shows a green status for 3 seconds.

Example

Rendering Node-RED flow…

How is this guide?

Last updated on

On this page