Skip to content

Patternflow v3.9.5

Choose a tag to compare

@engmung engmung released this 06 Sep 09:58
· 86 commits to main since this release

A firmware release, and a real one: every edition gets the same core. The reason to reflash is the web console — it survives a slow Wi-Fi link now, a heavy pattern can no longer take it down, and the panel's own screens stopped fighting each other.

What this release is

The console survives a slow Wi-Fi link. A panel whose link was moving 2–5 KB/s got every console page cut short: the page sender's hard 5-second budget — written for the days when a send ran inside loop() — broke off with the header already promising the full length, and the browser showed a page whose script ends mid-word. The sender now gives up only when the peer stops accepting bytes, and pages go out gzip-compressed (a third of the bytes; the 63 KB audio page is 17.6 KB on the air). The same link exposed a reboot: the vendored WebServer parsed requests through a spin loop, harmless on Core 1, fatal on Core 0 where the task watchdog lives — a request that stalled for five seconds took the board down. It waits instead.

A big pattern can no longer take the console down with it. The loader put a module's data in internal RAM whenever it fit, and internal RAM is what Wi-Fi and every HTTP connection are made of; a community pattern with 46 KB of tables left 2.7 KB, and the panel drew on while nothing answered. Data over 16 KB, or anything that would leave less than 24 KB, goes to PSRAM now. Measured: no change to the frame time, ~19 % on the heaviest setup().

Browsing with K4 shows thumbnails, and a pattern loads on the other core. SELECT used to load every module the knob passed over — seconds of frozen panel per heavy pattern, and the detents you turned meanwhile applied all at once. The knob now moves only the highlight (three detents per pattern); the panel shows each pattern's thumbnail, the frame it last drew; and when the knob rests, the load runs on Core 0 while the frame keeps drawing. The same path serves switches from the console, OSC, MIDI and a show; /api/status says loading while one is on its way.

Panel screens. The UPDATE card no longer tears against the pattern while an image is received (the upload handler moved cores in 3.9.1 and kept drawing from there). The name that appears when a pattern is chosen from the console reads upright. The console home page gains a brightness slider beside the panel switch (GET /api/display?brightness=), and /api/status reports brightness and resetReason — a board that rebooted itself now says so.

Audio edition. The microphone's lane motion no longer goes out as MIDI or OSC knob events (it never was a hand, and in a quiet room it was 26–43 messages a second filling the Wi-Fi transmit queue); MIDI knob output is paced to one message per knob per 50 ms. Specs: REST 1.4, MIDI 1.1, OSC 1.1.

Clock edition (Community shelf): one layout, seven faces, the pattern inside the digits — cut earlier on its own line, and on this core now.

The full list is in CHANGELOG.md.

Installing

From the console: the update banner offers this build, or /update takes the image for your edition. A new board takes the four core images below with the offsets in FLASHING.md, or the browser flasher at https://patternflow.work/flash. Editions: Audio v0.5.4, Performance v0.2.4, Clock v0.1.2 — one click each on https://patternflow.work/editions. Patterns, networks and settings are kept; the thumbnails build themselves the first time you browse.