v1.11.0
Added
- Lattice — 3D cellular automata as selectable volumetric effects (flagship) — a voxel grid of cells evolving by 3D birth/survival rules into self-organising structures: growing crystals, pulsing organisms, expanding shells, collapsing caverns. Unlike the 2D fields, the CA state is the 3D volume. Ships as eight browsable effects — Clouds, Crystal, Pyroclastic, Architecture, Coral, Builder, 445 and Pulse — at a selectable 32³–256³ resolution, with a contextual Lattice (3D CA) panel for live rule, grid, seeding and look controls.
- Lattice presets sculpted so they stop collapsing into a featureless ball — density is blended into the volume over time so fast rules fade rather than strobe, growth runs at a rate per second with a per-preset silence floor, an optional spherical domain kills the cube silhouette, and cell age shifts hue. The ball itself is fixed by a per-cell lifetime (new Lifetime slider) that keeps the structure turning over; four presets whose rules a lifetime cannot sculpt were replaced with ones it can — Amoeba → Builder, Architecture → Chunky, Crystal → Brain, Coral → Shells.
- Volumetric Mode — particle density 3D ray marching — a global toggle that renders any particle effect as a continuous fog or nebula instead of discrete dots: the app's first true 3D-volumetric look, and the prerequisite for Lattice. Dense regions cast shadows, so the cloud shows real 3D form rather than the flat uniform glow self-emission alone produces. Controlled from a Volumetric (R3) panel section and over OSC;
beat_phasepulses density,kickbursts emission,rmsdrives absorption. - Polycephalum — 12-species slime-mold warfare keyed to the chroma vector — twelve competing physarum organisms, one per pitch class, flood the screen with veined pulsing networks and fight for territory. Loud pitch classes move faster and deposit more, semitone neighbours repel while fourths and fifths cooperate, so a key change makes one colour visibly conquer another's ground. The first effect to consume the full 12-element chroma vector. Verified at ~59 FPS with 500K agents.
UI
- One shared param-row system across every panel — the side panels had grown five incompatible "label + control" idioms, with labels riding inside sliders at varying offsets and a label column so narrow that Settings resorted to two-line labels, so nothing aligned column to column and the Audio tuning sections read as a zig-zag. Every row now shares one
label | control | valuegrammar. Also replaces three byte-indexed name truncations that would panic on a multibyte name at the cut boundary. - Effects browser — search, type filter, favorites, readable names — with 38 effects in a fixed 3-column grid and a 10-character cut, the browser was a wall of "Lattice A… / Lattice C…" clones. Adds type-ahead search (never auto-focused, so live typing is never hijacked mid-set), a clickable type filter, and a pinnable ★ favorites row persisted across sessions. Long names drop the grid to 2 columns and get a 22-character cut, so "Lattice Architecture" fits whole.
- Lattice panel grouped — ~28 always-visible rows became 8 rows plus four collapsible groups, with Rule, Grid size, Reseed and Randomise — the things you actually reach for live — kept on top.
- Volumetric and Post-Processing panels extracted and aligned — the last two right-panel sections without their own file, now grouped and on the shared row system.
- One Triggers table for MIDI and OSC — the ten mappable actions were listed twice, once inside each protocol's subsection, in two scrolls of near-identical UI and two places to look when checking what a controller button does. They are now a single table (action, MIDI badge, OSC badge) in its own collapsed Triggers section.
- Binding matrix — cards get names and a no-signal warning — a collapsed card showed only the enable dot, transform pills and meters, so an unnamed binding read as just "~ Smooth". Cards now lead with the binding's name and flag an enabled binding whose source isn't in the live snapshot — an unplugged controller or an un-substituted template previously just silently did nothing. Also fixes a per-frame memory leak, an idle expanded card rewriting the bindings file every second, and a duplicate-id collision where deleting one card removed two.
- Binding matrix — cables stay in their bay, popups stop closing the overlay — cables to rows scrolled out of view drew straight across the header, footer and neighbouring columns; they are now clipped, with off-screen endpoints drawn as faded stubs. Selecting an item from a picker that overhangs the panel edge no longer dismisses the entire overlay, and Escape now closes an open popup before it closes the matrix.
- Binding matrix — live-workflow polish — applying a template now switches to the tab where its bindings actually land (they were created in the other tab, reading as "nothing happened"); the MIDI Faders template substitutes a live device name instead of producing eight permanently-dead wildcard bindings; cards group by target instead of creation order; a Duplicate button clones a binding under a fresh id, the fastest way to build "same source, three targets" stacks; and hovering a card brightens its cables and dims the rest.
Documentation
AUDIO-FEATURES.md— plain-English reference for all 74 audio features — what each feature means musically rather than how it is computed, written for a VJ or musician deciding what to hook a slider to and anchored to named sounds ("a held synth pad sits near 0, a snare or white-noise sweep sits near 1"). Every entry carries a source: a paper or standard, a librosa descriptor, an explicit "no published algorithm" label so a heuristic is never dressed up as research, or a port note. All 41 links were verified to resolve, with archived snapshots where a canonical URL has rotted.
Fixed
- Stale audio documentation corrected —
TUTORIALS.mdstill described the pitch and spectral-contrast features as reserved and reading0.0; both have been live since v1.10.0. BothTUTORIALS.mdandTECHNICAL.mdalso described adaptive normalization as "running min/max", which is the pre-A2 normalizer rather than the shipped one.
Downloads
| Platform | File | Notes |
|---|---|---|
| macOS | .dmg |
Universal binary (Apple Silicon + Intel) |
| Linux x86_64 | .tar.gz |
glibc 2.35+ (Ubuntu 22.04+, Debian 12+) |
| Windows x64 | .zip |
Windows 10+ |
Getting started
macOS: Open the DMG, drag Fosfora.app to Applications (or run directly). Signed and notarized.
Linux / Windows: Extract, run fosfora from the extracted directory. The assets/ folder must be next to the binary.
Requirements
- GPU: Vulkan (Linux/Windows) or Metal (macOS)
- Audio: Built-in mic or line-in for audio-reactive visuals
- NDI® (optional): NDI® SDK runtime for network video output
- Video playback (optional):
ffmpegon PATH for media layers
NDI® is a registered trademark of Vizrt NDI AB.