Nodes/Joy-LTX 2.5 (JoyAI-Echo x LTX-2.5)/JoyLTX Take Controls (render size / seconds / upscale)
ComfyUI Node

JoyLTX Take Controls (render size / seconds / upscale)

The VRAM planner that sizes your take before you waste a render

By jlucasmcrell·Created 27 days ago·Updated 24 days ago· 2
JoyLTX Take Controls (render size / seconds / upscale)
    • pass1_width
    • pass1_height
    • frames
    • two_pass
    • use_x15
    • beats
    • beat_frames
    • summary
    width960
    height544
    take_seconds8.0
    beat_seconds8.0
    upscaleauto
    vram_gb0

    LTX-2.5 renders a whole take in one generation, and its cost model is brutal and simple: tokens = (width/32) × (height/32) × latent frames. Upscale and the cost multiplies. JoyLTX Take Controls is the pack's answer to "will this actually fit on my card" - it plans the render before you burn an hour finding out. It's the master panel that every other node on the Take canvas reads from, and auto does the VRAM math for you.

    The controls you actually set: width and height (render resolution, defaults 960x544, multiples of 32 - output is this times the upscale factor), take_seconds (length of the take in one generation, default 8), and upscale (auto / x2 / x1.5 / none). beat_seconds (default 8) tells the writer how long each written beat should be; the writer gets take_seconds / beat_seconds beats to write, and shorter beats mean less dead air. There's an optional vram_gb you can leave at 0 to auto-detect.

    Here's the mechanism, and it's honest about the trade. Pass 2 (the upscaled refine) runs on the output grid, so the upscale factor decides the real cost: x2 is 4x the pixels of pass 1, x1.5 is 2.25x, none is pass 1 only. The planner budgets about 2200 pass-2 tokens per GB of your card and picks the largest output that fits - x2, then x1.5 (using the LTX-2.3 spatial x1.5 upscaler file, which the pack verified works on 2.5 latents), then a single pass. It prints the whole plan to the console and as the summary output: "LTX TAKE: 8.0 s -> 193 frames in ONE generation | render 960x544 | two passes x2 -> 1920x1088 ...". That print is the feature. Read it once and you'll never guess at settings again.

    The outputs feed the rest of the canvas: pass1_width, pass1_height, frames, two_pass (bool), use_x15 (drives the x2/x1.5 upscaler switch), beats, beat_frames, and summary. Frames snap to 8n+1 at 24 fps (193 = 8 s), so a 12 s take is 289 frames.

    Two honest gotchas. First, auto is a planner, not a guarantee - if you force x2 on a card that can't hold it, the node warns "FORCED, expect streaming or an OOM," and if you accept the wait, that's your mode. Second, the comfort zone it quotes is real: 8 s at x2 / ~14 s at x1.5 at 960x544 on 24 GB, with a 30 s single pass at 1280x736 as the long-take option. Longer takes cost tokens, and past what the card fits, auto steps the upscale down and tells you which. The README's numbers - about 7 minutes for an 8 s x2 take on a 3090, 2 minutes on a 5090 - give you the reality check for what "fits" means in time, not just VRAM.

    CategoryJoyLTX

    Inputs (6)

    NameTypeDefaultDescription
    widthINT960256–1920RENDER (pass-1) width. Output = this x the upscale factor (960x544 x2 = 1920x1088, x1.5 = 1440x832). Multiples of 32.
    heightINT544256–1920Render (pass-1) height; output = this x the upscale factor.
    take_secondsFLOAT8.01–60Length of the take, rendered in ONE generation. Longer takes cost tokens; past what the card fits, auto steps the upscale down (x2 -> x1.5 -> none) and prints which. 8 s x2 / ~14 s x1.5 at 960x544 is the 24 GB comfort zone.
    beat_secondsFLOAT8.03–15How long each written sentence/beat should be; the writer gets take_seconds / beat_seconds beats to write.
    upscaleCOMBOautoauto = the largest output that fits your card. x2 = the official LTX-2.5 spatial upscaler (4x pixels in pass 2). x1.5 = the LTX-2.3 spatial x1.5 upscaler file - works on 2.5 latents (verified render), 2.25x pixels, so about 1.8x the seconds of x2 on the same card. none = pass 1 only at the render size.
    vram_gboptFLOAT00–2000 = read the card. Set a number to plan for another card.

    Outputs (8)

    NameTypeDescription
    pass1_widthINT
    pass1_heightINT
    framesINT
    two_passBOOLEAN
    use_x15BOOLEAN
    beatsINT
    beat_framesINT
    summarySTRING