Muse Collective LTX Timeline V2.5
When Your LLM Should Write the Segment Prompts
- model
- clip
- audio_vae
- vae
- spatial_upscaler
- bg_audio
- base_model
- last_chunk_frames
- audio
- stage1_frames
- seed_hunt_preview_1
- seed_hunt_preview_2
- seed_hunt_preview_3
- seed_hunt_preview_4
- seed_hunt_audio_1
- seed_hunt_audio_2
- seed_hunt_audio_3
- seed_hunt_audio_4
- reference_image
V2.5 is V2 with one addition, and that addition is aimed at a very specific workflow: letting a local LLM write your segment prompts. If you've been hand-typing eight different prompts into an LTX timeline for a long-form video, you've probably wished for exactly this - a way to pipe text from an LLM node straight into the director's segments without copy-pasting.
Muse Collective is upfront that V2.5 is a fork of V2 with V2 left unmodified. Everything V2 gives you - the full timeline director, Seed Hunt, chunking, lipsync, layered audio - is still there. What V2.5 adds is segment_override_1..4, four optional text inputs that override the timeline's segment prompt text when connected and non-empty.
How it works
The mechanism is boring in the best way. Each segment_override_N input maps to a timeline segment (segment 0 through 3, despite the 1-based input names). Wire a string into it and, if it's non-empty, that text wins over whatever's typed in the segment's prompt box. Leave it unwired or empty and the timeline prompt is used as normal. There's no magic - it's a prioritization layer on top of the existing per-segment prompt system.
The natural setup is an LLM node (Ollama, LM Studio, QwenVL - anything that outputs text) whose job is to expand a scene description into LTX-flavored segment prompts, then wire its outputs into the override inputs. LTX likes long, detailed prompts, and a decent LLM is genuinely better at writing those than most humans typing quickly. The pack's own roadmap goes further down this path - V10 pairs with a dedicated MusePromptSplitter node that parses up to eight labeled prompts out of one LLM text block.
Inputs and outputs
The four overrides are the story: segment_override_1 through segment_override_4, all STRING with multiline. Everything else is V2's familiar panel - seed_hunt and the use_seed_hunt_N toggles, stage1_steps/stage2_steps/stage2_denoise, carry_frames, the audio toggles, and the rest.
Outputs match V2: last_chunk_frames, audio, stage1_frames, plus the four seed_hunt_preview_N / seed_hunt_audio_N pairs and reference_image.
Installing it
Identical to the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/muse-collective-26/muse-ltx-timeline
Restart, pip install av torchaudio soundfile, and the full LTX 2.3 model stack. No extra dependencies for the overrides themselves.
Gotchas
- Four segments, not five. Despite the 1..4 naming, these map to timeline segments 0-3. For more segments you're into V10 territory (eight overrides).
- The override only takes effect when connected and non-empty - an empty override is silently ignored, which is actually the right behavior for a defaults system, but it can confuse you the first time you wire something in and see nothing change. Check the connection, not the string.
- This is one of the WIP modules the pack loads with a try/except. If the node doesn't appear in your node list at all, the pack silently skipped it - update the pack, and check the console log.
The honest verdict: if you're already running a local LLM and generating multi-segment LTX timelines, this is a small but real quality-of-life win. If you're not, it's nothing to rush for - V2 will treat you fine. But V2.5 is where the "let the LLM direct" pipeline starts to look genuinely good.
Inputs (69)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| audio_vae | VAE | — | |
| vae | VAE | — | |
| spatial_upscaler | LATENT_UPSCALE_MODEL | — | |
| start_second | FLOAT | 0.000–3600 | — |
| end_second | FLOAT | 10.000–3600 | — |
| duration_seconds | FLOAT | 10.000–3600 | — |
| start_frame | INT | 00–86400 | — |
| end_frame | INT | 2400–86400 | — |
| duration_frames | INT | 2401–86400 | — |
| timeline_data | STRING | {} | — |
| local_prompts | STRING | — | |
| segment_lengths | STRING | — | |
| global_prompt | STRING | — | |
| guide_strength | STRING | — | |
| epsilon | FLOAT | 0.00100–1 | — |
| frame_rate | FLOAT | 24.001–120 | — |
| display_mode | COMBO | seconds | 2 options: seconds, frames |
| custom_width | INT | 96064–4096 | — |
| custom_height | INT | 54464–4096 | — |
| resize_method | COMBO | maintain aspect ratio | 4 options: maintain aspect ratio, stretch to fit, crop, pad |
| divisible_by | INT | 321–256 | — |
| img_compression | INT | 180–51 | — |
| generate_audio | BOOLEAN | true | LTX generates ambient/sfx audio from [SOUNDS] prompts. |
| custom_audio_on | BOOLEAN | false | Use audio file(s) from the AUDIO timeline track. |
| lipsync | BOOLEAN | true | Sync mouth movements to custom audio. Requires Custom Audio ON and talking head LoRA. |
| motion_guide_on | BOOLEAN | true | Use motion guide segments from the timeline. |
| chunk_duration_seconds | FLOAT | 10.02–120 | — |
| auto_chunk_threshold | FLOAT | 10.00–3600 | — |
| carry_frames | INT | 731–240 | Reference frames from previous chunk locked at chunk start. 73 ≈ 3s at 24fps. |
| carry_strength | FLOAT | 1.000–1 | — |
| crossfade_frames | INT | 00–120 | — |
| ic_lora_name | COMBO | None | 1 options: None |
| ic_lora_strength | FLOAT | 1.00-10–10 | — |
| stage1_steps | INT | 81–50 | — |
| stage2_steps | INT | 41–50 | — |
| stage2_denoise | FLOAT | 0.420–1 | — |
| cfg | FLOAT | 1.00–20 | — |
| seed | INT | 420–18446744073709550000 | — |
| filename_prefix | STRING | muse | — |
| bg_volume | FLOAT | 1.000–2 | — |
| guide_scale_by | FLOAT | 0.500.01–8 | — |
| guide_scale_by_s2 | FLOAT | 1.000.01–8 | — |
| guide_upscale_method | COMBO | bicubic | 5 options: bicubic, bilinear, nearest-exact, area, bislerp |
| guide_image_attn_strength | FLOAT | 1.000–1 | — |
| guide_crop | COMBO | center | 2 options: center, disabled |
| guide_auto_snap_ic_grid | BOOLEAN | true | — |
| guide_use_tiled_encode | BOOLEAN | false | — |
| guide_tile_size | INT | 25664–512 | — |
| guide_tile_overlap | INT | 6416–256 | — |
| timeline_ui | STRING | — | |
| seed_hunt | BOOLEAN | false | ON + no candidate chosen: run a 4-seed Stage-1-resolution preview instead of the full pipeline. ON + one use_seed_hunt_N chosen: commit to that candidate — Stage 2 refines its actual cached latent instead of regenerating Stage 1 from scratch. |
| seed_hunt_steps | INT | 61–50 | — |
| seed_hunt_scale | FLOAT | 0.250.05–1 | Unused as of 1.0.4 — Seed Hunt now scouts at Stage 1's real resolution automatically (so the picked candidate's actual latent can carry forward into Stage 2). Kept as a widget only so older saved workflows still load correctly. |
| seed_hunt_1 | INT | 10–18446744073709550000 | Unused as of 1.0.4 — scouting now draws a fresh random seed for each candidate every run instead of reusing these fixed values (the actual latent carries forward on commit, so the seed number no longer needs to be fixed or reproducible). |
| seed_hunt_2 | INT | 20–18446744073709550000 | — |
| seed_hunt_3 | INT | 30–18446744073709550000 | — |
| seed_hunt_4 | INT | 40–18446744073709550000 | — |
| use_seed_hunt_1 | BOOLEAN | false | — |
| use_seed_hunt_2 | BOOLEAN | false | — |
| use_seed_hunt_3 | BOOLEAN | false | — |
| use_seed_hunt_4 | BOOLEAN | false | — |
| bg_audioopt | AUDIO | — | |
| base_modelopt | MODEL | Base model without talking-head LoRA. Connect the UNETLoader output directly here so the ambient audio pass generates sounds without speech. | |
| segment_override_1opt | STRING | Overrides segment 0's prompt text if connected and non-empty. | |
| segment_override_2opt | STRING | Overrides segment 1's prompt text if connected and non-empty. | |
| segment_override_3opt | STRING | Overrides segment 2's prompt text if connected and non-empty. | |
| segment_override_4opt | STRING | Overrides segment 3's prompt text if connected and non-empty. |
Outputs (12)
| Name | Type | Description |
|---|---|---|
| last_chunk_frames | IMAGE | — |
| audio | AUDIO | — |
| stage1_frames | IMAGE | — |
| seed_hunt_preview_1 | IMAGE | — |
| seed_hunt_preview_2 | IMAGE | — |
| seed_hunt_preview_3 | IMAGE | — |
| seed_hunt_preview_4 | IMAGE | — |
| seed_hunt_audio_1 | AUDIO | — |
| seed_hunt_audio_2 | AUDIO | — |
| seed_hunt_audio_3 | AUDIO | — |
| seed_hunt_audio_4 | AUDIO | — |
| reference_image | IMAGE | — |