LTXV Schedule Sync
The master clock of the Temporal Director
- video_latent
- segment_data
- segment_lengths_csv
- local_prompts_clean
- schedule_info
LTXV Schedule Sync is where every Temporal Director workflow starts. It's the node that reads your video latent, figures out how many visible frames the clip actually has, splits the timeline into up to four segments, and hands the same segment_data blob to every other Director node - the Prompt Relay encoder, each scheduled Time-Gated LoRA, and the preview. One source of truth, no drift between your prompt timing and your LoRA timing. That shared bus is the whole point of the pack, and this is the node that creates it.
It exists because LTX 2.3 is a model where the timing math is fiddly. The latent doesn't hold one frame per visible frame - LTX 2.3 compresses temporally by a factor of 8, so visible frames = (latent frames − 1) × 8 + 1. Schedule Sync resolves that exact relationship from your video_latent and does all the segment arithmetic for you, so you never hand-calculate frame boundaries again.
How it works
Two things happen here: prompt parsing and boundary layout.
Prompt parsing. You type your per-segment prompts into local_prompts, and the node is forgiving about format. Explicit pipe separators are preferred and always win:
The camera holds still | The subject begins to move | The action peaks
If there are no pipes, it recovers missing separators from ordered labels (segment 1:, scene 2:, shot 3:) or from 2–4 blank-line-separated paragraphs. Each normalization is recorded and surfaced on the preview, so repaired prompts stay inspectable rather than silently rewritten. The separator_check toggle controls what happens when parsing is ambiguous: warn keeps running and reports, error stops the run. expected_segments is an optional sanity check that your recovery landed on the count you meant.
Boundary layout. With boundary_mode = equal, detected segments are spread evenly. Switch to custom and the boundary_1/2/3 sliders become normalized timeline cuts - handy when the third segment deserves a quarter of the clip, not a third.
The fields you'll actually touch
local_prompts- the segment prompts. Pipes are your friend.boundary_mode+ the three boundary sliders - only bother when segments shouldn't be equal.fps- match your workflow (24 is the LTX default; the preview uses it for seconds).video_latent- the same video-only latent you feed every other Director node. Mixing latents here is the classic way to get nonsense boundaries.
Outputs: segment_data is the one that matters - it feeds the Prompt Relay encoder, every Time-Gated LoRA, and the preview. The other three (segment_lengths_csv, local_prompts_clean, schedule_info) are inspection strings for when you're debugging.
Installing and gotchas
cd ComfyUI/custom_nodes
git clone https://github.com/Jinx138/ComfyUI-LTXV-TimeGated-LoRA.git
Then restart ComfyUI and hard-refresh the browser. It also installs via ComfyUI Manager (search "ComfyUI-LTXV-TimeGated-LoRA"). No pip dependencies, nothing to download.
The trap to respect: the Director caps at four segments. Pipe in a fifth and the node raises a clear error telling you to trim to three pipes - or fall back to the pack's classic TimeGate workflow, which doesn't carry this limit. Since LTX 2.3's prompt adherence is still its weakest axis, it's also worth checking the preview before sampling rather than trusting your boundary numbers - see the LTXV Temporal Schedule Preview node for the "look before you burn a render" step.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| video_latent | LATENT | Video-only LTX LATENT used to resolve exact visible-frame length. Use the same latent for downstream TimeGate/PromptRelay Scheduled nodes. | |
| fps | FLOAT | 24.001–240 | — |
| local_prompts | STRING | segment 1 action | segment 2 action | segment 3 action | Semantic prompts. Existing | separators are preferred; when absent, ordered segment/scene/shot labels or 2-4 blank-line paragraphs are converted automatically. |
| boundary_mode | COMBO | equal | equal: distribute detected segments evenly. custom: use boundary_1..boundary_3 sliders / boundary bar as normalized timeline cuts. |
| boundary_1 | FLOAT | 0.3330.001–0.999 | — |
| boundary_2 | FLOAT | 0.6670.001–0.999 | — |
| boundary_3 | FLOAT | 0.7500.001–0.999 | — |
| expected_segments | COMBO | auto | Optional segment-count sanity check after automatic separator recovery. Temporal Director supports up to four segments. |
| separator_check | COMBO | warn | warn: keep running and report ambiguous parsing. error: stop when recovery or expected segment-count checks fail. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| segment_data | LTXV_SEGMENT_DATA | — |
| segment_lengths_csv | STRING | — |
| local_prompts_clean | STRING | — |
| schedule_info | STRING | — |