SoundMural
SoundMural plays the albums you already own — from Plex, Jellyfin, Navidrome or Spotify — and turns the waveform itself into twenty-six real-time visualizations on your Apple TV.
Free to try at launch · $9.99 one-time to unlock every visualization — no subscription
Captured from the app — the same Metal shaders, driven by a real track through the same analysis the Apple TV runs.
Most visualizers are an animation with a volume knob attached. SoundMural measures the audio sixty times a second — bass, mid, treble, transients, the beat, and how hard the track is building — and hands each of those to a different part of the picture.
A Julia set is connected if and only if its constant lies inside the Mandelbrot set. Bass energy pushes that constant toward the boundary, so the mural strains apart under heavy low end, shatters into disconnected dust on a real drop, then reforms. The mathematics supplies the drama; the mapping only decides when to cross the line.
Point it at a Plex, Jellyfin, or Navidrome server, browse by album art, and stream or download. Those three hand the visualizer real PCM samples — an eight-band spectrum, onsets, beat, and phrase tension. Spotify connects for now-playing, artwork, and transport.
Every visualization samples a colour ramp, and that ramp can be lifted from the artwork of whatever is playing. Put on a record with a red sleeve and the room goes red — without any visualization knowing where the palette came from.
Every visualization sits under a shared camera rig: it pans along a Lissajous path that never quite repeats, pushes in on bass, and rolls on the beat. The frame moves, not just the pattern inside it — which is what stops any of them reading as a loop.
Each visualization exposes its own live settings — speed, reactivity, and two parameters particular to it. Lock the ones you like, randomize the rest, or reset. Reduce Motion damps the camera drift and pace without ever muting the music's authority over the picture.
Anything you download plays with no network at all. Connections to your server are TLS-first, nothing you play is uploaded, and the app collects no telemetry and tracks no data. There is no SoundMural account, because there is no SoundMural server.
Rendered in Metal at 1080p60, grouped into five packs, one swipe apart on the remote. Every clip below is captured from the app itself — the same shaders, reacting to a real track through the same analysis an Apple TV runs.
Sets, fields and simulations whose structure reorganizes when the low end moves — not just their brightness.
Connected only while its constant stays inside the Mandelbrot set. Bass walks it to the edge; a real drop scatters the whole figure into dust, and it reforms intact.
Curtains of domain-warped noise, folded over each other. Mid frequencies set how fast the field flows; bass sets how far it warps out of shape.
A live Gray-Scott reaction-diffusion medium. Bass moves the feed/kill pair across a phase boundary, so a sustained low end makes the pattern visibly divide rather than merely glow.
Video feedback — each frame resamples the one before it, scaled and turned, forever. Nothing in it remembers the beat; the image does, carrying an onset inward for seconds.
The Julia set's descendant in three dimensions, raymarched. Bass drives the fold's scale factor, and the transitions between solid shell, strut lattice and exploded cloud are sharp.
Tens of thousands of points advected through a divergence-free curl-noise flow. Because it can't pile up or thin out, it reads as ink in water rather than as drifting dots.
The nodal lines of a vibrating square plate — where sand would settle. A transient pushes the plate's two mode numbers to the next integers, so the symmetry reorganizes instead of teleporting.
A cellular lattice under tension. An onset cracks it open along every seam at once, and the cells settle back into contact between hits.
The calm one, and deliberately so: every coefficient is small and every response slow. It drifts with the music instead of reacting to it — the one to leave on behind a dinner party.
The ones that read as travelling somewhere. Bass is almost always the throttle.
Six depth layers streaming out of the vanishing point. A transient stretches every star into a streak, so the field appears to jump to light speed on the snare.
Flight down an infinite tube. Bass is travel speed and an onset punches the field of view, which is the closest thing a visualizer has to a camera flinch.
A neon wireframe plane running at a glowing horizon under CRT scanlines. The perspective is one divide per pixel — there is no geometry in it at all.
A wireframe cage, not a sticker: the far hemisphere's lines are drawn too. Bass spins it, and each onset launches a tracking arc that takes a second and a half to draw.
Phosphor, sweep lines and falloff — the screens that used to mean "inside the system".
Columns of falling glyphs with a bright head and a decaying tail, drawn from a procedural dot-matrix font — there is no glyph texture anywhere in the app.
A spectrum analyser in polar coordinates. Eight bearings hold the eight band levels, and the sweep is the only thing that repaints them — so the scope decays exactly like the real instrument.
Scrolled, domain-warped noise under a vertical falloff, pushed through a deliberately coarse palette so it bands like a 256-colour demo rather than a modern gradient.
Built out of arcade shapes, and playing themselves. None of them can be won or lost — an unwinnable game makes a much better mural than a losable one.
Four balls against a brick wall, with no paddle and no pit — the floor is a wall, and an emptied wall refills. Bass sets ball speed; the bricks light on the beat.
A parallax city that never stops moving, because a motionless city is a screenshot. Each building lights one window per frequency band, so the skyline is the spectrum.
A four-lane rhythm board, running backwards on purpose: notes are born on the beat and recede. Notes falling toward a strike line would require predicting the beat; receding ones are an honest record of it.
The Frogger layout: two blocks of four lanes with a median between them. Each lane takes its speed from one band, capped so traffic accelerates rather than teleports.
Eight columns by four rows, descending. The gun below lags, overshoots, and sometimes fires while still swinging into place — and nothing ever shoots back.
Effects from the era when the whole point was what you could do with a buffer and a clock. Same maths, forty years of extra pixels.
A sum of sinusoids indexed straight into the palette — the canonical demo effect, and still the one that fills a wall best. Bass shifts the palette; mid speeds the field.
Amiga copper bars: a hot centre falling off to each edge, drifting vertically. The one visualization where a plain bar spectrum earns its keep — one bar per band, and nothing else on screen.
Screen coordinates inverse-transformed by a rotation and a scale into a wrapping procedural tile. The effect every 90s intro opened with, driven now by the bass instead of a sine table.
A real water surface, stepped by the discrete wave equation and displayed by refracting the palette through its own slope. Onsets drop stones in; interference does the rest.
A procedural fBm heightfield flown at altitude, wrapping on both axes so the flight never ends and never repeats visibly. Bass is the throttle; treble raises the ridgelines.
All twenty-six sit under the same camera rig, take their palette from the album art, and honour Reduce Motion.
The nearest thing to SoundMural on the App Store costs $39.99 for a lifetime unlock. This is one payment of $9.99, and there is no second one.
Pricing at launch. SoundMural isn't on the App Store yet — leave an email and you'll get exactly one message when it is.