Wave IPAdapter Advanced
IPAdapter settings that ride the wave — and the model passes through
- model
- ipadapter
- image
- image_negative
- attn_mask
- clip_vision
- wave_config
- model
- wave_config
IPAdapter is how you drag a reference image's identity or style into a generation without fine-tuning anything. In this pack, Wave IPAdapter Advanced is where you configure that - and like the other "Apply" nodes in kentskooking-nodes, the name is doing a little more work than it should. It doesn't apply the IPAdapter. It stores every IPAdapter setting inside the wave_config, passes your model through untouched, and lets the iterative samplers do the actual application per-frame, with the weight riding the wave.
How it works
The inputs mirror cubiq's IPAdapter Advanced node almost exactly - which is deliberate, because under the hood it calls into ComfyUI_IPAdapter_plus when the samplers finally apply it. The node takes your model, the loaded ipadapter (from cubiq's IPAdapter Model Loader), a reference image, and the full menu of IPAdapter parameters: weight, weight_type (linear, ease in/out, strong middle, style transfer, and the rest), combine_embeds, start_at, end_at, and embeds_scaling. Optional extras are image_negative, attn_mask, and clip_vision.
The important quirk: the model output is a passthrough - the exact model you put in comes out unchanged. The settings go into a copy of the wave_config, and the sampler applies the IPAdapter to the model only at sample time, recomputing strength each frame. It also handles image batches: it splits your reference batch into a sequence and cycles through it per cycle, so different reference images can drive different segments of the animation.
Inputs that matter
- wave_config (optional in the schema, but effectively required) - without it the node throws immediately: "WaveIPAdapterAdvanced requires a wave_config input."
- ipadapter - from
ComfyUI_IPAdapter_plus's model loader. This is the dependency that has to be installed separately. - weight / weight_type - your base identity-hold settings; the Wave IPAdapter Controller can override the weight range per-frame.
- start_at / end_at - the fraction of each sample where the adapter kicks in.
Outputs: model (passthrough) and the enriched wave_config.
Installing it
Part of kentskooking-nodes: ComfyUI Manager → search kentskooking-nodes → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Kentskooking/kentskooking-nodes
Restart after. Then install the one real dependency - this node needs cubiq's ComfyUI_IPAdapter_plus:
cd ComfyUI/custom_nodes
git clone https://github.com/cubiq/ComfyUI_IPAdapter_plus.git comfyui_ipadapter_plus
Restart again. If the pack can't find it, the samplers print Warning: IPAdapter ImportError at startup and silently disable IPAdapter - a confusing way to find out you skipped a step.
Common issues
- The "requires a wave_config input" error - you attached the node without a controller upstream. Every wave node wants a controller; this one refuses to guess.
- IPAdapter silently doing nothing - either
ComfyUI_IPAdapter_plusisn't installed, or the enriched wave config never reached the sampler (keep one continuous config line). - Identity drifts mid-run - you fed a batch and the adapter cycles references. That's a feature, not a bug: it's how you walk from one face or style to another.
Start with weight 0.5–0.8 and weight_type linear; reach for "style transfer" when you want the look but not the composition.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| ipadapter | IPADAPTER | — | |
| image | IMAGE | — | |
| weight | FLOAT | 1.00-1–5 | — |
| weight_type | COMBO | 12 options: linear, ease in, ease out, ease in-out, reverse in-out, weak input, +6 | |
| combine_embeds | COMBO | 5 options: concat, add, subtract, average, norm average | |
| start_at | FLOAT | 0.0000–1 | — |
| end_at | FLOAT | 1.0000–1 | — |
| embeds_scaling | COMBO | 4 options: V only, K+V, K+V w/ C penalty, K+mean(V) w/ C penalty | |
| image_negativeopt | IMAGE | — | |
| attn_maskopt | MASK | — | |
| clip_visionopt | CLIP_VISION | — | |
| wave_configopt | WAVE_CONFIG | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| wave_config | WAVE_CONFIG | — |