Effects¶
An effect draws: each frame it writes a color per light into its Layer's buffer, which modifiers reshape and a driver sends out.
Effects are built from the shared power functions, the drawing, field and motion routines every effect composes. One that names an index color reads the global palette, the palette control on Drivers.
Each card's emoji are its tags, as the tag emoji legend explains, and its dimension is its native axes: a Layer extrudes a lower-dimensional effect onto a bigger grid.
AudioSpectrum 💫🎶 · 2D

The mic's frequency bands spread across X, the sixteen, every third octave it measures or the piano's keys, each column lit bottom-up by its magnitude. The classic equalizer display. The bands scale to any width, so a wide grid gives each several columns and a narrow one samples. On a single row the bars collapse to per-column brightness. readouts draws the rest of the frame with the bars: the dominant frequency, the gate, the bass, mids and treble, a level meter and a square for each drum's hit, and the twelve pitch classes: the-readouts. noteNames writes the three strongest classes at the top left, "C E G", and the key with its tuning at the right, "Am +12".
colorMode: The palette by height (a VU), per band, or as GEQ PPA's sweep.speed: The sweep's swings through the palette a minute.readouts: The level meter, hits, gate and peak, drawn with the bars.noteNames: The strongest pitch classes top left, the key top right.bands: The bars: the sixteen, the third octaves or the piano's keys.
Attribution: Andrew Tuline, troyhacks
Aurora 💫🖌️🌫️🎡 · 3D

Several noise fields, each on its own clock, read in polar coordinates and composited into curtains of light. Nothing is simulated: layers of one field at different scales interfere, and that is what reads as curtains folding through one another. polarTable and polarTable16 choose the polar address table and its precision.
speed: Master rate, every layer scales from it; 0 freezes it.scale: Noise cells across the grid; low is broad, high is fine.layers: How many fields are composited, and the main cost knob.warp: How far the field displaces its own sample angle.twist: How much the radius shears the angle, giving the curtains their lean.segments: Kaleidoscope wedges; 1 leaves the composition unfolded.contrast: How much of the field lights; low is cloud, high is sharp.octaves: Detail within each layer, multiplying the cost knob.
Attribution: Stefan Petrick
Ballpit 💫✨ · 2D

Falling balls that pile up and shove each other aside. The heap is emergent: gravity pulls, the floor stops, and contact between neighbors makes the shape. tilt turns the pit into a slope and the pile slides and re-settles.
balls: How many balls share the pit.gravity: How hard they fall.size: Contact radius in pixels: how far apart balls sit when touching.bounce: How much speed a contact keeps.tilt: Sideways force, turning the pit into a slope.drag: Damping, so the heap settles instead of sloshing.
Attribution: Damian Schneider
BeatRipples 💫🎶🖌️ · 2D

Every beat is a stone dropped in water. trigger on kick drops a stone only on the bass's own onset, so the ripples follow the kick drum rather than every hit. A real wave simulation, which gives what a drawn expanding circle cannot: ripples pass through each other, reflect off the walls and interfere into standing patterns. The loudest band decides where the stone lands, a bass hit near the center and a treble hit out at the rim, and its strength sets how deep.
damping: How long the water keeps ringing.drop: How deep a beat's stone falls.rain: Idle drops when there is no music, so the surface is alive in silence.shine: How strongly the slope lights the surface.trigger: Every hit, or only the kick, the bass's own onset.
Attribution: Gomez
Blurz 🐙🎶 · 2D

Audio-reactive blurred dots: one frequency band per frame lights a dot, then the whole frame is blurred for soft trails. The dot's position maps to that band, or to the major-peak frequency with freqMap. geqScanner sweeps the dot steadily across the strip, and with neither the dot jumps to a random position. A band struck that frame flashes its dot white.
fadeRate: Background decay per frame.blur: Blur strength applied each frame.freqMap: Place the dot by the major-peak frequency, not by scanning.geqScanner: Scan the dot across the strip in a GEQ-like sweep.
Attribution: Andrew Tuline, softhack007
BouncingBalls 🐙 · 2D

A row of balls per column bounce under gravity, each losing energy on impact and relaunching when it stops. Every column runs independently, so a panel shows a forest of bouncing dots, palette-colored by ball index over a fading background.
grav: Gravity strength: higher falls faster and bounces snappier.numBalls: Balls per column.
Attribution: Andrew Tuline
Breakout 💫🎵👾 · 2D

A paddle knocking down a wall of bricks, the attract mode of the 1976 original where the machine plays itself. The paddle waits out a reaction delay and aims slightly off, so steep balls outrun it. The ball speeds up as bricks fall, and the paddle halves once the ball reaches the back wall. Three misses, or a cleared wall, deal a fresh one. The brick rows take their colors from the active palette.
speedBpm: Court crossings per minute at the serve, on any grid size.rows: Rows of bricks, fewer where the grid has no room.paddle: Paddle width as a percentage of the court.reflex: How sharply the paddle chases; below full it lags a steep ball.descend: The wall creeps down and new rows enter at the top.audioReactive: Columns glow with their bands, the palette follows the volume.player: The paddle, for a fader or an input; idle, the game plays it.
Attribution: Breakout
ColorTrails 💫🖌️💨🌫️ · 3D

Emitters pouring color into a flow that carries and folds it. There is no velocity field: one noise value shifts each row sideways, one shifts each column, and the two shears compose into a swirling current. A large grid is steered by a few hundred numbers, which is why it runs where a solver does not. Compare with Fluid: the solver when the medium is the subject, this when the color is.
speed: How fast the emitters travel.flow: How far a row or column is pushed: the shear amount.flowSpeed: How fast the flow itself drifts and reverses.scale: The profiles' spatial frequency: a few broad bands or many fine ones.persistence: How long color survives, as a half-life.colorSpeed: How fast the emitters walk the palette.size: The orbit's radius and the Lissajous figure's reach.mode: All three emitters, or one at a time to see what each adds.flowType: The field carrying them: Noise, Radial out or Radial in.
Attribution: Stefan Petrick, 4wheeljive
DemoReel 💫 · 3D

