Nodes/DreamX Creator T8/DreamX Multimodal Guider
ComfyUI Node

DreamX Multimodal Guider

Three Branches, Three Knobs, No Ordinary CFG

By T8mars·Created 3 days ago·Updated 2 days ago· 5
DreamX Multimodal Guider
  • model
  • positive
  • negative
  • guider
text_cfg5.0
video_bridge3.5
audio_bridge3.5
enable_a2vtrue
enable_v2atrue

Normal CFG runs the model twice: once with your prompt, once without. DreamX Multimodal Guider runs it three times, because DreamX's whole selling point - audio and video influencing each other during generation - has to be expressed as a difference between model branches, and you can't get a cross-modal difference out of a single conditional pass.

The node outputs a GUIDER, which in current ComfyUI means it plugs into the guider input of SamplerCustomAdvanced. So it replaces ComfyUI's stock guider entirely; you don't use CFGGuider alongside it.

The three branches

The pack's own docs describe them plainly: no-text/no-bridge, no-text/bridge, and text/bridge. In the implementation, the guider rewrites your conditioning into those three variants using an internal dreamx_bridge flag - your negative conditioning gets used twice, once with the bridge off and once with it on, and your positive becomes the text branch.

Then the arithmetic runs in two stages. Text guidance first: bridge + text_cfg × (text − bridge). That's textbook CFG, just against the bridge branch instead of the bare negative. Then the bridge term: the delta between the bridge and no-bridge branches is measured and added back onto the video span and the audio span separately, scaled by two different numbers.

That's the whole reason this node isn't just a CFG widget. text_cfg controls prompt adherence for the pair. video_bridge and audio_bridge control how strongly audio informs video and video informs audio - and because they're applied to different slices of one packed latent, they're genuinely independent, not one dial in two places.

The widgets that matter

  • text_cfg, default 5.0, 0–30. Your prompt-strength dial. Don't reflexively drop this to 1 because you've been running guidance-distilled models; DreamX is not one, the released preset is 5.0, and the shipped example ships 5.0.
  • video_bridge, default 3.5. How hard the audio stream pushes the video stream.
  • audio_bridge, default 3.5. The reverse direction.
  • enable_a2v and enable_v2a, both on by default. These are hard switches rather than weights - they're passed down to the model as dreamx_enable_a2v / dreamx_enable_v2a options in the model options, so audio-to-video or video-to-audio cross attention is simply not evaluated when you turn one off.

The obvious experiment is turning both off to hear what the joint model is actually buying you, and it's a genuinely useful one: the difference between "the audio was always going to be like that" and "the picture is reacting to the sound" is not something you can judge by description.

Two behaviours you should know about

First, the guider validates its input. Feed it a latent that isn't a DreamX nested audio/video pack and it raises DreamX guider requires a DreamX audio/video NestedTensor latent - which is your cue that DreamX First Frame AV Latent wasn't upstream.

Second, and less obviously, this node is where the model gets forced on the GPU. Before sampling it calls load_models_gpu(..., force_full_load=True). The reason is that DreamX vendors plain torch Linear/Conv modules rather than ComfyUI's manual-cast ops, so generic partial-weight offload can leave CPU weights sitting under CUDA activations. The released bf16 7B fits the supported 24 GB target, so the pack insists on a coherent full load. If you're fighting memory here, that's a hard constraint, not a tuning knob.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-DreamX-Creator-T8.git
cd Comfyui-DreamX-Creator-T8
python -m pip install -r requirements.txt

Or install DreamX Creator T8 from ComfyUI Manager and restart. Weights are a separate ~54 GB download:

python -m pip install -U huggingface_hub
hf download t8star/DreamX-Creator-Comfy --local-dir ComfyUI/models/dreamx_creator
python scripts\verify_models.py

Keep BasicScheduler on normal with 20 steps and KSamplerSelect on euler while you're dialling these three numbers in, per the pack's own recipe.

Common issues

Everything moves at once when you change one knob. Turn the cross-attention switches off to isolate which stream you're affecting. Raising audio_bridge changes the picture, not the sound - if that's not what you wanted, you're holding the wrong widget.

Text adherence is weak at 5.0. Remember the negative prompt is doing real work here, unlike on a guidance-distilled model where CFG 1 makes it inert (concepts.md). Write a real negative. The shipped example's negative is a long, specific list - flicker, colour drift, music, singing, ambient noise, wrong dialogue - and it's shaped that way because this node can act on it.

Sync looks off rather than the audio being wrong. That's the A/V pairing, and it belongs to the bridges, not the audio decode.

CategoryDreamX-Creator/sampling

Inputs (8)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
text_cfgFLOAT5.00–30
video_bridgeFLOAT3.50–30
audio_bridgeFLOAT3.50–30
enable_a2vBOOLEANtrue
enable_v2aBOOLEANtrue

Outputs (1)

NameTypeDescription
guiderGUIDER