Nodes/Jovimetrix/WAVE GEN (JOV) 🌊
ComfyUI Node

WAVE GEN (JOV) 🌊

Sine, square, sawtooth β€” make your animation breathe

By AmoranoΒ·Created 3 years agoΒ·Updated 12 months agoΒ· 397
WAVE GEN (JOV) 🌊
    • πŸ›Ÿ
    • πŸ”Ÿ
    β—„β™’SINβ–Ί
    β—„FREQ1.00β–Ί
    β—„πŸ”Š1.00β–Ί
    β—„PHASE0.000β–Ί
    β—„OFFSET0.000β–Ί
    β—„πŸ•›0.0000β–Ί
    β—„πŸ”³falseβ–Ί

    WAVE GEN (JOV) is the node that turns a static animation into one with a pulse. It computes a waveform - sine, square, sawtooth, whatever you pick from sixteen types - and hands you the current value as both a float and an int. Wire that number into a TRANSFORM's angle, a BLEND's strength, a seed, a denoise or any numeric input, and your parameter starts oscillating on its own. It's the difference between a workflow that does the same thing every frame and one that feels alive.

    How it works

    The math is the boring-but-reliable kind: each wave type is a function of frequency Γ— 2Ο€ Γ— time + phase, scaled by amplitude and lifted by an offset. The important part for you is the Time (πŸ•›) input. Leave it at 0 and the node outputs a single static number - you want it wired to a frame counter so each queue run advances the phase. Pair it with Jovimetrix's own TICK node and you get a per-frame time source for free; wire TICK's output into Time and WAVE GEN's output into whatever you want to animate, and every frame of a batch gets a slightly different value.

    The waveform dropdown (☿) has the full set: SIN, COS, TAN, sawtooth, triangle, square, pulse, ramp, step, exponential, logarithmic, noise, plus a few curve variants (haversine, rectangular pulse, gaussian, chirp). Square and pulse are the ones for hard, beat-like switching - perfect for strobing a blend on and off. Sine and triangle are your smooth, gentle loops. Noise is the chaotic one, and it's great when you want organic jitter rather than a clean cycle.

    The inputs that matter

    • Wave (☿) - the waveform shape. This is the character of your motion.
    • FREQ - frequency, how many cycles per time unit. Higher = faster oscillation.
    • Amplitude (πŸ”Š) - how big the wave swings. Default 1.
    • PHASE - where in the cycle you start. Two WAVE GENs with a phase offset on the second are how you make something drift, not just wobble.
    • OFFSET - the vertical lift, so your wave oscillates around something other than zero.
    • Time (πŸ•›) - the input to advance per frame, usually from TICK.
    • Invert (πŸ”³) - flips the wave upside down.

    Outputs

    Two: FLOAT (the continuous wave value - this is the one you'll wire everywhere) and INT (the same value truncated to an integer, for seeds, indices and int-only inputs).

    Install and the naming note

    It's part of Jovimetrix: git clone https://github.com/Amorano/Jovimetrix.git into ComfyUI/custom_nodes, then pip install -r requirements.txt (Windows portable: .\python_embed\python.exe -s -m pip install -r requirements.txt), or search "Jovimetrix" in ComfyUI Manager. No model downloads.

    If your search bar shows "WAVE GENERATOR (JOV) 🌊" instead of "WAVE GEN (JOV) 🌊", that's the older name for the same node - current releases list the shorter one with a bigger waveform menu. The classic beginner mistake is forgetting to advance Time, which produces a dead constant; hook up a TICK or frame counter first, then tune FREQ and AMP until the motion feels right.

    CategoryJOVIMETRIX πŸ”ΊπŸŸ©πŸ”΅/CALC

    Inputs (7)

    NameTypeDefaultDescription
    β™’optCOMBOSINWave Function
    FREQoptFLOAT1.000–9223372036854776000Frequency
    πŸ”ŠoptFLOAT1.000–9223372036854776000Amplitude
    PHASEoptFLOAT0.0000–1Phase
    OFFSEToptFLOAT0.0000–1Offset
    πŸ•›optFLOAT0.00000–9223372036854776000Time
    πŸ”³optBOOLEANfalseColor Inversion

    Outputs (2)

    NameTypeDescription
    πŸ›ŸFLOATβ€”
    πŸ”ŸINTβ€”