Nodes/ComfyUI-curved_weight_schedule/Interactive Curve Designer ๐ŸŽจ
ComfyUI Node

Interactive Curve Designer ๐ŸŽจ

Draw your ControlNet strength curve with an actual mouse

By diffussy69ยทCreated 11 months agoยทUpdated 9 months agoยท 2
Interactive Curve Designer ๐ŸŽจ
    • formula
    • preview
    • description
    โ—„points_data[{"x":0,"y":1},{"x":0.25,"y":0.75},{"x":0.5,"y":0.5},{"x":0.75,"y":0.25},{"x":1,"y":0}]โ–บ
    โ—„interpolation_methodcubic_splineโ–บ
    โ—„resolution100โ–บ
    โ—„normalizetrueโ–บ

    Every other curve tool in this pack makes you describe the shape - dropdowns, sliders, math formulas. This one lets you just draw it. A canvas appears on the node, you click and drag to plot control points, and the curve your mouse traces becomes a formula string plus a preview image, ready to feed into the scheduler. If you've ever been annoyed at translating "I want it to dip around 60% then spike" into a curve_param value, this is the node you've been looking for.

    How it works

    The node ships a JavaScript canvas (in web/interactive_curve_designer.js). You place and drag points on a 0โ€“1 grid; the frontend writes the points into the points_data input as JSON. The backend takes those points, interpolates them into a smooth curve using your chosen interpolation_method - linear, cubic_spline, polynomial, or hermite - and produces the outputs. resolution sets how many samples the curve gets (10โ€“500), and normalize rescales the result to 0โ€“1, which you generally want on.

    The points_data field has a sensible default (a diagonal line from top-left to bottom-right), so the node does something reasonable even before you touch the canvas. The default interpolation is cubic_spline, which is the right choice for hand-drawn points - linear will faithfully reproduce your shaky hand as straight segments.

    Outputs are formula (the generated math string, for the Advanced scheduler's custom_formula), preview (the drawn curve as an IMAGE), and description (text). The formula auto-generates from your drawing, which is the neat party trick - draw a bump, and the node figures out an expression that approximates it.

    Why it beats the alternatives

    It's the fastest path from "a shape I have in my head" to "a keyframe schedule." With presets you're limited to what the author thought of; with the Formula Builder you're limited to its nine patterns; here you can trace literally anything, including asymmetric shapes no clean function describes. The README's own recommendation for beginners is to start here, and for once the recommendation is right.

    Installing it

    Same pack, and the canvas only works if the JavaScript loads:

    cd ComfyUI/custom_nodes
    git clone https://github.com/diffussy69/comfyui-curved_weight_schedule
    pip install matplotlib pillow numpy torch scipy
    

    Restart, then hard-refresh (Ctrl+Shift+F5) - a stale browser tab is the most common reason the canvas doesn't appear. If the node still shows a bare field, the extension didn't load; check the console.

    Where people get burned

    The points_data string is auto-updated by the canvas, so don't hand-edit it mid-session - the canvas overwrites your edits on the next drag. And remember the outputs are a formula and a picture, not keyframes. You still have to feed the formula into the Advanced Curved ControlNet Scheduler's custom_formula (or paste it into the plain scheduler's curve machinery) for it to affect anything. The drawing is the fun part; the wiring is the job.

    Categoryconditioning/controlnet

    Inputs (4)

    NameTypeDefaultDescription
    points_dataSTRING[{"x":0,"y":1},{"x":0.25,"y":0.75},{"x":0.5,"y":0.5},{"x":0.75,"y":0.25},{"x":1,"y":0}]JSON data from canvas (auto-updated)
    interpolation_methodCOMBOcubic_splineCurve interpolation method
    resolutionINT10010โ€“500Curve resolution
    normalizeBOOLEANtrueNormalize output to 0-1 range

    Outputs (3)

    NameTypeDescription
    formulaSTRINGโ€”
    previewIMAGEโ€”
    descriptionSTRINGโ€”