Skip to content

v1.10.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 02:56
· 320 commits to main since this release

Added

  • Spectral contrast and timbre dynamics — contrast_0…5 / contrast_mean / timbre_flux — two gaps closed: nothing scored the per-band peak-versus-valley "grit" that separates a clean sine from a saw in the same octave, and nothing measured how fast a timbre was moving. Contrast reports that grit across six octave bands; timbre_flux measures timbre-shape change orthogonal to loudness, so a constant-volume filter sweep fires it while a plain volume change does not. A sawtooth reads contrast ≈ 0.92 against a sine's ≈ 0.52.
  • audio.dmfcc.0..12 binding sources — per-coefficient MFCC rates of change, available to any parameter binding. Kept out of the shader uniform to save 52 bytes.
  • Monophonic pitch tracking — pitch / pitch_confidence — the engine could name the key and the pitch classes present but never the actual melodic f0, so no effect could follow a lead line or a bassline's note. A YIN tracker now reports f0 as a 0..1 log-frequency (55 Hz → 0.0, 1760 Hz → 1.0, so an octave is always 0.2) plus a confidence, holding the last pitch through unvoiced gaps so a pitch-keyed visual doesn't snap to the lowest note on every rest. Also broadcast in real Hz as /phosphor/audio/pitch_hz.
  • Harmonic/percussive split — percussive_energy / harmonic_energy / harmonic_ratio — until now every feature saw the full mix: pads polluted kick flux, hi-hats polluted chroma, and routing drums and melody to separate visual channels meant ML stem separation. A causal median-filter split now partitions the spectrum into a sustained-tonal and a broadband-transient channel with zero added latency, giving two musically meaningful buses and a level-invariant ratio between them. A click train reads a ratio of 0.00, a sustained two-tone chord 0.999.
  • Stereo field — pan / stereo_width / stereo_corr — every capture backend used to collapse to mono at the callback, so stereo was destroyed before anything downstream could see it and these three fields sat at 0.0. The capture path now carries native stereo and derives the mono mix from it, so recording and every existing feature see a byte-identical signal for a 2-channel source. Unlocks pan-to-position and width-to-spread mappings. On input devices with more than two channels this now takes the front L/R pair rather than averaging every channel.
  • Shader ABI v3 — one batched bump reserving 13 feature slots so the DSP above could land without further churn: NUM_FEATURES 61 → 74, AudioFeatures 244 → 296 B, ShaderUniforms 352 → 400 B. Existing offsets are untouched and particle uniforms are unchanged, but compiled user shaders need recompiling once for this bump.

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): ffmpeg on PATH for media layers

NDI® is a registered trademark of Vizrt NDI AB.