FromListGetLatents
Split a latent batch into single latents — FromListGetLatents
- list
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
- LATENT
FromListGetLatents is the latent member of Bmad's "unpack the list" family: a LATENT list in, individual latents out on separate sockets. It's the splitter half of the gather/split pair, where ToLatentList (same pack) gathers single latents into a list and this node fans them back out.
Latent lists are where this pack's list plumbing earns its keep. A VAEEncodeBatch, a Repeat Into Grid, or a batch sampler produces multiple latents at once, and almost every downstream node - a KSampler, a second VAEEncode, an area-based conditioner - wants exactly one. Rather than picking them apart with index math, FromListGetLatents gives each latent its own wire so each can be sampled with different settings, different denoise, or routed to a different upscaler before decoding. It's the difference between a readable graph and a bowl of spaghetti.
How it works
Same UnMakeListMeta machinery as the other FromListGetX nodes - INPUT_IS_LIST on, and the implementation is:
def get_all(self, list):
return tuple(list)
Declared with 32 output slots, but on the canvas it starts with zero visible outputs. The pack's JS extension (ArbitraryOutputsFixedInputs.js) adds an outputs widget - set how many sockets you want (up to 16), or right-click → "update Outputs". This is the ❔ in the README; ignore the widget and the node looks like an empty box.
Inputs and outputs
list- a LATENT list,forceInput, wired fromToLatentList,VAEEncodeBatch's list output, or another list producer.- Outputs: up to 16 individual LATENT sockets, one per entry.
Match the widget to the actual list length - the node returns exactly as many latents as the list holds, so an oversized widget leaves empty sockets and an undersized one hides items.
Install
Ships in bmad4ever/comfyui_bmad_nodes. Via ComfyUI Manager, search "comfyui_bmad_nodes" ("Bmad Nodes"), install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/bmad4ever/comfyui_bmad_nodes
cd comfyui_bmad_nodes
pip install -r requirements.txt
Then restart ComfyUI. No model files; the requirements are opencv-python, scikit-image, simpleeval and gray2color.
Common issues
The invisible-outputs trap applies here like everywhere in this family: no sockets visible means set the outputs widget; widget missing means the JS didn't load (hard-refresh, update frontend). Also watch for latent batch semantics: a single LATENT object can itself contain multiple images in its batch dimension, which is not the same as a list of latents. This node splits list items, not batch dimension. If you're trying to pull frame 3 out of one latent, that's a different node. For list-of-latents splitting, though, it's exactly what you want.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| list | LATENT | — |
Outputs (32)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |
| LATENT | LATENT | — |