Time-line docs
AutomationsNode-RED nodes

Key Point nodesRequires Pro

Reference the current-track, Key Point, and offset nodes provided by Time-line Live.

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

Current song

Emits the backend currentTrack snapshot for the “now playing” deck, with a continuous Stream output.

Outputs

Change (edge-triggered): emits when the song context changes (deck/track/title/artist) or its basic state changes (active/isPlaying/isOnAir/bpm/pitch/durationMs)

Stream (continuous): forwards the backend currentTrack snapshot at ≈30fps

Output: changemsg.topic: tl/current-track. The trimmed msg.payload contains these fields when they are available:

Prop

Type

Output: streammsg.topic: tl/current-track/stream. Payload is the full currentTrack snapshot: the fields above plus beatInMeasure, beat, currentPositionMs, and the Key Point timeline fields (currentKeypoint/nextKeypoint/currentKeypointProgress, Group fields like currentKeypointGroup/currentKeypointGroupProgress, Family fields like currentKeypointFamily/currentKeypointFamilyProgress).

BPM updates are included: the stream reflects live BPM changes, and the change output also fires when bpm changes.

Node status: idle, song title, or ws disconnected.

Current Key Point

Emits for every Key Point (including Unknown), the current section of the now-playing track, whatever it is.

Outputs

Event (edge-triggered): emits on keypoint changes (enter/exit)

Stream (continuous): emits while a track is active (≈30fps)

Output: eventmsg.topic: tl/keypoint/<keypointId>/event. msg.payload.keypointId is the actual current Key Point (e.g. drive, build, drop, unknown). Payload fields are the same as the Key Point nodes below, plus reason (keypoint_changed, ws_disconnected, flow_disabled, play_started).

Prop

Type

When the Key Point changes, this node emits an exit for the previous Key Point (reason: "keypoint_changed") followed by an enter for the new one.

Output: streammsg.topic: tl/keypoint/<keypointId>; the full snapshot, like the Key Point nodes below.

The Key Point Nodes

Drive, Drive Break, Build, Rhythmic Build, Pre-Drop, Drop, Fake Drop, Drop Break, Breakdown, Outro and Unknown all behave identically — only the keypointId and topics differ. Drive is used as the example; substitute your node's id.

Emits when the now-playing track is in the Drive Key Point. keypointId: drive.

Outputs

Event (edge-triggered): emits once on Key Point enter/exit

Stream (continuous): emits while active or within the target Pre/Post Window (≈30fps)

Output: event

msg.topic: tl/keypoint/drive/event

msg.payload uses the event payload fields above. Example:

{
  "event": "enter",
  "keypointId": "drive",
  "deckId": 1,
  "trackId": 12345,
  "currentPositionMs": 42123,
  "durationMs": 240000,
  "currentKeypoint": "drive",
  "currentKeypointProgress": 0.42,
  "nextKeypoint": "drive-break",
  "currentKeypointFamily": "drive",
  "previousKeypointFamily": null,
  "nextKeypointFamily": null,
  "currentKeypointFamilyProgress": 0.10,
  "currentKeypointFamilyStep": 1,
  "currentKeypointFamilyTotalSteps": 1,
  "currentKeypointGroup": "drive",
  "previousKeypointGroup": null,
  "nextKeypointGroup": null,
  "currentKeypointGroupProgress": 0.10,
  "currentKeypointGroupStep": 1,
  "currentKeypointGroupTotalSteps": 1
}

Edge cases:

  • On websocket disconnect while active, an exit event is emitted with reason: "ws_disconnected".
  • If the Node-RED tab is disabled while active, an exit event is emitted with reason: "flow_disabled".
  • If playback starts while already inside the Key Point (e.g. you pressed Play mid-section), the node emits a fresh enter with reason: "play_started".

Output: stream

msg.topic: tl/keypoint/drive

msg.payload contains the backend currentTrack snapshot fields plus these target Stream fields for Key Point, Group and Family windows:

Prop

Type

The event output remains exact enter/exit only; Pre/Post Windows only affect the Stream output.

Notes

  • Connects to the backend websocket at ws://127.0.0.1:<TIME_LINE_WS_PORT> (defaults to 17880).
  • Node status: idle, active, or ws disconnected.

Offset

Fires a single event a configured number of bars or seconds before/after the enter of a target Key Point or Family — e.g. “4 bars before enter of Drop”. The trigger time is computed from the track's Key Point timeline and the live BPM, so it is not limited to the fixed 10-second pre/post windows of the stream output.

Configuration

  • Target: a Key Point (consecutive repeats count as one enter) or a Key Point Family.
  • Offset: amount + unit (bars uses the live BPM, 4 beats per bar) and direction (before/after the target's enter).

Outputmsg.topic: tl/offset/<targetId>/event.

Prop

Type

Behavior

  • Fire: every time (default): fires once per target occurrence, for every occurrence. Rewinding back before the trigger point re-arms it.
  • Fire: once per track: fires at most once (status fired (once)) until the track or deck changes.
  • before: fires when the playhead enters [enter − offset, enter). If the offset reaches before the start of the track, it fires immediately.
  • after: fires when the playhead reaches enter + offset, but only while the target is still active — a section shorter than the offset does not fire.
  • Status shows a countdown (in Ns), fired, and no Key Points/missing bpm when data is unavailable.

How is this guide?

Last updated on

On this page