home/ modules/ randomness-noise-and-generative-aesthetics

Randomness, Perlin noise, and the aesthetics of generative art

  • learner can articulate what generative art is, its order/chaos sweet spot, and chance as a deliberate tool
  • learner can use pseudo-randomness, custom distributions, and Perlin noise to seed organic form
  • learner can make generative sketches explorable and reproducible via parameterisation and random seeds

Design a parameterised, seed-reproducible generative sketch that sits in the order/chaos sweet spot: noise-driven organic structure with tunable named parameters and a saved seed that recreates any output.

This module builds toward the signature act of the generative visual coder: a p5.js/Processing sketch that is neither a rigid pattern nor visual static, but a living system you can tune on stage or in the studio and recreate on demand. In live-visual and audio-reactive practice this pairing matters doubly — a VJ needs organic motion that never repeats yet stays on-brand, and a saved seed that brings back the exact frame a collaborator loved during last night’s set.

The arc starts with vocabulary and stance: what makes a system generative at all, why the order/chaos sweet spot (Pearson’s cultivated-garden metaphor) is the aesthetic target, and how chance operations make randomness a designed material rather than surrendered control. From there the learner works hands-on: the iterative random walk exercise contrasts memoryless jumps with cumulative drift, “random() vs noise()” and the Perlin noise atom supply the JIT how-to for smooth organic variation, and power-skewed distributions add visual gravity to otherwise flat randomness. The final stretch turns a working sketch into an instrument — extracting magic numbers into named parameters, bounding randomness with explicit ranges the way Reas parameterised the Chronograph fields, and pinning randomSeed() so any output can be saved, shared, and re-summoned.

Every required atom gates the capstone: the definitional and sweet-spot atoms justify the design brief, the noise/distribution/walk atoms produce the organic structure itself, and the parameterisation and seed atoms deliver tunability and reproducibility. Supporting atoms enrich the territory — 2D noise fields and grid displacement extend the technique to textures, multiplication and symmetry offer composition levers, and the collaboration framing and constraint-driven workflow deepen the craft mindset without being needed to finish the task.

Runnable examples

Generated from the context/ instrument corpus by concept (redistributable idioms only). Do not edit — regenerate with gen-module-examples.mjs.

modulation-warp

osc(4).modulate(src(o0), 0.6).out(o0)

hydra-0022 · CC0-1.0

s0.initP5(); src(s0).modulate(noize(), 0.3).out()

p5live-0038 · CC0-1.0

feedback-trail

osc(4).modulate(src(o0), 0.6).out(o0)

hydra-0022 · CC0-1.0

function draw(){ fill(0, 20); rect(0, 0, width, height); circle(mouseX, mouseY, 40) }

p5live-0003 · CC0-1.0

noise-field

noise(4, 0.1).out()

hydra-0002 · CC0-1.0

float h21(vec2 p){return fract(sin(dot(p,vec2(12.9898,78.233)))*43758.5453);}

glsl-0013 · public-domain

oscillator-texture

osc(10).out(o1)

hydra-0039 · CC0-1.0

float v = sin((st.x + u_time*0.1) * 40.0) * 0.5 + 0.5;

glsl-0024 · public-domain

grain-glitch

col += (h21(st + fract(u_time)) - 0.5) * 0.15;

glsl-0026 · public-domain

voronoi-cells

voronoi(8, 0.3, 0.3).out()

hydra-0003 · CC0-1.0

float vor(vec2 p){vec2 g=floor(p),f=fract(p);float m=8.;for(int j=-1;j<=1;j++)for(int i=-1;i<=1;i++){vec2 o=vec2(i,j);vec2 r=o+vec2(h21(g+o))-f;m=min(m,dot(r,r));}return sqrt(m);}

glsl-0025 · public-domain

flow-field

let ang = noise(x*0.01, y*0.01) * TWO_PI

p5live-0008 · CC0-1.0

scanlines

osc (200*fy) * 0.3 + [0.1,0.1,0.1] >> add

punctual-0035 · CC0-1.0

col *= 0.8 + 0.2 * sin(gl_FragCoord.y * 3.14159);

glsl-0037 · public-domain

blur-soften

filter(BLUR, 4)

p5live-0073 · CC0-1.0

chromatic-aberration

col = vec3(texture2D(u_tex0,st+vec2(.005,0)).r, texture2D(u_tex0,st).g, texture2D(u_tex0,st-vec2(.005,0)).b);

glsl-0036 · public-domain

Atoms in this module

Required — these gate the capstone

Generative art requires an autonomous system and a degree of unpredictability
Concept L0 Orientation H
Generative aesthetics occupy the sweet spot between order and chaos
Principle L1 Foundations H
Chance operations use randomness as a deliberate artistic tool, not as an absence of control
Concept L3 Craft HL
Computer-generated randomness is always pseudo-random, not truly random
Concept L1 Foundations H
random() produces uniform random values while noise() produces smooth correlated pseudo-random values
Concept L2 First instrument H
Perlin noise produces smooth, continuous pseudo-random values, unlike the erratic jumps of raw random()
Concept L2 First instrument H
Raising a uniform random value to a power skews its distribution toward one end of its range
Concept L2 First instrument H
An iterative random walk accumulates small random steps to produce an organic wandering line
Concept L2 First instrument H
Extracting magic numbers into named variables makes a generative sketch explorable by tuning
Principle L2 First instrument H
Parameterized randomness lets artists control how much chance enters a system via explicit ranges
Procedure L3 Craft HL
randomSeed() makes a p5.js sketch's random output deterministic so results can be saved, shared, and re-created
Concept L2 First instrument H

Supporting — enrichment, not gating

Generative art is always a collaboration between the artist and the autonomous system
Concept L0 Orientation H
A fixed set of self-imposed constraints (one font, one image, one palette) speeds generative iteration
Principle L2 First instrument HL
Generative Design organises its p5.js sketches as Principles (P) then Methods (M) then Applications (A)
Concept L2 First instrument H
A 2D Perlin noise field can displace every point in a regular grid to create organic cloud-like structure
Concept L2 First instrument H
2D Perlin noise maps x,y coordinates to smooth organic texture fields
Procedure L3 Craft H
Multiplying a single generative element by many instances reveals emergent system behavior
Principle L2 First instrument H
Adding symmetry to a random grid triggers human pattern recognition and produces apparent faces or structures
Principle L2 First instrument HL
Noise-field is coherent — nearby points are similar yet non-repeating — making it the foundational texture primitive for organic imagery
Concept L2 First instrument HG
FBM sums octaves at doubling frequency and halving amplitude — more octaves add finer natural detail across scales
Concept L2 First instrument HG
One coherent noise source well-warped beats many uncorrelated textures fighting — texture should support form, not compete with the focal-point
Principle L2 First instrument HGL
Degradation textures (grain, scanlines, chromatic-aberration, dither) place a piece in a glitch/retro-crt/vaporwave idiom; clean noise/voronoi signals organic
Concept L2 First instrument HL
Domain-warping noise with noise is the core organic visual move — turbulent, liquid, marbled
Principle L2 First instrument HG