Plays every other registered effect in turn, auto-advancing on a timer, so one Layer cycles the whole library hands-free. New effects are picked up automatically. It can pick a fresh palette each cycle and overlay the playing effect's name, and the status line says which is playing. It never hosts itself, and it plays in sequence rather than compositing.
interval: Seconds each effect plays before advancing.shuffle: Jump to a random next effect instead of registry order.randomPalette: Pick a random palette on each cycle.showName: Overlay the playing effect's name in a small font.
Attribution: FastLED, Mark Kriegsman
Dissolve 💫 · 2D

Two color fields trade places pixel by pixel in an order that looks random but is computed. The transition needs no per-pixel state and no shuffled index list, so two devices rendering the same frame dissolve identically without exchanging anything.
bpm: How fast one transition completes.spread: How long pixels spend mid-flight; 0 gives a hard edge.eased: Ease the progress instead of sweeping linearly.scatter: Random order; off gives a positional wipe from the same code.
DistortionWaves 🐙 · 2D

Two interfering sine waves beat against each other into a moire color field. The waves run at independent frequencies and slightly different time rates, and their summed value indexes the active palette.
freq_x: Horizontal wave frequency.freq_y: Vertical wave frequency.speed: Animation rate; 0 freezes it.
Attribution: ldirko, blazoncek
DrumKit 💫🎶 · 2D

A drum kit seen from the audience, each drum lighting as it is played: the bass drum on the kick, the snare, the hi-hat with stars over the top, and three rack toms and a floor tom by their pitch, so a drum solo plays across the kit. The kick, the snare and the hi-hat are the audio's bass, mid and treble onsets. The toms are the third-octave bands from 80 to 400 Hz, two bands each: the floor tom at the right, the rack toms over the bass drum, the high one at the left. Each hit glows for decay and fades; between hits the kit shows at idle.
decay: How long a hit glows, in tens of milliseconds.idle: How bright the kit shows between hits, 0 for dark.
Echo 💫✨ · 2D

The previous frame fed back through a zoom and rotation, dimmed, with a bright source drawn on top. The trails spiral away from themselves, like a camera pointed at its own monitor. Feedback is not a primitive: once the grid can be read as a texture (sampleWrap), the whole family of trails, zoom blur and smear is a few lines.
bpm: How fast the source orbits.zoom: How much the feedback grows each frame.rotate: Rotation per frame, which turns the trail into a spiral.decay: How fast the echo fades; higher is a shorter trail.size: Radius of the bright source.
Fire ⚡️🦅🧬 · 2D

A Fire2012-style heat field: sparks at the base rise and cool through the active palette, coldest at its low end. The spark count scales with the width. The flame color comes from the active palette: the Lava palette (black, red, orange, yellow, white) gives the classic fire. An Ocean or Forest palette turns the flame blue or green.
cooling: How fast heat dissipates as it rises; higher is shorter flames.sparking: Chance of a new spark at the base each frame; higher is livelier.
Attribution: Mark Kriegsman, toggledbits, David Jupijn
Fireworks 💫✨ · 2D

Shells rise, stall, and burst into sparks that arc over and fall. Nothing schedules the apex: the shell decelerates under gravity and bursts when its vertical velocity crosses zero. The physics runs on elapsed time and scales with the grid, so a shell and its sparks follow the same arc at any frame rate and fill any size.
launchRate: How often a new shell goes up.burstHeight: How high a shell bursts, as a share of the grid's height.gravity: How fast everything rises and falls.sparks: How many sparks each burst throws.sparkLife: How long a spark survives.drag: Air resistance, which flattens the arc.fade: Trail length, which is the Layer's decay rather than the pool's.
Attribution: Damian Schneider, Particle system
FishTank 💫🎶✨👾 · 2D

An aquarium on a light wall: fish of three shapes swim across a dark tank, each in its own color from the active palette, tails beating. The art carries shade roles rather than fixed colors. Each fish fills them from its own place on the palette, so one drawing yields as many colorways as there are fish. Each fish's band is a paler version of its own body color.
fish: How many broad tropical fish swim.slim: How many slender fish swim.school: How many tiny schooling fish swim.speed: Swim rate in body-lengths, the same on any grid.spriteSize: Integer magnification; 0 is auto, scaling with the grid.audioReactive: Each sprite follows its own band, so the scene breathes.
Attribution: After Dark
FixedPoint ⚡️🖌️ · 2D

Shapes placed between pixels rather than on them. A clock hand drawn on whole pixels jumps a pixel at a time and reads as broken. The same hand at a fractional position moves smoothly, because a pixel's brightness carries the fraction its position cannot.
demo: Which figure to draw, orallto cycle them.bpm: How fast the orbits and curves run; the clock keeps its own.fade: How much of the previous frame survives, which leaves the trail.dwell: Seconds each demo holds beforeallmoves to the next.drift: How far the scene wanders from center, in pixels; 0 pins it.zoom: The camera pushes in and settles back; 0 holds it fixed.
Attribution: Sutaburosu
FixedRectangle 💫 · 3D

A solid color filling a positioned box within the grid, with an optional alternating-white checker on the box's pixels. A box at a dialed-in position and extent over a slow motion-trail fade, so it serves as a static fixture, an alignment aid, or a painted region. An extent beyond the grid fills to the edge.
red: The box color, red.green: The box color, green.blue: The box color, blue.white: The box color, white, on an RGBW grid.X position: The box's origin corner on x.Y position: The box's origin corner on y.Z position: The box's origin corner on z.Rectangle width: The box extent along x.Rectangle height: The box extent along y.Rectangle depth: The box extent along z.alternateWhite: Alternate box pixels to white in a checker pattern.
Attribution: limpkin
Fluid 💫🖌️💨 · 3D

Light poured into a simulated medium and carried by it. Every other flow here is a function of position and time. This one is state, so a jet fired now changes where everything downstream goes for seconds afterwards. On a cube every depth slice is its own medium, so the slices differ. Sized for the desktop and the P4; an S3 runs it on a small grid.
jets: How many places light is poured in.force: How hard each jet pushes the medium.swirl: How fast the jets sweep, which is what stirs vortices.viscosity: How much the medium drags on itself; high is syrup, low smoke.persistence: How long dye survives, as a half-life.iterations: Pressure-solve effort, and the cost knob.
Attribution: Jos Stam
FlyingToasters 💫🎶✨👾 · 2D

