LoRA Pair Lane (CCN)
LoRA Pair Lane (CCN)
- curve
- lanes
- lanes
- info
LoRA Pair Lane (CCN) is a scheduler in node form: one LoRA, with a strength that isn't fixed but curved over the run. You hand it a Wan 2.2 LoRA pair, a peak strength for each expert, and optionally a curve - and it emits a "lane" that MoE Sampler Dual (CCN) can play over the whole sampling schedule. The curve is your musical score for when that LoRA's influence fades in and out.
Why bother? In a two-expert Wan 2.2 run, a fixed-strength LoRA is one thing, but lots of effects are temporal: a style LoRA you want only during the early high-noise phase and not baked into the final frames, or a speed/motion LoRA you want to ramp in after the first steps so it doesn't fight the composition phase. A lane gives you that - the curve multiplies the peak strengths over global run progress (0 = first step of the whole schedule, 1 = last step), not per-phase. So a single curve can span the expert boundary, which is exactly the freedom you want. The source docstring's example says it plainly: "a speed LoRA ramping in after the first high-noise steps."
It reuses the same partner-resolution as LoRA Pair Loader - select style_high_noise.safetensors and the low_noise partner auto-resolves from the filename when it exists; an unpaired file applies to both experts. A strength_high or strength_low of 0 skips that side. The lanes input is how lanes chain: wire one lane's output into the next's lanes input to build a queue, then feed the final output into MoE Sampler Dual's lora_lanes socket.
Inputs:
- lora_name - the LoRA file; partner auto-resolves.
- strength_high / strength_low - peak strength per expert; 0 skips a side.
- curve (optional CCN_CURVE) - the strength multiplier over global progress. Absent = constant strength.
- lanes (optional) - chain a previous lane ahead of this one.
Outputs: lanes (the accumulated list, CCN_LORA_LANES) and info (a human-readable description of what the lane resolved to). Worth knowing: for a constant strength with no curve, the static LoRA Pair Loader is cheaper - a constant lane behaves identically but costs repatching at sampling time. The lane's real value is the curve, and the docstring is honest that a constant lane exists mainly so you can add a curve later without rewiring.
Install
WIP pack member, so git clone:
cd ComfyUI/custom_nodes
git clone https://github.com/valkymaera/ComfyCollectorNodes
Restart ComfyUI; find "LoRA Pair Lane (CCN)" in the "CCN" category. Stock deps only. No model downloads, MIT, and treat the WIP label as a contract that the API can shift.
Common issues
The curves are evaluated per segment by the sampler, and there's a repatch budget (lane_segments on MoE Sampler Dual) - with a small segment count a very wiggly curve gets stepped rather than smoothly followed, so check the sampler's compiled-staircase info output if your fade looks blocky. Also, don't double-apply: a lane emits on lora_lanes and does not patch the models itself, so wiring both the loader's model outputs and lora_lanes into the sampler can't double-apply - but wiring a lane and a baked row of the same LoRA can. If a curve has no visible effect, verify the lane actually resolved to a pair via info - an unresolvable filename silently becomes single-file-both-experts.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| lora_name | COMBO | LoRA file; a HIGH/LOW partner is auto-resolved from the filename when one exists. | |
| strength_high | FLOAT | 1.00-10–10 | Peak strength on the high-noise expert. 0 skips that side. |
| strength_low | FLOAT | 1.00-10–10 | Peak strength on the low-noise expert. 0 skips that side. |
| curveopt | CCN_CURVE | Strength multiplier over global run progress (curve y * strength). Absent = constant. | |
| lanesopt | CCN_LORA_LANES | Chain from a previous LoRA Pair Lane. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| lanes | CCN_LORA_LANES | — |
| info | STRING | — |