v1.30.0

kevinraymond/fosforav1.30.0Jul 29, 2026by github-actions[bot]

AI Summary

Overhauls the binding matrix interface and templates to improve usability and correctness when managing audio-to-effect bindings.

Key Highlights

  • New binding templates: 'Audio Reactive' (percussive hits) and 'Ambient' (pads/drones).
  • Bindings can now be created by clicking source and target columns.
  • Filters added to binding matrix columns to reduce scrolling.
  • Bindings now move with their layers when layers are reordered or deleted.

New Features

  • New binding templates
  • Click-to-bind interface
  • Layer binding persistence

Full Release Notes


### Changed
- **The binding templates were rebuilt around what actually reads on screen.** Each one now
  drives four axes — impact, colour, motion and size — and picks its params by meaning
  rather than by position, so no template sweeps a mode selector or strobes the trail
  buffer. **Audio Reactive** follows percussive hits instead of the kick band, which fired
  all the way through sustained bass. New **Ambient** template for pads and drones, where
  the beat-driven ones sit still. Picking a second template now replaces the first on any
  parameter they share instead of leaving both fighting for it.
- **You can now make a binding by clicking one.** Click a source in the binding matrix, then
  a target — or the other way round — and the binding is created and opened. Both columns
  gained a filter box, so finding one of ~330 sources or ~150 targets no longer means
  scrolling, and the target list starts collapsed.

### Fixed
- **Reordering or deleting a layer left its bindings behind on the old slot**, so an
  audio source that drove one effect silently started driving whichever effect moved into
  its place. Deleting was worse: every binding above the removed layer shifted down onto
  its neighbour. Bindings now move with their layer, and a deleted layer takes its own
  with it.
- **The binding matrix now names the layer and effect it is editing**, in the header and on
  every parameter group, and flags a binding whose target no longer exists — changing a
  layer's effect used to leave bindings that looked fine and did nothing.
- **"Collapse all" in the binding matrix skipped the per-layer parameter groups** — the
  longest ones on screen — whenever more than one layer was loaded.
- Switching layers while a particle source file dialog was open dropped the image, video or
  model onto whichever layer you had moved to, not the one that asked for it. The same
  applied to loading a morph target.
- Recalling a preset left a hand-loaded webcam, video or model running on any layer the
  preset didn't name a source for. A preset now returns those layers to the source their
  effect declares.

## 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](https://ndi.video) for network video output
- **Video playback** (optional): `ffmpeg` on PATH for media layers

---
NDI® is a registered trademark of Vizrt NDI AB.