The classic screensaver on a light wall: chrome toasters with flapping wings and slices of toast drift diagonally across the dark, forever. The wing flap carries a per-toaster offset, so the flock never falls into sync. The sprites carry their own colors (chrome, wing, crust), so the global palette does not apply. Needs a grid at least the toaster's size (12×9).
toasters: How many toasters fly.toast: How many slices of toast fly with them.speed: Drift rate in sprite-widths, the same on any grid.spriteSize: Integer magnification for toasters and toast; 0 is auto.audioReactive: Each sprite follows its own band, so the scene breathes.
Attribution: troyhacks, After Dark
FreqMatrix 🐙🎶 · 1D

A 1D scrolling frequency display: each frame shifts the strip and injects a new pixel at one end. The new pixel's hue comes from the dominant frequency and its brightness from the volume, so pitch becomes color.
speed: Scroll rate, 255 being about 60 rows a second.fx: Brightness from the level, 128 the level itself.lowHz: The frequency at the palette's start.highHz: The frequency at the palette's end.audioSpeed: Let the volume modulate the scroll speed.
Attribution: Andrew Tuline
FreqSaws 💫🎶 · 2D

Audio-reactive sawtooth waves: each column maps to a frequency band whose loudness drives a per-band oscillator speed. Louder bands sweep their sawtooth up the column faster. A band's speed rises instantly to a loud hit and decays slowly once the sound stops. A struck band keeps sawing for a while, and a quiet one winds down.
fade: Background decay per frame, which is the motion trail.increaser: How fast a band's speed ramps up with its magnitude.decreaser: How fast a silent band's speed decays.bpmMax: Ceiling on a band's oscillation speed.invert: Flip alternate columns vertically, for a woven look.keepOn: Keep oscillating even when a band is silent.method: The phase model that places the saw.bands: The bars: the sixteen, the third octaves or the piano's keys.
FseqPlayer 🖼️ · 3D

Plays FSEQ animation files from the filesystem onto this effect's layer, with a playlist and the standard transport controls. FSEQ is the Falcon Player/xLights sequence format: a flat, per-frame byte stream with no pixel semantics of its own. The playlist follows FixtureProfilesModule's EditableListSource shape, the transport DemoReelEffect's cycle/shuffle logic.
play: Starts a stopped transport, or resumes a paused one.pause: Holds the current frame on screen.stop: Stops playback, resets the position and blanks the lights.previous: Jumps to the previous track in the playlist.next: Jumps to the next track in the playlist.shuffle: Picks the next track at random instead of in playlist order.loopMode: At a track's end: stop, repeat it, or repeat the playlist.fpsSource: where the rate comes from: the file's step time, or fps_fps: the manual playback rate; 1000/fps milliseconds per frameplaylist: The tracks to play, in order; each row picks a scanned .fseq file.position: How far into the current track playback is, in frames.rescan: Looks through the filesystem for .fseq files again.
Attribution: FPP
GameOfLife 🌙🧬 · 3D

Conway's cellular automaton generalized to 2D and 3D, with selectable rulesets and a custom B#/S# rule. Cells live, die and are born by counting their live neighbors, on a panel or through a cube. New cells take a neighbor's palette color, and dead ones blur toward the background.
backgroundColorR: The background's red channel, which dead cells fade toward.backgroundColorG: The background's green channel.backgroundColorB: The background's blue channel.ruleset: The birth and survive rule, from Conway's to Maze, or your own.customRuleString: Your own rule: birth digits, a slash, survive digits.GameSpeed (FPS): Generation rate, where 100 is uncapped.startingLifeDensity: Percent of cells alive at the start.mutationChance: Percent chance a newborn gets a random color.wrap: Toroidal edges on a 2D board; a lone glider and a cube run off.disablePause: Skip the 1.5 second settle pause between boards.colorByAge: Age cells from green to red, not a neighbor's palette color.infinite: Respawn a pentomino or glider on stasis instead of resetting.blur: Dead-cell fade strength toward the background color.
Attribution: ewowi, Brandon502, Nature of Code, DougHaber
GEQ 🐙🎶 · 2D

A flat graphic equalizer: the audio bands rise as vertical bars from the bottom. The bands spread across the columns, the third octaves by default or the sixteen or the piano's keys with bands, each rising to its loudness, with optional smoothing, per-bar palette coloring and falling peak markers. A peak dot sits at the highest the bar recently reached and falls back slowly. GEQ3D draws the same data in perspective.
fadeOut: How fast bars fade each frame, which is the motion trail.ripple: Falling-peak marker decay; 0 removes the marker.colorBars: Color each bar from the palette by band instead of by row.smoothBars: Blend neighboring bands for smoother bar heights.bands: The bars: the sixteen, the third octaves or the piano's keys.
Attribution: Andrew Tuline, softhack007
GEQ3D 🌙🎶 · 2D

A 3D-perspective graphic equalizer: audio bands rise as bars with faked depth. Side and top lines run toward a "projector" vanishing point that sweeps left and right, shortened by depth. Bands left of it paint right-to-left and bands right of it left-to-right, with per-face darkening and optional borders. GEQ draws the same data flat.
speed: How fast the projector sweeps, the same position on every device.frontFill: How strongly a bar's front face fills.sideFill: How strongly a bar's side faces fill, which is what shows its depth.horizon: The row the vanishing point (the projector) sits on.depth: How far the side and top lines reach toward the projector.numBands: The bars shown, capped by the source and the grid; fewer are wider.borders: Outline each bar.bands: The bars: the sixteen, the third octaves or the piano's keys.
Attribution: troyhacks
Keyboard 💫🎶 · 2D

A piano keyboard across the lights in two halves: the top shows the selected octaves with each pressed key in its palette color, the bottom the same ivory and ebony picture with one small circle per octave row on every key. The mic's semitone bands are the piano's keys from A0 up; octave and octaves pick the octaves the top half shows (auto lets the detected key pick the first shown key), ivory letters run along the bottom edge, each circle row on the bottom labeled with its octave at the left, and noteNames writes the strongest pitch classes and the key at the top corners. With chord on, every tone of the named chord glows dim in its palette hue across the keys shown, and the played keys stay bright over it. notes on hands shows what two hands could play, at most five keys a hand, each hand within a tenth: the top half follows the left hand's reach and the bottom half the right's, in place of the octaves and the circles, so auto, octave and octaves hide.
ivory: How bright the ivory rests between notes, 0 for dark.notes: All notes heard, without overtones, or what hands could play.chord: Show the chord being played as a hand's shape.auto: The detected key picks the first shown key.octave: The first octave the keyboard shows.octaves: How many octaves the keyboard shows, the rest only as circles.decay: How long a struck note glows, in tens of milliseconds.noteNames: The strongest pitch classes top left, the key top right.
LavaLamp 💫🦅 · 2D

