Nodes/Gimbal-ComfyUI/πŸŒ‰ Gimbal Cross-Modal Bridge (Text-to-Latent)
ComfyUI Node

πŸŒ‰ Gimbal Cross-Modal Bridge (Text-to-Latent)

The 'Cross-Modal Bridge' doesn't call an LLM β€” here's what it actually does with your words

By FormAndNoiseΒ·Created about a month agoΒ·Updated 19 days agoΒ· 0
πŸŒ‰ Gimbal Cross-Modal Bridge (Text-to-Latent)
  • base_latent
  • conditioning
  • target_vector
  • origin_vector
β—„llm_instructionβ–Ί
β—„mapping_modeKeyword_Heuristicsβ–Ί

The name is a lie, in the best possible way. Gimbal Cross-Modal Bridge looks like it's going to ask a language model what "dark cool neon cyberpunk" means and then do something clever with the answer. It does not call any API, needs no key, and no model weights download at install. It's a text-to-latent-offset node: you type a mood, it produces a latent vector you feed into Gimbal Compass Pro as the steering target, so your prompt words become a direction in latent space instead of a prayer to the seed gods.

How it works

You feed it llm_instruction (yes, that's the field name - it's just your text) plus a base_latent, and it returns two latents: target_vector (base + the word-derived offset) and origin_vector (an unmodified copy of your base). Wire target_vector into a Compass Pro's target_latent with base_latent on the other side, and you're steering.

The mapping_mode decides how words become numbers:

  • Keyword_Heuristics (default) - splits your text into tokens and looks each one up in a hard-coded signature table. bright, dark, warm, cool, neon, pastel, cinematic… each has a small per-channel offset vector. "Warm golden" adds the warm signature and the golden signature together. It's a lookup table, not understanding - say "kinda cozy dusk glow" and only the words in the table (or their aliases like warmer/cooler) actually do anything.
  • Embedding_Projection - if you wire a conditioning in with a pooled_output (i.e. a CLIPTextEncode), it projects that pooled CLIP embedding down to your latent's channel count through a small MLP and uses the result as the offset. This is the one that feels like real cross-modal work. Be aware the projector is randomly initialized unless the pack ships a trained models/crossmodal_proj_<in>_to_<out>.pt for your setup - which, in the shipped repo, it does not. So out of the box you're steering with random noise weights. Cool idea, half-implemented.
  • Manual_JSON - paste JSON like {"luminance": 0.5, "warm_cool": -0.3} and it sets per-channel offsets directly. The most honest mode: you're literally saying which latent channels to push.

What it's good for

Text-steered lighting. Generate a studio product render, add this node with instruction "dark cool neon", feed the target through Compass Pro in Orthogonal_Projection mode at strength ~1.5, then a GimbalLatentStabilizer, and refine at denoise ~0.55. The geometry holds, the atmosphere shifts. It also works as the source of x_vector/y_vector for Manifold Explorer grids.

Installing

ComfyUI Manager β†’ search "Gimbal-comfy" β†’ install β†’ restart. Manual: cd ComfyUI/custom_nodes && git clone https://github.com/FormAndNoise/Gimbal-comfy. Only torch/numpy/pillow, all already present. No API key, ever - worth repeating because the name and the llm_instruction field scream otherwise.

Where people get burned

Expecting free-text magic. In Keyword_Heuristics mode, words outside the signature table silently do nothing (it logs a warning to the console, which you'll never see). If your instruction is "make it pretty" you get a zero delta and wonder why nothing changed. Stick to the vocabulary in the table, or jump to Manual_JSON when you want determinism. And if you're on FLUX with its 16 channels, the 4-element signatures just pad with zeros into the extra channels - they still work, they're just blunter.

Two more things. First, you'll notice this node exists twice in the menu as GimbalCrossModalBridge and Gimbal_CrossModalBridge - they're literally the same class registered under two names, plus a legacy Wayfinder_CrossModalBridge alias. Pick whichever, they're identical. Second, the pack is a young, AI-heavy project with almost no community footprint; the math is fine, but this node in particular is the least "battle-tested" of the suite, so test before you trust a workflow that leans hard on it.

CategoryGimbal/Flight Instruments

Inputs (4)

NameTypeDefaultDescription
llm_instructionSTRINGβ€”
base_latentLATENTβ€”
mapping_modeCOMBOKeyword_Heuristics3 options: Keyword_Heuristics, Embedding_Projection, Manual_JSON
conditioningoptCONDITIONINGβ€”

Outputs (2)

NameTypeDescription
target_vectorLATENTβ€”
origin_vectorLATENTβ€”