Nodes/S42 CutFlow/🔊 S42 CutFlow Audio Cond Prep
ComfyUI Node

🔊 S42 CutFlow Audio Cond Prep

Trimmed, normalized, faded

By GeekyGhost·Created 6 months ago·Updated 4 months ago· 3
🔊 S42 CutFlow Audio Cond Prep
  • audio
  • audio
  • duration_seconds
  • info
target_frames121
fps24
normalizeyes
fade_in_ms50
fade_out_ms100

LTX-2 was the first open-weights model family to do synchronized audio + video in one pass, and LTX 2.3 tightened up the audio side further - but it's picky about what it accepts. The audio you feed it needs to be exactly the length of your video latent, at a sane level, with no clicks. S42CF Audio Cond Prep is the pack's one-stop compliance officer for that: trim or pad to your target frame count, normalize, and fade, all in a single node in the LTX Bridge section.

The inputs, with the ones that matter:

  • audio - the AUDIO you want to condition on.
  • target_frames (default 121, min 9, max 513) - the target video frame count, and here's the rule you have to respect: it must match your LTX empty latent's frame count. LTX only accepts frame counts of the form 8n+1 (9, 17, 25, ... 121, ...), so a 121-frame latent should get audio trimmed to exactly 121 frames' worth at your fps. If your latent is a different valid count, set this to match it. The pack's S42CF LTX Frame Calculator exists precisely to pick those numbers.
  • fps (8–60, default 24) - used to convert target_frames into a duration.
  • normalize (yes/no, default yes) - scales the audio to a −3dBFS peak. The tooltip's "recommended for consistent LTX results" is the actual reason: a quiet input and a loud input otherwise produce very different conditioning, and normalizing makes the pipeline repeatable. Keep it on.
  • fade_in_ms / fade_out_ms (defaults 50/100) - short fades at the ends so the track starts and stops without a click. 50/100 is a fine starting point.

The mechanism is simple and transparent: if the audio is longer than the target it truncates; if shorter it pads with silence; then it normalizes the peak and applies the fades. Outputs are the conditioned audio (AUDIO), duration_seconds (FLOAT - handy to compare against what LTX actually generated), and info.

Where it fits in the workflow: in the LTX 2.3 pipeline, feed it your source music or voiceover before the conditioning step, with target_frames wired to the same number your EmptyLTXVLatentVideo uses. It pairs with S42CF_VideoSegmentPrep for long-form segmented generation - each segment's audio gets prepped to that segment's frame count, so the conditioning always lines up.

The gotcha to internalize is the frame-count handshake, not the node itself. This node will happily trim your audio to any number you type - it doesn't validate the 8n+1 rule. If you feed it 120 frames and LTX later rejects the video, the node did its job; the mismatch is upstream. That's the single most common way this bites people.

Installing it

Standard S42-CutFlow install: ComfyUI Manager → search "S42 CutFlow" → Install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt

Requirements is one line (opencv-python-headless); the audio math runs on numpy, which ships with ComfyUI. "[S42 CutFlow] Loaded ..." on restart = registered.

CategoryS42 CutFlow/LTX Bridge

Inputs (6)

NameTypeDefaultDescription
audioAUDIOAudio input for LTX conditioning.
target_framesINT1219–513Target video frame count. Audio will be trimmed/padded to match.
fpsINT248–60Video FPS for audio duration calculation.
normalizeCOMBOyesNormalize audio to -3dBFS peak. Recommended for consistent LTX results.
fade_in_msINT500–2000Fade-in duration in milliseconds. Prevents click artifacts.
fade_out_msINT1000–2000Fade-out duration in milliseconds.

Outputs (3)

NameTypeDescription
audioAUDIO
duration_secondsFLOAT
infoSTRING