Three slow metaball blobs that rise and merge, colored by the active palette. The blobs' summed field indexes the palette, so the lamp takes its colors and a palette dark at its low end keeps the gaps dark. Its sibling Metaballs runs the same field fast and in HSV.
bpm: How fast the blobs drift.radius: Blob influence radius.intensity: Field gain into the palette, which is what merges the blobs.
Attribution: David Jupijn
Lines 💫 · 3D

Axis-aligned planes sweep in sync, where red, green and blue name the x, y and z axis. A test pattern for verifying a preview's axis orientation. The lines mode sweeps a plane along each axis, and the panel dots mode shows a static panel-mapping aid where each panel lights one more dot than the last.
mode: Sweep the planes, or show the static panel dots.speed: Sweep speed in BPM, inlinesmode.axis: Which plane sweeps: all, x, y or z, inlinesmode.panelW: The panel width the dots walk, inpanel dotsmode.panelH: The panel height the dots walk, inpanel dotsmode.
Lissajous 🐙 · 2D

A Lissajous curve traced across the grid, palette-colored along its length, with a fading trail. Sample points sweep an x and a y oscillator whose frequencies and shared phase drift, so the closed curve continuously morphs and rotates.
xFrequency: The x-axis sweep frequency, which sets the curve's lobe count.fadeRate: How fast the trail fades each frame.speed: How fast the curve's phase advances.
Attribution: Andrew Tuline
Metaballs 💫🦅 · 2D

Blobs orbit and merge smoothly, where the summed field of all balls picks each pixel's color and brightness. Each ball contributes a field that falls off with distance, and the sum picks the color. Where two balls approach, their fields add and the blobs appear to merge. LavaLamp runs the same field slowly through a palette instead.
bpm: How fast the balls orbit.radius: How far each blob's influence reaches.count: How many balls orbit.hue_shift: Rotates the palette index.
Attribution: David Jupijn
MoonLive 📝

An effect written as text on the running device, compiled to native code on the next tick. Pick a script from the library or write your own, and it renders at the speed of a compiled effect. Every control the script declares appears on the card and is editable live without a recompile. The language is MoonLive.
script: Which.mlescript runs, picked from the library and edited here.
Attribution: Yves Bazin
MovingHead 💫🎶🎯 · 3D

Aims a rig of moving heads as one instrument, where formation decides how the heads relate. One head sweeping a sine is a demo, and a rig of them is a show. Pan and tilt sweep at different rates, so a beam traces a path rather than a line, and one control changes the rig's whole character without touching speed or range. A fixture chain is one-dimensional, so lay the rig out as a 1 x N grid.
formation: How the heads move relative to each other.panBpm: Pan sweep rate in BPM.tiltBpm: Tilt sweep rate in BPM, unequal to the pan rate to trace a path.panRange: How much of the fixture's pan travel to use.tiltRange: How much of the fixture's tilt travel to use.panCenter: Where the pan sweep is centered, 128 being the middle.tiltCenter: Where the tilt sweep is centered.audioReactive: The beam widens with the room, each head on its own band.gobo: The gobo wheel as a raw byte, see the fixture's manual.rotate: The gobo or prism spin as a raw byte, see the fixture's manual.goboOnBeat: Roll a new gobo on a drum hit, then hold it a moment.
Nebula 💫🖌️💨🌫️ · 3D

A noise field decides where light is born, a curl flow decides where it goes, and the cloud keeps folding into itself. The emitter is a field rather than a handful of dots, so light enters everywhere at once and the flow shapes a whole cloud instead of drawing trails. The cloud is held at 16 bits and dithered on the way out, which keeps a slow fade smooth.
speed: How fast the medium moves, and with it the whole cloud.scale: The field's cell size: low is broad clouds, high is wisps.contrast: What fraction of the field is bright enough to be born.persistence: How long light survives in the flow, as a half-life.octaves: Detail within the field, and its cost knob.fieldScale: Compute the field at a fraction of the grid and stretch it.fieldRate: Recompute the field every N frames.
Attribution: Stefan Petrick, Robert Bridson
NetworkReceive 🖼️🌙 · 3D

Receives lights over UDP into the layer, from Resolume, Madrix, xLights and LedFx. It listens for Art-Net, E1.31 and DDP at once by default, so whatever a sender speaks works and the status names it; protocol narrows it to one, so several receivers share a device. The received lights land in the layer buffer, so they compose with modifiers and blending.
universe_start: The first universe to map; E1.31 reads 0 as 1.channels_per_universe: Bytes each universe maps to, 510 or 512.mapped_by: Whether the sender or the receiver maps the frame onto the wiring.protocol: All protocols, or one, leaving the rest to another receiver.ddp_port: The UDP port DDP listens on; each receiver in a mix takes its own.
Attribution: Art-Net, E1.31, DDP, troyhacks
Noise ⚡️🌫️ · 3D

A gradient-noise field indexed straight into the palette, the plainest way to turn noise into light. It is the effect every other noise effect is a variation on. The motion control decides what moves, which is the whole character of the effect.
motion: Whether the field drifts across the fixture or morphs in place.scale: The field's spatial frequency: low is broad blobs, high is fine detail.bpm: How fast the field moves.
Attribution: Mark Kriegsman
NoiseMeter 🐙🎵🌫️ · 1D

An audio VU meter rendered as a noise bar, where the volume sets how many rows light from the bottom. Each row is colored by drifting Perlin noise, so a loud moment fills the full width and depth bottom-up with a drifting gradient rather than a flat bar.
fadeRate: How fast the trail decays each frame.width: How strongly the volume drives the bar height.
Attribution: Andrew Tuline, Perlin noise
Pacman 💫🎶✨👾 · 2D

