ComfyUI Node

IndicesListTo50

The boring 50-output adapter that unblocks LTX keyframing

By marcoc2·Created 2 years ago·Updated 5 months ago· 1
IndicesListTo50
    • index_1
    • index_2
    • index_3
    • index_4
    • index_5
    • index_6
    • index_7
    • index_8
    • index_9
    • index_10
    • index_11
    • index_12
    • index_13
    • index_14
    • index_15
    • index_16
    • index_17
    • index_18
    • index_19
    • index_20
    • index_21
    • index_22
    • index_23
    • index_24
    • index_25
    • index_26
    • index_27
    • index_28
    • index_29
    • index_30
    • index_31
    • index_32
    • index_33
    • index_34
    • index_35
    • index_36
    • index_37
    • index_38
    • index_39
    • index_40
    • index_41
    • index_42
    • index_43
    • index_44
    • index_45
    • index_46
    • index_47
    • index_48
    • index_49
    • index_50
    indices

    This is the least glamorous node in the pack and honestly one of the most useful. IndicesListTo50 takes a Python list of integers - the kind of thing ImageListSampler in the same pack emits - and splits it into 50 individual INT outputs, padding with zeros if the list is shorter. Why would anyone want that? Because a bunch of ComfyUI nodes expose 50 separate widgets you have to fill by hand (the LTX family's sequencer-style nodes are the classic case), and if you right-click such a node and "Convert Widget to Input," each widget becomes a socket. This node is the bridge: list in, 50 wires out, no manual typing.

    The source docstring puts it plainly: it's built to drive nodes with 50 individual widgets "like LTXSequencer." If you've fought with multi-keyframe LTX workflows - setting frame 1, frame 2, ... frame N by hand every single run - you know exactly what this solves. It's the plumbing that makes the keyframe workflow repeatable instead of a chore.

    How it works

    The node is declared with INPUT_IS_LIST = True, so the single indices input receives a whole list at once rather than one value. Its split() function flattens the input (handling the nested-list edge case where each item is itself a list), takes the first 50 values, and pads the result with 0s to exactly 50 entries. Then it returns 50 separate INT sockets, named index_1 through index_50, in order.

    That padding matters: it means the downstream node always gets all 50 inputs even when your list has only, say, 12 keyframes. The unwired tail just reads 0, which for frame-index purposes usually means "first frame" - so keep that in mind if your workflow is sensitive to it.

    Inputs and outputs

    • indices (INT, list) - the list to split.
    • Outputs: index_1index_50, all INT.

    To actually use it: run ImageListSampler (or anything that outputs an index list), wire it here, then right-click your 50-widget target node → "Convert Widget to Input" and connect the sockets one-to-one. The ordering is preserved, so index_n maps to the widget's Nth slot.

    Install

    ComfyUI Manager → search AnotherUtils, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/marcoc2/ComfyUI-AnotherUtils.git
    

    Restart ComfyUI. No dependencies at all - this is pure list shuffling.

    Common issues

    Two things bite people. First, if you don't see 50 sockets on the target node, you haven't converted its widgets to inputs - the "Convert Widget to Input" right-click step is mandatory, and it's easy to miss. Second, empty or over-long lists: an empty list returns all zeros, and anything past 50 entries is silently truncated, so if your keyframe count exceeds 50 the extra indices just vanish. That's an edge case, not a bug, but it's worth knowing before you build a 60-keyframe sequence on top of it.

    CategoryAnotherUtils/logic

    Inputs (1)

    NameTypeDefaultDescription
    indicesINT

    Outputs (50)

    NameTypeDescription
    index_1INT
    index_2INT
    index_3INT
    index_4INT
    index_5INT
    index_6INT
    index_7INT
    index_8INT
    index_9INT
    index_10INT
    index_11INT
    index_12INT
    index_13INT
    index_14INT
    index_15INT
    index_16INT
    index_17INT
    index_18INT
    index_19INT
    index_20INT
    index_21INT
    index_22INT
    index_23INT
    index_24INT
    index_25INT
    index_26INT
    index_27INT
    index_28INT
    index_29INT
    index_30INT
    index_31INT
    index_32INT
    index_33INT
    index_34INT
    index_35INT
    index_36INT
    index_37INT
    index_38INT
    index_39INT
    index_40INT
    index_41INT
    index_42INT
    index_43INT
    index_44INT
    index_45INT
    index_46INT
    index_47INT
    index_48INT
    index_49INT
    index_50INT