SHADER//SYNTH
WEBGL
AUDIO
MIDI
BPM 120
β–Œ VISUAL β–‘ FRAGMENT cmd+enter to eval line Β· cmd+shift+enter all
β–Œ AUDIO β–‘ PATTERN cmd+enter to play line Β· cmd+. to stop
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ SHADER // SYNTH β”‚ β”‚ live coded a/v rig β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β–Ά click anywhere to enable audio
cmd+enter evaluates Β· cmd+. stops Β· ? for help
[ X CLOSE ]

SHADER // SYNTH β€” REFERENCE

VISUAL DSL

Chain operators, end with .out(). Each chain compiles to GLSL.

SOURCES

  • osc(freq, sync, offset) β€” oscillating bars
  • noise(scale, offset) β€” perlin-ish noise
  • voronoi(scale, speed, blending) β€” cell pattern
  • shape(sides, radius, smoothing) β€” polygon
  • gradient(speed) β€” rainbow gradient
  • solid(r, g, b) β€” flat color
  • src(o0) β€” feedback from previous frame

GEOM

  • .rotate(angle, speed)
  • .scale(amount, xMult, yMult)
  • .repeat(rx, ry)
  • .kaleid(n)
  • .pixelate(x, y)
  • .modulate(other, amount)
  • .modulateRotate(other, mult, offset)
  • .modulateScale(other, mult)

COLOR

  • .color(r, g, b)
  • .brightness(n) Β· .contrast(n)
  • .invert() Β· .luma(threshold)
  • .posterize(n, gamma)
  • .saturate(n)

BLEND

  • .blend(other, amount)
  • .add(other, amount) Β· .mult(other, amount)
  • .diff(other) Β· .layer(other)

AUDIO DSL

Strudel-flavored mini patterns. Whitespace = steps, ~ = rest, *N = repeat.

SOURCES

  • s("bd sn hh cp") β€” sample names
  • n("c2 e2 g2") β€” note names or midi numbers

SAMPLES

  • bd β€” kick
  • sn β€” snare
  • hh β€” hat
  • cp β€” clap
  • bass / lead / pad β€” synths (use with n())
  • sine / square / saw / tri β€” basic synth waves

MODIFIERS

  • .gain(n) Β· .pan(n)
  • .lpf(hz) Β· .hpf(hz)
  • .delay(time) Β· .room(amt)
  • .speed(n) Β· .cycles(n)

MIDI

Use midi(cc, lo, hi, min, max) in any visual or audio expression.

  • osc(midi(1, 0, 127, 10, 80)).out()
  • MIDI notes trigger built-in samples by pitch class.

KEYS

  • Cmd/Ctrl + Enter β€” evaluate current block
  • Cmd/Ctrl + Shift + Enter β€” evaluate full editor
  • Cmd/Ctrl + . β€” stop audio
  • ? β€” toggle this help