harmonic-perlin-gradients

star 0

Use when generating color gradients, landscapes, or textures that combine Perlin noise with music-theory-derived color proportions. Use when asked to create gradients from an image palette, map harmonic intervals to visual output, or generate procedural art with musical structure.

trycua By trycua schedule Updated 2/20/2026

name: harmonic-perlin-gradients description: Use when generating color gradients, landscapes, or textures that combine Perlin noise with music-theory-derived color proportions. Use when asked to create gradients from an image palette, map harmonic intervals to visual output, or generate procedural art with musical structure.

Harmonic Perlin Gradients

Overview

Generate procedural color fields by mapping Perlin noise values to a color palette through thresholds derived from harmonic music interval ratios (just intonation). The musical structure determines where colors transition; the noise determines the shape of those transitions.

When to Use

  • Generating gradients from a sampled image palette
  • Creating procedural textures/landscapes with musical proportions
  • Batch-generating themed color fields with systematic variation
  • Any "color + noise + music theory" combination

Core Pattern

1. Extract palette from source image (dark → light, 15-21 colors)
2. Choose harmonic interval (chord, scale, series)
3. Normalize frequency ratios to [0,1] thresholds
4. Render Perlin noise field, map noise values to palette via thresholds
5. Interpolate between adjacent palette colors for smooth blending

Quick Reference: Harmonic Intervals → Positions

Interval Ratios Normalized positions
Octave 1, 2 0.0, 1.0
Perfect Fifth 1, 3/2, 2 0.0, 0.5, 1.0
Major Triad 4, 5, 6 0.0, 0.5, 1.0
Minor Triad 10, 12, 15 0.0, 0.4, 1.0
Major 7th 8, 10, 12, 15 0.0, 0.286, 0.571, 1.0
Dominant 7th 4, 5, 6, 7 0.0, 0.333, 0.667, 1.0
Minor 7th 10, 12, 15, 18 0.0, 0.25, 0.625, 1.0
Diminished 7th 2^(0/12), 2^(3/12), 2^(6/12), 2^(9/12) Equal spacing
Augmented 2^(0/12), 2^(4/12), 2^(8/12) Equal spacing
Sus4 6, 8, 9 0.0, 0.667, 1.0
Major Pentatonic 1, 9/8, 5/4, 3/2, 5/3, 2 0.0, 0.125, 0.25, 0.5, 0.667, 1.0
Minor Pentatonic 1, 6/5, 4/3, 3/2, 9/5, 2 0.0, 0.2, 0.333, 0.5, 0.8, 1.0
Whole Tone 2^(i/6) for i=0..6 Equal spacing
Harmonic Series 1, 2, 3, ..., N Clusters toward low end
Overtone Scale 1, 9/8, 5/4, 11/8, 3/2, 13/8, 7/4, 2 Non-uniform

Normalization formula: position = (ratio - min) / (max - min)

Noise Modes and Their Character

Mode Character Best for Key params
fbm Smooth, gradient-like Soft fields, horizons scale 1.0-2.0, octaves 1-2
warp Organic, flowing Marble, lava, clouds warpAmt 1.0-3.0
ridge Sharp peaks, veins Mountains, cracks gain 0.5-0.65, high octaves
turbulence Billowy, cellular Storms, plasma high octaves, abs(fbm)
terraced Flat plateaus, topo map Strata, contour maps terraceSteps 5-12

Tuning Parameters

Smoothness (gradient-like → textured):

  • octaves: 1 = ultra smooth, 2 = soft, 4+ = detailed
  • scale: lower = broader features, higher = finer
  • gain: lower = smoother falloff between octaves

Contrast (matte → dramatic):

  • gamma: 1.0 = linear, <0.7 = high contrast, >1.2 = washed
  • Palette index spacing: adjacent indices = subtle, wide jumps = dramatic

Directionality:

  • vBias: 0.3-0.7 adds vertical gradient (horizon effect)
  • Negative vBias inverts (bright top, dark bottom)

Palette Extraction Guidelines

Sample 15-21 colors from source image ordered dark to light. Include:

  • 3-4 darkest tones (shadows/background)
  • 8-10 midtones (dominant color range)
  • 3-4 highlights (brightest areas)

Space colors perceptually even. Adjacent palette entries should look distinct but not jarring.

Color Index Selection Per Gradient

Match palette range to musical mood:

Mood Palette indices Example interval
Bright, open Mid-to-high (8-20) Major triad, pentatonic
Warm, muted Mid-range (5-17) Dominant 7th, sus4
Deep, moody Low-to-mid (2-14) Minor triad, minor 7th
Full range Spanning (0-20) Harmonic series, overtone
Soft, pastel High only (10-20) Augmented, whole tone

Implementation Structure

The generator produces self-contained HTML files with inline JS:

  1. Python script (generate_15.py): defines palette, intervals, noise config per gradient
  2. HTML template: contains Perlin noise implementation, fbm/warp/ridge functions, rendering loop
  3. Output: standalone HTML files, one per gradient

Key JS functions in template: perlin(x,y), fbm(x,y,...), warp(x,y,...), ridge(x,y,...)

Common Mistakes

Mistake Fix
All gradients look the same Vary octaves, scale, vBias, and palette range per gradient
Too dark / no highlights Ensure palette indices reach into the light end (16+)
Too washed out / no contrast Use wider palette index jumps or lower gamma
Smoky / liquidy appearance Use plain fbm with octaves 1-2 instead of warp
Sharp banding between colors Ensure smooth interpolation between adjacent threshold colors
Noise too fine / busy Lower scale (1.0-2.0) and octaves (1-2)
Install via CLI
npx skills add https://github.com/trycua/vgrad --skill harmonic-perlin-gradients
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator