Nodes/kentskooking-nodes/Explorer Conditioning Wave Controller
ComfyUI Node

Explorer Conditioning Wave Controller

The knob panel for prompt crossfading

By Kentskooking·Created 10 months ago·Updated 15 days ago· 8
Explorer Conditioning Wave Controller
    • wave_config
    curve_typelinear
    positive_a_start0.00
    positive_a_end1.00
    positive_b_start1.00
    positive_b_end0.00
    positive_c_start0.00
    positive_c_end0.00
    loop_videofalse

    Some nodes are the engine and some are the dashboard. Explorer Conditioning Wave Controller is the dashboard: it's the small set of knobs that defines how the Explorer Conditioning Sampler crossfades between prompts, and it does nothing by itself. Wire its wave_config output into the sampler and you've just told the whole traversal how to behave.

    What you're actually setting

    The controller describes a path between prompt states. With two prompts, A and B, the default shape is a straight swap: A fades from 0 to 1 while B fades from 1 to 0. You get eight float knobs, two per prompt endpoint, plus a curve and a loop switch:

    • positive_a_start / positive_a_end and positive_b_start / positive_b_end - where each prompt starts and ends along the traversal. Defaults give you the clean A→B swap. Flip them and you go B→A instead.
    • positive_c_start / positive_c_end - only relevant if you're using the sampler's optional third positive. The moment these are nonzero, the traversal becomes a two-segment path: A→B, then B→C.
    • loop_video - with C in play, this adds a third segment (C→A) so the strip loops back on itself, handy for seamless video loops.
    • curve_type - linear, sine, or ease_in_out. Sine eases in and out of each segment (half-cosine), ease_in_out is a smoothstep; both kill the abrupt start/stop of a pure linear ramp. For morphing, ease_in_out is usually the one that doesn't look like a jump cut.

    Each float can go from -10 to 10, so you can overshoot - a prompt that dips negative mid-traversal is a deliberate stylistic choice, though beginners will want to stay in 0–1 land.

    How it works

    The node just builds a WAVE_CONFIG dict - curve type, the six strength anchors, and the loop flag - and passes it along. The sampler is the one that does the math: it samples the curve at each iteration and builds the weighted-concat conditioning. Nothing here touches the model, the latent, or the GPU. That's why there's exactly one output (wave_config) and it always goes to the sampler.

    Where it sits

    The chain is dead simple: CLIP Text Encode the prompts → this controller → Explorer Conditioning SamplerVAE Decode. You can also thread the wave_config through Wave Visualizer first to eyeball the curve before committing GPU time - genuinely worth it the first time, because "sine vs linear" is much clearer as a graph than as a guess.

    Installing it

    Part of kentskooking-nodes: ComfyUI Manager → search kentskooking-nodes → install → restart, or clone manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Kentskooking/kentskooking-nodes
    

    Restart after. No models, no extra dependencies.

    The one gotcha

    If you connect positive_c on the sampler but leave these C knobs at 0, C contributes nothing - you get a silent A→B. And if you set loop_video without C, the loop flag does nothing at all, because the loop is only defined over the C segment. The controller is small, but it's small for a reason: everything here is a description of a traversal, and the sampler follows it literally.

    Categorykentskooking/controllers

    Inputs (8)

    NameTypeDefaultDescription
    curve_typeCOMBOlinear3 options: linear, sine, ease_in_out
    positive_a_startFLOAT0.00-10–10
    positive_a_endFLOAT1.00-10–10
    positive_b_startFLOAT1.00-10–10
    positive_b_endFLOAT0.00-10–10
    positive_c_startFLOAT0.00-10–10
    positive_c_endFLOAT0.00-10–10
    loop_videoBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    wave_configWAVE_CONFIG