The arcade cast crossing a light wall: Pacman chomps along while the ghosts drift past, wrapping around the edges forever. The characters travel independently, each on its own path. Pacman keeps his yellow, and the ghosts take their colors from the active palette.
pacmen: How many Pacmen cross the wall, up to four.ghosts: How many ghosts cross the wall, the arcade cast being four.speed: Travel rate in sprite widths, the same on any grid.spriteSize: Sprite magnification, scaled with the grid at zero.audioReactive: Each sprite follows its own band, so the scene breathes.
Attribution: Pac-Man
PaintBrush 🌙🎶 · 3D

Audio-reactive brush strokes: lines whose 3D endpoints oscillate on the beat over a fading field. Each stroke is shortened to its band's length, so the moving tip sweeps a curve. The field fades each frame, so the lines leave brush strokes rather than redrawing cleanly, and silence fades the field to black. surge stretches every stroke to its full span on each drum hit.
oscillatorOffset: The base sweep in cycles a minute, multiplied per endpoint.numLines: How many strokes are drawn, one band each.fadeRate: How fast the background decays, higher for shorter strokes.minLength: The span a stroke's endpoints must exceed for it to draw.color_chaos: Random hue per line instead of a per-band gradient.antiAlias: Smooth the strokes on a flat grid.phase_chaos: Random per-frame phase jitter.surge: Stretch every stroke to its span on each drum hit.glide: Sweep the strokes smoothly instead of scattering them on the bass.
Attribution: troyhacks
Particles 💫🦅✨ · 2D

A swarm of drifting particles with persistent fading trails. Points drift, bounce off the walls and leave a fading trail behind them.
count: How many particles drift.speed: The drift velocity.fade: How long the trails persist, higher is longer tails.hue_shift: Rotates every particle's hue.
Attribution: Brandon502, Particle system, David Jupijn
Picture 🖼️ · 2D

The active Picture service's picture on the layer, so a picture of any size shows on a layout of any size. A modifier rotates, mirrors or tiles it as it does any effect, and a cube shows it on every slice.
fit: Keep the aspect with bands or cropped, or stretch it to the grid.sampling: One pixel per light, or the mean of the light's rectangle.edgeDepth: How far in the edge lights look, in percent; 0 is their own share.smoothing: How slowly a light eases to a new color, as a half-life; 0 is off.snapAbove: A channel moving further than this jumps instead of easing.
Plasma 💫🦅 · 3D

Summed sine waves on orthogonal and diagonal axes make large rolling blobs, in 3D on volumetric layouts. Four sines are summed per pixel, or five in a volume, with their average picking the palette index. A larger scale means a smaller per-pixel step, so the blobs grow bigger and calmer.
bpm: How fast the field rolls.scale_x: Blob size along x; larger is bigger and calmer.scale_y: Blob size along y, which the depth axis reuses.hue_shift: Rotates the palette index.
Attribution: FastLED, WLED, David Jupijn
PolarNoise 💫🖌️🌫️🎡 · 3D

A warped noise field addressed by angle and radius, folded into a kaleidoscope. Cost scales with octaves and warp: at warp above 0 and octaves 2 it is roughly 4 noise samples per pixel. On a large wall set octaves to 1 or warp to 0, which degrades to a plain polar noise that still reads well.
bpm: How fast the field drifts.scale: Noise cells across the grid; low is broad, high is fine detail.segments: Kaleidoscope wedges; 1 disables the fold.warp: Domain-warp strength; 0 gives a plain field.octaves: Fbm octaves, and the main cost knob.twist: How much the radius shears the angle, setting the spiral.
Attribution: Stefan Petrick, Iñigo Quilez, Polar coordinates
Pong 💫👾 · 2D

Two paddles rally a ball, the attract mode of the 1972 original where both players are the machine. A perfect tracker would rally forever and never look like a game, so each paddle has a reaction delay and a small aiming error, re-rolled every exchange. player1 and player2 are the paddles as controls, for a fader or an input, and while idle the game plays.
rallyBpm: Ball crossings per minute, the same time on any grid.paddle: Paddle length as a share of the court; short paddles miss more.reflex: How sharply a paddle chases the ball; below full it lags a fast one.spriteBall: Swap the square ball for a sprite, re-picked on every hit.size: Integer magnification of the sprite ball, shown while it is on.player1: The left paddle's height, for a fader or input; idle, the game plays.player2: The right paddle's height, the same way.
Attribution: Pong
Praxis 💫 · 2D

An algorithmic palette pattern driven by two beat oscillators, a macro and a micro mutator, whose frequencies and ranges reshape the hue field over time. Each pixel's hue comes from the two mutators combined with its own position, so the pattern continually stretches, shears and rolls across the grid.
speed: How fast the pattern advances.macroMutatorFreq: The coarse mutator's beat rate.macroMutatorMin: The coarse mutator's range minimum.macroMutatorMax: The coarse mutator's range maximum.microMutatorFreq: The fine mutator's beat rate.microMutatorMin: The fine mutator's range minimum.microMutatorMax: The fine mutator's range maximum.
Attribution: MONSOONO
Pulse 💫🎶 · 3D

Shells expand from a drifting origin, one per beat: a pair of fronts on a strip, a ring on a panel, a sphere in a volume. Sound fires a shell and its pitch colors it, and an idle clock keeps them arriving in a silent room. Compare with BeatRipples, which simulates water on a plane, where this one draws a moving front that carries it into 1D and 3D.
bpm: Pulses a minute while nothing is heard; 0 waits for sound alone.speed: How fast a shell crosses the layout, at any layout size.thickness: The shell's width, as a share of the layout rather than in lights.audioGain: How strongly sound fires a pulse; 0 ignores it.drift: How far the origin wanders from the center; 0 pins it there.trigger: Whether any drum fires a shell, or the kick alone.
RadialSpectrum 💫🎶🖌️🎡 · 3D

The spectrum as ripples: each band owns a sector around the center, mirrored left and right with the bass at top and bottom. Sound is born at the center and travels outward, so the radius is time and a ring's length is that band's recent history. On a cube the ripples are expanding shells. polarTable, polarTable16 and mapping set the polar address and its shape.
speed: How fast sound travels outward.persistence: How far out a ripple stays visible.smooth: Read the meter ballistic rather than the raw bands.beat: A shockwave on each drum hit, in its range's sectors.
Rainbow ⚡️ · 2D

A diagonal animated rainbow: the always-visible default and test effect. A pixel's hue comes from its own x plus y, walked by the clock, so the bands run diagonally.
speed: Animation BPM: one full hue cycle per beat.
Attribution: Mark Kriegsman
Random 💫✨ · 3D

