π Gimbal Channel Merge
Put a split latent back together (and only that)
- latent_band_A
- latent_band_B
- merged_latent
- telemetry
This is the shortest job in the Gimbal suite: GimbalChannelMerge takes two latent bands and concatenates them back together along the channel dimension. That's the whole thing. If you've ever run a GimbalChannelSplit and edited one band, this is the node that turns your two edited halves back into a single latent you can actually sample.
How it works
Inputs are latent_band_A and latent_band_B (the exact outputs of GimbalChannelSplit, which are latent_band_A and latent_band_B - they're named to wire up 1:1). The merge is torch.cat([A, B], dim=1), so the band order is preserved and the result has the original channel count. If you only touched band B and left band A alone, band A comes back bit-for-bit identical - that's the entire point of the split/merge architecture, and it's how you guarantee zero silhouette change while editing texture.
You get a merged_latent out plus a telemetry dict describing the recomposition, which is mainly useful if you're scripting.
When you'd reach for it
Almost never on its own - it's the closing half of the subspace loop: Split β edit/scale one band β Merge β KSampler. The one decision you make is which band you edit before merging it back. On SDXL (split at 2), editing the high band before merge is "new material, same shape"; on FLUX (split at 8), the same move touches the surface/texture channels while composition channels ride through untouched.
Installing
Standard pack install: ComfyUI Manager β search "Gimbal-comfy" β install β restart, or clone https://github.com/FormAndNoise/Gimbal-comfy into ComfyUI/custom_nodes. Dependencies are torch/numpy/pillow, already bundled with ComfyUI. Nothing else downloads. The README's own URL is stale - FormAndNoise/Gimbal-comfy is the real repo.
Where people get burned
The mistakes are all pairing mistakes. Merging bands from different split indices (e.g. a band split at 2 with a band split at 8) produces a latent whose channel count doesn't match what your model expects - the sampler will throw a shape error, and no amount of restarting fixes that. Also, don't skip GimbalChannelMerge thinking you can sample a band directly; ComfyUI needs the full channel count. And keep the two bands matched by device/dtype - a float16 band A with a float32 band B can misbehave in the concat. In practice this node is so simple it rarely breaks; when your split-edit-merge pipeline fails, the culprit is almost always upstream in the split or the edit, not here. One honest caveat: the pack itself is young with almost no community discussion, and the channel "frequency map" in its docs is an approximation, not a guarantee - your model's channel semantics may not line up with the doc's neat table.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| latent_band_A | LATENT | β | |
| latent_band_B | LATENT | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| merged_latent | LATENT | β |
| telemetry | DICT | β |