2026-10-09

JellyDazzle 3.5.8 — now on iPhone and iPad

JellyDazzle 3.5.8 went live on the App Store today — Mac, iPhone and iPad, free. The Mac version has been out for a while. The part I have been working toward is the other two: the same engine, the same 634 routines, running on a phone you can set on the table.

JellyDazzle painting a fireworks accumulator pattern

Your music keeps playing

This was the problem I expected to lose. On a Mac, JellyDazzle taps the system audio output, so it hears whatever app is making the sound. iOS does not allow that — one app cannot listen to another, and it never will.

So on iPhone and iPad it listens through the microphone instead. Put a song on in Spotify or Apple Music, open JellyDazzle, set the phone down. Your music keeps playing at full volume while the app listens to the room and paints to it. It turns out that hearing the song out loud, the way everyone else in the room hears it, is not a compromise at all.

Lite on battery, Full when charging

A visualiser that flattens your battery is a visualiser you open once. On battery, in Low Power Mode, or when the device is warm, JellyDazzle draws a softer picture at 30 frames a second. Plug it in and it becomes the full thing — 60 frames, every layer. It switches on its own, mid-show, without asking you anything.

Buttons, finally

For years the only way to drive this was the keyboard, which is useless advice on a phone. There are now C, S and ? buttons in the corner — colours, shapes, help — plus X to quit on the Mac. They brighten when you touch the screen and fade away while you watch. A tap gives new colours, two fingers new shapes, press and hold tells you what is playing.

The crash that taught me something

The first build I sent to TestFlight died before it drew a single frame.

iOS 27 changed how an app is allowed to start. The old path — the app creates its own window and goes — is gone, replaced by a scene lifecycle the system drives. My engine came up, asked for a window the way it always had, and iOS shut it down for asking incorrectly. The crash log pointed at the launch sequence, which is the kindest thing a crash log can do.

The fix was adopting the new lifecycle properly rather than working around it: let the system hand me the scene, and build the window into what it gives me. Build 7 ran on the device on the first try. I have shipped worse days.

I mention it because the honest version of "it runs on iPhone now" includes the part where it did not.

What did not change

The engine. It is the same hand-written ARM64 assembly core with the same library of C pattern plug-ins — 634 routines, 180 colour schemes, layered by brightness and timed at random so nothing repeats. The phone is not running a cut-down port. It is running the thing.

The source is still on GitHub under the MIT licence.

Where to get it

Put something on before you open it. In silence it still runs, on internal clocks, but you are seeing about half of what it does.