Lights one random light per frame in a random palette color over a fading background: a sparse, palette-tinted sparkle. The buffer dims a little, then one light takes a random palette color, and over many frames that scatters fading sparkles across the whole volume. fade sets the density: less lets them linger and fill, more leaves quick specks.
fade: How fast prior sparkles fade to black.
Raymarch 💫🖌️ · 2D

A lit 3D scene rendered by marching a ray through a distance field, one ray per pixel. Nothing draws a sphere: the scene is a function returning the distance to the nearest surface, and the spheres emerge where each ray stops. Writing a different 3D effect means writing a different scene(), which is the whole API. Cost is per pixel, and steps trades quality against it.
bpm: How fast the scene animates.steps: Ray marching steps: the quality and cost knob.blend: How much the two spheres melt into each other.cameraY: Camera height above the floor.showFloor: Include the ground plane.
Attribution: Iñigo Quilez, John Hart
Rings 💫🦅🖌️🎡 · 2D

Expanding concentric rings from random centers, with additive overlap and calm defaults. Each ring grows continuously and respawns somewhere fresh once it leaves the grid. Several overlap, and where two rings cross their brightness sums. Ripples holds the sine-wave water surface, where this one is the concentric form.
count: How many concentric rings; a few slow ones read as clean circles.speed: Expansion rate.thickness: Ring band width.hue_shift: Rotates every ring's hue.
Attribution: David Jupijn
Ripples 💫🦅 · 3D

Distance from the center sets a per-column wave phase, so the lit surface ripples like water. The effect writes a height across y, so it wants real depth to read as a surface, and a flat layout collapses it to a single row. Its sibling WaterRipple simulates a real wave equation on a plane.
speed: Wave animation rate.interval: Wavefront spacing; low is tight rings, high is wide.
Attribution: David Jupijn
RubiksCube 💫 · 3D

A 3D Rubik's Cube projected onto the volume: it scrambles, then plays its solution back one turn at a time, the six faces in their standard colors. Every voxel takes the color of the nearest outer face, which is what makes a solid read as a cube. The cube is a full six-face model with the real face, row and column rotations, and cubeSize of 2 through 8 gives real cubes where 1 is a single block.
turnsPerSecond: How fast the cube turns.cubeSize: The cube order, its side in cells.randomTurning: Turn endlessly at random instead of scramble-then-solve.usePalette: Color the faces from the palette, not the classic colors.
Attribution: Brandon502
SdfShapes 💫🖌️ · 2D

A circle and a box orbit and melt into each other, drawn as signed distance fields rather than outlines. One distance per pixel yields three looks at once: a smooth fill, an outline, and a glow falling off into the field. The two shapes flow together like mercury rather than merely overlapping.
bpm: Orbit speed.radius: Circle radius, as a fraction of the short side.boxSize: Box half-extent, on the same scale.blend: The melt radius, where 0 unions the shapes hard.outline: Outline width, where 0 fills the shape.glow: Tint the surrounding field by its distance from the shape.
Attribution: Iñigo Quilez
SheetMusic 💫🎶 · 2D

