All 34 Waves

Each wave is a deterministic function: pass a number in, get a number back. The output range is roughly [−0.5, +0.5] before you scale it. Live previews are rendered by p5.js + p5.waves (JS); processing.waves (Java) produces numerically identical output.

idx name formula harsh = uses randomness closing = periodic at 2π·n

Pure sine

The reference shapes. Smooth, periodic, easy to predict.

00
classic sine
sin(x*.1)*.4
gentleclosing
01
sine
sin(x*.2)*.25
gentleclosing
02
sharp peaks
abs(sin(x*.1))*.5
gentleclosing
33
smooth solid sine
sin(x*3.1)*.25
gentle

Peaks & valleys

Modulated sines that emphasise crests or troughs.

06
mountain peaks
abs(cos(x*.1))*.35 + sin(x*.1)*.25
gentleclosing
07
valleys
abs(cos(x*.1))*-.35 + sin(x*.1)*.25
gentleclosing
09
batman
sin(x*.1)*.7 % .4
gentleclosing
10
offset sine
ceil(cos(x*.1))*.25 − sin(x*.1)*.25
gentleclosing

Stepped & pulses

Quantised waves: ceil/round/modulo carve smooth shapes into plateaus.

05
stepped sine
ceil(sin(x*.1))*.25
gentleclosing
11
steps down
ceil(tan(x*.1))*.25
harsh
12
steps
round(sin(−x*.1))*.25
gentleclosing
08
zig-zag sine
sin(x*.2)*.4 % .12
gentleclosing
03
square
(x*.025)%1 < .5 ? −.5 : .5
gentle
04
pulse
(x*.5)%20 < 1 ? −.5 : .5
gentle

Layered & modulated

Two or more sines multiplied, added, or modulated. More personality, still smooth.

13
squared sine
sq(sin(x*.1))*.25
gentleclosing
14
bumpy sine
sin(x*.1)*.25 + sin(x*.5)*.1
gentleclosing
15
wobble sine
sin(x*.1)*cos(x*.2)*.5
gentleclosing
17
meta sine
sin(x*.45 + radians(x))*cos(x*.4)*.5
gentle
31
round linked sine
sin(x*.1)*cos(x*1)*.5
gentleclosing
29
ramp up sine
sin(x)*(x*.01%.5)
gentle
30
triangle sine
sin(x)*(x*.01%1−.5)
gentle
32
half sine
sin(x*.05)*(x*.1%.5)
gentle

Linear & saw

No trig, just modulo and absolute value. Sharp, predictable.

18
triangle
abs((x*.03) % 1 − .5)
gentle
19
ramp
−(x*.02%1) + .5
gentle
20
saw down
x*.03 % .5
gentle
21
saw up
−x*.03 % .5
gentle

Chaos & special

Things break loose: tangents, noise, logarithm, random. Most are flagged harsh: they use a seeded PRNG or a non-trig function with surprising spikes.

16
up down noise
x*sin(x*.1) % .5
gentle
22
fade out
log(x)*.1
gentle
23
grow random
random(x*.003)
harsh
24
noise
noise(x*.1) − .5
harsh
25
fuzzy pulse
tan(x*20)*.05
harsh
26
up down pulse
tan(x*.1)*.05
harsh
27
bald patch
sq(x*.05) % .5
gentle
28
fuzzy peak sine
sin(x*.1) < 0 ? random(−.2, .2) : sin(x*.1)*.5
harsh