Curve Modulator
Applies mathematical modulation patterns to curves. Displaces points along a curve using wave functions, noise patterns, and custom mathematical expressions to create textured, organic, or decorative effects.
Node
Interactive preview is available in the interactive reader.
Sockets
Curve (in)- Path — input curve to modulate (required).
Amplitude (in)- Float — optional override for modulation amplitude.
Frequency (in)- Float — optional override for modulation frequency.
Resolution (in)- Int — optional override for sample count.
Curve (out)- Path — the modulated curve.
How It Works
- Connect an input curve (spiral, circle, or any path).
- Choose a modulation type from the dropdown.
- Adjust amplitude and frequency to control the pattern.
- Fine-tune with fade, skip, and alternation controls.
- Use Custom mode with mathematical expressions for full control.
The modulator resamples the input curve to the configured resolution, computes displacement for each sample point, and outputs the displaced curve.
Modulation Types
Sine- Smooth sinusoidal wave — classic organic texture.
Triangle- Linear zigzag — sharper peaks than sine.
Square- On/off steps — creates notched or castellated edges.
Sawtooth- Linear ramp — asymmetric teeth pattern.
Noise- Deterministic random displacement — organic roughness.
Spike- Gaussian spike per period — isolated bumps.
Bulge- Smooth Gaussian envelope — localized swelling.
Dual Wave- sin(x) + sin(2x) — complex harmonic texture.
Custom- User-defined formula with full variable access.
Parameters
Modulation Type- Wave function selector (9 types).
Direction- Displacement direction: Radial, Normal, Z, or Custom vector.
Amplitude- Displacement magnitude. Default: 0.1.
Frequency- Wave cycles. Default: 10.
Freq per turn- When true, frequency is cycles per spiral turn.
Resolution- Sample count for resampling. Default: 1000.
Sample by arc length- Uniform arc-length spacing (vs parameter spacing).
Force resample- Always resample even when point counts match.
Noise seed- Deterministic seed for noise mode.
f(t)- Custom formula (Custom mode only). Default: amp * sin(phase).
Bulge center- Normalized position (0–1) for bulge envelope peak.
Bulge falloff- Gaussian width of bulge envelope.
Fade in / Fade out- Gradual ramp at curve start/end.
Skip modulation- Global bypass switch.
Skip turns- Skip the first N turns from start.
Skip every N turns- Periodic skip cadence.
Alternate turns- C∞-continuous output sign-flip between turn blocks.
Alternate every N- Period of alternation in turns.
Align turns vertically- Phase-lock per-turn for vertical-rib effect.
Adjust layer height- Also modulate Z spacing.
Custom Function — Variable Reference
t- Normalized position along curve (0–1).
x, y, z- Current point coordinates.
i- Point index (0-based).
amp- Current amplitude value.
freq- Current frequency value.
resolution- Total sample count.
angle- Angle from centroid (radians).
phase- Pre-computed freq × angle (or freq × t × 2π).
turnIndex- Current turn number (floor).
currentTurn- Fractional turn count at this point.
totalTurns- Total turns in the curve.
layerIndex- Z-based layer index.
PI, E- Mathematical constants.
Formula Examples
Basic sine- amp * sin(phase) — default, matches Sine type.
Damped wave- amp exp(-t 3) * sin(phase) — decay toward end.
Growing wave- amp t sin(phase) — increase toward end.
Harmonic combo- amp (sin(phase) + 0.5 sin(2 * phase)) — rich texture.
Noise-modulated- amp sin(phase + sin(i 0.1) * 2) — organic variation.
Square pulse- amp * (sin(phase) > 0 ? 1 : -1) — matches Square type.
Conditional by turn- turnIndex % 2 === 0 ? amp * sin(phase) : 0 — alternation.
Exponential bulge- amp exp(-((t - 0.5) / 0.2)^2) sin(phase) — localized.
Zigzag- amp (2 abs(((phase / PI) % 2) - 1) - 1) — triangle wave.
Sawtooth via formula- amp * ((phase / PI) % 2 - 1) — ramp pattern.