The notes as they are played, written on a grand staff, or as a sequencer's piano roll: time scrolls to the left, each note in its pitch class's color. A note appears at the right edge the moment it starts and rolls left; the more notes come, the faster the sheet rolls to make room. view picks how pitch runs up: - staff: the treble and bass staves of piano music with their clefs, middle C on its ledger line between them, each note a head with its stem, ledger lines beyond the staves, the key signature after the clefs, and an accidental only on a note outside the key. How long a note held writes its value: an eighth with its flag, a quarter, a half with a hollow head, a whole without a stem.
- piano roll: one row a key where the panel is tall enough, octave and octaves picking the keys from A0 up, all 79 the engine measures (A0 to D#7) by default, a faint line on each C. notes starts at no overtones; switching it between all, no overtones and hands shows what each keeps: an attack's flash is a dot, a late note one that starts late, an overtone the same color an octave or a twelfth up.
view: A grand staff, or a piano roll.notes: All notes heard, without overtones, or what hands could play.chord: Show the chord being played as a hand's shape.octave: The piano roll's first octave, counted from A0.octaves: How many octaves the piano roll shows, all 79 keys from 7.noteNames: The strongest pitch classes top left, the key top right.
Sine 💫 · 3D

Red, green and blue each follow a sine along one axis at a third of a turn apart: a glowing, scrolling color box. A flat layout holds its depth term constant, which reads as a red and green wash.
frequency: How many waves cross the box.amplitude: Peak brightness.bpm: How fast the field scrolls.
Soap 🐙💨 · 2D

A soap film's swirl: an image colored by noise, its rows and columns sliding by a drifting noise field, smearing into marbled bands. Each frame slides every row by the noise in its first column and every column by the noise in its first row, a fraction of a light blended between two neighbors, and a light pulled in from past the edge takes the palette color of the noise there. A heavy load at a high resolution: belrik's stress test for a large panel.
speed: How fast the noise field drifts.smoothness: How much old noise the film keeps: high is a slow, smooth swirl.density: How far a row or column slides: high folds the bands tighter.
Attribution: Stepko, Stefan Petrick, blazoncek, Damian Schneider, softhack007
Solid 💫 · 3D

A flat fill with five color modes: a plain RGB(W) color, the palette spread across the lights, one RMS-averaged palette color, or the palette banded along rows or columns. Brightness scales every mode except Palette avg.
red: The flat color's red channel.green: Its green channel.blue: Its blue channel.white: Its white channel, written only where the light carries one.brightness: Scales the color in every mode except Palette avg.colorMode: Which of the five color modes fills the layer.minRGB: The band modes drop palette entries darker than this on every channel.randomColors: The band modes shuffle the surviving entries, reproducibly.
SpaceInvaders 💫🎵👾 · 2D

The 1978 formation marching down the wall: five ranks stepping sideways in the two-frame wiggle, dropping a row and reversing at each wall. The march speeds up as the ranks thin, which is the defining mechanic. The game plays itself in attract mode, and player and fire hand the cannon to a person. The invaders take their body color from the active palette.
marchBpm: March beats per minute, two steps a beat, faster as ranks thin.stepX: How far a step moves the formation sideways, in pixels.dropY: How far a wall turn drops the formation, in pixels.size: Magnification per art pixel: 1 on a matrix, 2 or more on a wall.audioReactive: The formation steps on the kick, and silence holds it still.player: The cannon, for a fader or an input; idle, the game plays it.fire: Fires the cannon, one shot in the air at a time.
Attribution: Space Invaders
Spectrum 💫🎶 · 2D

An audio analyzer with real meter ballistics: bars rise fast enough to catch a transient and fall slowly enough to read. The bars are the third octaves by default, or the sixteen or the piano's keys with bands. A peak dot marks the recent maximum and drifts down. The asymmetry is the whole point: a symmetric follower either misses the hit or flickers.
attack: How fast a bar rises toward a new level.release: How fast a bar falls back.peakDecay: How fast the peak dot drifts down.showPeaks: Draw the held peak above each bar.colorByColumn: Color each bar by its column rather than by height.bands: The bars: the sixteen, the third octaves or the piano's keys.
Attribution: IEC 60268-17, WLED
SphereMove 💫 · 3D

A hollow spherical shell that bounces through the 3D volume, its surface colored from the palette, leaving no trail. The shell sweeps the volume on a Lissajous path, breathing as it goes. Every voxel inside the one-unit shell lights from the palette, jittered so it shimmers.
speed: How fast the sphere moves through the volume.
Spiral 💫🦅🖌️🎡 · 2D

A rotating spiral built from each pixel's angle and distance from the center. Each pixel's hue comes from its angle plus its radius times twist, walked by the clock. So the arms wind outward, and turning twist up tightens them.
bpm: How fast the spiral turns.twist: How tightly the arms wind, as hue per unit radius.hue_shift: Rotates the palette index.
Attribution: David Jupijn
SpriteFountain 💫🎶✨👾 · 2D
![]()
A fountain that throws the project's whole sprite cast, launched from the floor on a sweeping nozzle and falling back under gravity. The cast is fish, Pacman and his ghosts, toasters and toast, the three invaders, and Luna and Momo. Colors come from the active palette, one per sprite, held for its whole flight. Pacman, the toasters, Luna and Momo keep their own. With audioReactive each loud band throws its own sprite, and each drum hit throws one more, the harder the hit the higher: Pacman on the kick, a ghost on the snare, a small fish on the hats.
lift: How hard the nozzle throws, scaled with the grid.pull: Gravity: gentle enough that a sprite stays legible for its whole arc.rate: Sprites launched per beat of the emit clock.emitBpm: Launches per minute, which sets the plume's density.size: Integer magnification per art pixel.audioReactive: A sprite per loud band, and one per drum hit.
StarField 💫🖌️ · 2D

A perspective starfield: stars approach the viewer from a vanishing point, brightening as they near, then respawn at depth. Each star is a 3D point drifting toward the viewer, re-projected onto the panel every advance. A near star splays outward and flies off the edge while a distant one sits near the center. A star passing the camera respawns at the far plane.
speed: How fast the stars approach, where 0 pauses the field.numStars: How many stars are active.blur: The motion-trail fade per frame.usePalette: Color the stars from the palette instead of white.
Attribution: Brandon502, Daniel Shiffman
StarSky 💫 · 3D

Twinkling stars at random light positions, each fading in and out independently over a dark background. A pool of stars, sized from the light count, each taking a random cell and brightness. A small per-frame chance flips a star's direction early, so the field never pulses in sync.
speed: Fade rate: how fast each star brightens and dims.star_fill_ratio: How many stars, as a fraction of the light count.usePalette: Color the stars from the active palette instead of white.
Attribution: Limpkin
Strings 💫🎶 · 2D

A stringed instrument across the lights, laid out as the real one: the body at the left with its bridge, where the strings are plucked, strummed or bowed, the fingerboard with its frets closing in toward the body, and the head at the right naming each open string. Each sounding note lights its string where a finger stops it. instrument picks guitar, bass, violin or cello, each with its own strings, tuning, bridge and body: a sound hole, a pickup, or f-holes with a tailpiece. Guitar and bass get metal frets, violin and cello thinner pseudo-frets. The mic's semitone notes light up where they are played, a struck note flashing over decay. Under notes hands a note lights at one place, one note a string, within the fretting hand's reach. The sound carries no finger and no pick, no palm muting or other technique, and the bow's direction only as a guess from where notes start, so the effect shows none of them; a strum landing within one block has no direction. A plucked or bowed string lights cyan from the bridge to where it is stopped, the part that sounds; a strum flashes across the strings where they are struck; on violin and cello the bow crosses the strings by the bridge, moving while it bows. Under the other levels a note lights every string and fret that can play it.
instrument: Guitar, bass, violin or cello.notes: All notes heard, without overtones, or what hands could play.chord: Show the chord being played as a hand's shape.decay: How long a struck note glows, in tens of milliseconds.noteNames: The strongest pitch classes top left, the key top right.
Tetrix 🐙👾 · 2D

Falling Tetris-style blocks: each column drops a brick that lands on the growing stack, fills the column, then clears and restarts. At speed 0 each brick picks its own fall rate; otherwise all fall at the set speed. Every column runs its own state machine, so they desync into a rain of stacking bricks.
speed: Fall speed, where 0 gives each brick a random speed.width: Brick height, where 0 randomizes it.oneColor: One advancing palette color for every brick, not one each.
Attribution: Andrew Tuline, Aircoookie, blazoncek
Text 💫 · 2D

Renders a multi-line string in a bitmap font, static by default or as a wrapping marquee. Static text is laid out top-left, each newline dropping one font height, and clipped where it runs off the grid. Turn on scroll to march the whole block leftward as a marquee. Text color comes from the active palette.
text: The string to show; each line renders on its own row.scroll: Off is static, on a horizontal marquee.font: Glyph size: 4x6 compact, 6x8 larger.speed: Marquee speed, used whenscrollis on.hue: Palette index for the text color.
Trails 💫🖌️💨🌫️ · 3D

Dots thrown into a moving medium, leaving tails the flow carries and bends. Nothing draws a tail: it is the previous frames' dots, transported along a velocity field and dimmed, which is why the flow's shape is visible in it. On a cube each depth slice gets its own flow.
speed: How fast the medium moves, and with it every tail.dots: How many emitters are throwing light in.scale: The flow field's cell size. Low gives broad sweeps, high gives eddies.persistence: How long a tail survives, as a half-life.breathe: How much the flow's strength rises and falls.
Attribution: 4wheeljive, Stefan Petrick, Jos Stam
Truchet 💫🖌️ · 2D

A maze of interlocking arcs that never repeats, drawn without storing a single tile. Randomly turned tiles join into continuous winding paths across the surface: the pattern looks designed, and nothing designed it. This is the representative 2D shader: no 3D, no rays, no float, and cheap on any target.
bpm: How fast the pattern drifts.scale: Tiles across the short side.thickness: How fat the arcs are.softness: Edge softness, which is the anti-aliasing width.shuffle: Reshuffles which way the tiles face.drift: Slide the pattern rather than holding it still.
Attribution: Sébastien Truchet
Tunnel 💫🖌️🌫️🎡 · 3D

A texture mapped onto the inside of an infinite tube, so the viewer appears to fly down it forever. Nothing is 3D: the angle around the center is one texture coordinate and the reciprocal of the distance is the other, which is perspective for the price of a divide.
bpm: How fast the tunnel flies past.depth: Texture scale along the tunnel; higher is finer rings.twist: Rotation per unit depth, so the tunnel corkscrews.segments: Kaleidoscope the wall, where 1 leaves it plain.octaves: Wall texture detail, and the cost knob.vignette: Darken toward the vanishing point, so it reads as receding.
Attribution: Stefan Petrick, Iñigo Quilez
VectorBalls 💫🖌️ · 2D

A rotating 3D object drawn as shaded spheres, the demoscene classic that named the technique. The smallest complete demonstration of putting 3D on a panel: rotate, project, sort back to front, shade by distance, draw. Without painter's ordering a far ball paints over a near one and the object turns inside out.
bpm: Rotation speed.size: A ball's radius at the object's center, in pixels.spread: How far apart the balls sit.distance: How far the object is from the viewer.fade: Dim the far balls, which is what reads as depth.
Attribution: Demoscene
VuMeters 💫🎶🖌️ · 3D

Sixteen needles, one per band, each with real mass. What makes a VU meter beautiful is the needle: it overshoots a peak, swings back and settles. That is why a mechanical meter reads as alive where a bar graph reads as a readout. The bass needles are heavier than the treble ones, so the low end swings and the high end flickers.
damping: How much the needle overshoots: low swings, high settles.response: How quickly the needle chases the signal at all.peakHold: How long the peak marker stays up.smooth: Drive from the smoothed ballistic rather than the raw band.
Attribution: IEC 60268-17
Waterfall 💫🎶 · 2D

A spectrogram scrolling down the grid: each band a column, the newest moment on top, its color and brightness from the band's magnitude. A held note draws a line down the grid, a sweep a diagonal, a drum hit a sharp edge across it, so the music's shape over the last seconds stays in view. The 31 third octaves when the mic measures them, the sixteen otherwise.
speed: How fast the history flows down, a step every 256 - speed milliseconds.
WaterRipple 💫🧬 · 2D

A propagating wave simulation: drops land, their rings spread outward, reflect off the edges and interfere where they cross. The crossing is what a drawn ripple cannot fake, because two rings meeting have to add and cancel. Distinct from Ripples, which draws clean concentric circles; this behaves like water.
speed: Simulation steps a second, which is how fast the water itself moves.dropRate: How often drops land, where 0 leaves the surface still.damping: How fast waves lose energy, so higher is calmer water.strength: How hard a drop hits.colorByHeight: Color the surface by height rather than by brightness alone.hueBase: Where in the palette the still surface sits.hueSpread: How far a crest and a trough reach from that.
Attribution: Hugo Elias
Wave 💫🌫️ · 2D

An oscilloscope waveform scrolls across the grid with a fading trail. Six selectable shapes: sawtooth, triangle, sine, square, sin3 and noise. Each column plots one point of a moving wave, so the lit points trace a scrolling curve.
bpm: Travel speed, as phase advance per minute.fade: How much trail each frame keeps; 0 clears it at once.waveform: Which waveform shape is drawn.
AudioSpectrum, details¶
Comparing audio engines¶
The sweep colors with sixteen bands and the readouts off draw what WLED-MM's GEQ PPA draws: the same bars and heights, and its sweep's timing through the palette, so two boards side by side differ only in their audio. Point one at the other's WLED audio sync to see both engines through this one effect.
FseqPlayer, details¶
Compressed files need ESP32¶
A zlib-compressed FSEQ (xLights/FPP's default) plays only on ESP32 boards; desktop and Teensy builds show a clean error instead of playing it.
Zstd-compressed files do not play on any target yet.
Export a track uncompressed if it needs to play everywhere.
The layout numbers its lights as the xLights model does¶
A frame holds one value per light in the order xLights numbers the model, which is the order the outputs drive them. Give the layout the same order, on a strip, a panel or a cube, and each light shows what the show sent it.
GameOfLife, details¶
Reading a rule¶
A rule lists the neighbor counts that give birth (B) and let a cell survive (S): Conway's B3/S23 is born at 3, survives at 2 or 3. HighLife B36/S23 breeds replicators, Maze B3/S12345 grows corridors. Custom B/S takes customRuleString as 36/23.
A board that never ends¶
With infinite on, a board that dies out, repeats itself or thins below a twentieth gets a new R-pentomino or glider dropped in, so the show keeps going. Off, it pauses a moment and starts a fresh game, as startingLifeDensity fills it.
Nebula, details¶
Cheaper fields¶
fieldScale and fieldRate make the field cheaper, smaller or less often computed. That costs detail, not smoothness, since the flow still carries the cloud every frame.
PolarNoise, details¶
polarTable¶
Each pixel's angle and radius come from a table at 2 bytes a pixel.
polarTable16¶
The table at full precision, 4 bytes a pixel.
Pong, details¶
Scoring¶
The score shows at the top once the grid is at least 32 by 18, and the first side to 11 starts a new game.
Pulse, details¶
At boot¶
It is the effect a fresh device starts with: one beat is unmistakable, and the drifting origin shows the device running before any sound arrives.
Raymarch, details¶
Where it runs¶
It is compiled only for a chip with a hardware FPU, so a classic ESP32 does not offer it.
SpaceInvaders, details¶
The game¶
Invaders fire down and the cannon fires back. A formation that lands, or a board cleared of invaders, resets the board.