Skip to content

Procedural Visualizer Tool 19.0.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Sep 23:25
· 50 commits to main since this release

Procedural Visualizer Tool 19.0.0 is the current stable release.

Version 19.0.0 adds a maintained PVT onset-detection module with Hybrid, Spectral flux, Neighbor flux, and High-frequency flux choices in project and active-layer Music processing. The choice applies to named frequency ranges and is saved with the analysis. Changes commit only after successful reanalysis; old projects keep Hybrid and their existing cached beat tables. Tracker callbacks now follow actual FFT hops independently of input buffer size, startup timestamp underflow is prevented, and stream reset clears partial analysis history. The retained tempo/beat observer remains attributed to its original MIT-licensed source. Live capture continues using its separate causal analyzer.

The new public audio setting changes C++ structure layouts, so the library ABI and runtime package advance to SONAME 19. Library consumers must rebuild. Existing raw project layout 1 remains readable; layout 2 appends the five detector values, and missing text settings default to Hybrid.

This release fixes the severe editor and Live preview slowdown introduced in 18.0.0. Reducing a project with one-pixel blocks no longer triggers full-resolution supersampling of every layer and effect. On the supplied five-layer Wood project, GPU+CPU Live delivery on Apple M2 Max improved from 4.4 to 51.1 FPS at 320×320 and from 4.4 to 43.8 FPS at 360×360. Performance depends on the project and preview size. Explicitly authored subpixel blocks retain their existing behavior, and full-resolution output remains pixel-identical.

It also includes the previously verified playback completion-race, raw project loading, unknown-field preservation, fractional rendering, supersampled memory-accounting, and numeric-editor repairs. Regression coverage includes complete preview pixels, frame- and phase-based playback, fractional blocks, BLACKOUT, and both preview scalers.

Version 18.0.0 adds fractional project block sizes, deterministic mixed-size grids with blended seams or alpha gaps, project-clock synchronization, and a named block-size LFO. Values below one supersample; zero selects BLACKOUT. Decimal editors also accept fractions and mixed numbers, while named Automatic values reveal their resolved number when focused.

Binary project storage is now the speed-oriented default: numeric data uses frozen native-width layouts with packed integer flags, and strings stay in separate ordered newline records. Full, Partial, and Disabled history modes expose manual revisions, retention, pinning, and deletion; human-readable projects can use one-hop revision deltas. The 2,000-item persistence probe measured median binary save/load of 6.994/6.418 ms versus 25.075/69.108 ms for text, with 835,154 versus 4,377,608 stored bytes. These are workload-specific measurements. Public structure layouts change, advancing the library ABI to SONAME 18.

Add Layer now offers blank, template, current-layer, imported-project, and constrained-random sources with placement controls and automatic names. GPU + CPU remains cooperative work striping. CPU-only is selectable; when acceleration is unavailable, startup offers a one-click switch and can recommend a measured starting resolution for a new project. Existing projects retain their resolution. Fractional grid, wave-sampling, and seam parity are covered on CPU, Metal, and OpenGL; Windows human-readable projects use an atomically replaceable text current pointer without requiring symlink privileges. French and German catalogs are complete, and the updated example projects are included in the repository.

Version 17.11.0 makes project Save/Open, image sequences, and native movie export substantially lighter. Save avoids copying unrelated runtime history and stale committed project data, split music-analysis validation no longer duplicates full feature and tempo tables, and one validated asset lease is shared across every frame in a sequence. In the audit workloads, unchanged-Save allocation requests fell by 98.8%, a 182 MB split analysis loaded 60.1% faster, and a 24-frame sequence completed 20.6% faster with exact serialized bytes and PNG output preserved.

Automatic Metal admission now scales from detected CPU capacity rather than a fixed two-frame queue, reaching 2.14 times the former default throughput on the audited Apple M2 Max while retaining the same complete float hash. Application Settings, the CLI, renderer diagnostics, and the public API expose ten machine-local limits covering decoded images, OBJ input and expanded meshes, aggregate expanded project data, and retained caches. Zero selects RAM-derived Automatic defaults; conservative compatibility fallbacks apply when RAM detection is unavailable. These ceilings are not eager reservations and are not stored in portable projects. Project/setup/layer formats, rendering precision, and SONAME 17 remain unchanged.

Version 17.10.0 makes validation of large music-driven projects substantially lighter while preserving every authored setting and rendered float bit. Saved layer clocks are checked directly instead of copying and recursively validating an entire render configuration, and Numeric LFO destination checks copy only the addressed wave, swing, effect, or post effect. Disabled saved clocks remain validated, direct API edits take effect immediately, and stable-ID references retain their reorder and deletion behavior.

In the audit workload—four 64×64 layers, eight enabled LFOs per layer, project and saved layer music clocks, and four 60,000-sample analysis streams—single-configuration validation requested 4.7 KB instead of 96.5 MB, and four-layer validation requested 86.8 MB instead of 482.3 MB. Animated CPU frames improved from 44.19 ms to 31.18 ms in the repeated comparison, with the exact ten-frame float hash unchanged. These are workload-specific measurements; project materialization still copies analysis data and remains tracked for a later phase. Project formats, public configuration layouts, rendering arithmetic, backend tolerances, and SONAME 17 are unchanged.

Version 17.9.0 completes a three-iteration renderer performance, memory, and correctness audit. CPU and OpenGL mesh coverage stores one Boolean per bit, reducing each coverage mask by 87.5%. Opaque analytic surfaces skip provably hidden rear shading, and arbitrary CPU OBJ meshes reject offscreen geometry plus triangles whose complete pixel bounds are already covered by nearer depth. The depth optimization does not assume authored winding and is disabled when transparency needs depth peeling. A 10,000-hidden-face audit workload improved from 15.37 ms to 4.16 ms with identical float pixels; all nine animated OBJ reference hashes remained unchanged.

Shared decoded images and immutable OBJ/displacement geometry are counted once outside per-layer worker storage. Render-invocation leases preserve the exact counted handles across bounded-cache eviction and release them when rendering finishes. Disabled layers, disabled groups, zero-opacity layers, and unused assets release render-cache ownership while retaining saved settings and undo. The OBJ cache now holds up to 16 recent meshes within 512 MiB; three alternating meshes improved from 60 parses in 370 ms to three parses in about 19 ms. Projected vertex storage is 27% smaller on the audited host.

Correctness fixes restore CPU/OpenGL near-plane coverage, retain representable almost-opaque rear surfaces, prevent extreme-projection overflow and shared-edge cracks, align OpenGL interpolation with CPU pixel centers, close cache publication and cleanup gaps, and make clipped-triangle results stable across winding and contracted arithmetic. Camera-inside and two-sided surfaces remain supported. Project formats, public configuration layouts, rendering precision, sampling resolution, and SONAME 17 are unchanged.

Version 17.8.0 adds Palette Remix under Starting Colors. Artists can rotate hues, adjust saturation and linear-light exposure, reverse or rotate color order, and use Surprise me for editable variations while viewing the rendered artwork. Show original provides an A/B comparison and Reset restores the opening palette exactly. Temporary previews never modify the authored project; Cancel discards the experiment and Apply creates one undoable edit, including when the original comparison is visible.

Alpha, entry names, and sRGB or linear/HDR encodings stay attached to their colors. sRGB results remain display-bounded, signed HDR values retain their extended range within renderer limits, and large palettes bound swatch work to the display width. Existing palette library and interchange tools can save an applied remix. French and German interfaces are complete. Project formats, renderer output, public ABI, and SONAME 17 are unchanged.

Version 17.7.0 adds a repeatable Kaleidoscope layer effect for imported images, generated textures, and prior effect output. Artists can create 1–256 mirrored sectors and control source zoom, signed spiral twist, sector rotation, center, feathered local area, mix, and seamless positive or negative animation cycles. Texture placement wraps the pattern onto a surface, while Surface placement folds the rendered object and its silhouette. Independent instances expose their controls to Numeric LFOs and Live mappings. CPU, native Metal, and portable OpenGL share linear-float, straight-alpha rendering. Setup/layer formats advance to 26/23; existing projects retain their appearance and the additive effect type keeps SONAME 17.

Live Controls also gains Scene Morph: capture two saved looks as endpoints, scrub a playable A/B crossfader, jump to either endpoint, and capture the current blend as a new undoable scene. Continuous settings interpolate, discrete modes switch at the midpoint, stable IDs handle duplicate names, and missing settings are reported and skipped. Scene selection and fader state remain temporary performance controls. French and German interfaces cover both features.

Version 17.6.1 fixes silently ignored Numeric LFO edits when browsing destination groups. The current destination and its numeric limits remain available while filtering, including LFO-to-LFO destinations. Regression coverage exercises value edits, retargeting, row switching, cancellation, save/reload, and undo/redo. A tooltip explains the behavior in English, French, and German. This patch also includes the Qt 6.10 translation-extraction fix for Debian builds. Renderer code, project formats, public ABI, and SONAME 17 are unchanged.

Version 17.6.0 preserves PNG height maps up to 8,192 by 8,192 pixels within the 512 MiB decoded-image limit by caching computed luminance directly. Oversized-image errors explain the dimensions, memory requirement, and remedy. Project-load notices distinguish retained future settings from repaired invalid data, identify repaired fields, and offer selectable details in the editor, with the same distinction in command-line reports.

Version 17.5.0 improves animated Metal throughput while preserving authored output. Repeated antialias passes stay in one serial compute encoder, fully opaque and transparent neighborhoods use exact reduced-arithmetic paths, and bounded workers keep independent Metal layers moving through configured in-flight slots while compositing remains in authored order. On the unchanged five-layer Wood project with 1,024 antialias passes per frame, Apple M2 Max render plus display conversion improved from 16.0 to 22.5 FPS at 812×406 and from 17.4 to 26.6 FPS at 720×360; complete float-frame hashes matched. Actual Qt Live delivery improved from 15.4 to 19.5 FPS at 812×406.

Live audio now consumes the device's actual callback blocks instead of accumulating a requested fixed-size intermediary buffer. Input-buffer requests are bounded to 8,192 frames, stale larger machine-local values are clamped, and typed values restart capture only after Enter or focus loss. Project formats, public structure layout, renderer ABI, and SONAME 17 remain unchanged.

Version 17.4.0 ships complete French and German interfaces alongside English. Both catalogs received a full AI linguistic review for fluency and terminology against the English sources, covering the editor, Live controls, audio processing, LFOs, export, help text, and native permission prompts. Choose Settings > Application Settings > General > Language and restart, or follow the system language. Application and standard Qt translations are embedded in all desktop packages. Saved-project rename prompts now translate as complete sentences. Project formats, rendering, and SONAME 17 remain unchanged.

Version 17.3.1 unifies alpha admission across the renderer, project compositor, and editor. Numeric LFO ranges and controllers, transformed surfaces and exterior policies, motion, source alpha, effects, erasers, and ordered finishing stages use shared reachability rules. Neutral Twirl and Edge Detect no longer require alpha when their output is opaque; Black/White effect borders that create eraser coverage are correctly accounted for, including a later alpha-zero route that clears it.

Effect parameter domains are shared by the editor, Live mappings/scenes, and render-time Numeric LFOs. Animated values retain valid ranges and whole-number counts, and type changes repair dependent values such as Gaussian blur samples. The motion.scale destination works alongside the persisted motion.scale_pulse spelling, Numeric LFO edits enable alpha when needed, and Live display frames preserve transparency without changing saved export choices. Public structure layout, project formats, and SONAME 17 remain unchanged.

Version 17.2.0 adds an Arrange phases workflow for any selection of numeric LFOs: evenly spaced cycles, signed phase steps, synchronization, and repeatable seeded random phases. A current/proposed preview, both cancellation levels, stable identities, persistence, and one-step undo/redo keep coordinated animation edits predictable.

Editor and LIVE display conversion replaces per-channel power functions with exact sRGB thresholds. On Apple M2 Max, median 1080p conversion fell from 30.36 ms to 7.79 ms and 4K from 119.91 ms to 29.69 ms, with identical display bytes. Portable OpenGL shades generated RGB once per authored block, retains per-pixel alpha, and avoids CPU row-flips after generated, Water, and analytic passes. A 1024-square, 24-wave, block-8 frame improved from 7.34 ms to 3.87 ms on the same Mac OpenGL driver with identical float output hashes; these are workload-specific measurements, not NVIDIA/AMD hardware results.

Performance settings adds Copy renderer report and the CLI adds --renderer-info. Reports expose the actual device, OpenGL vendor/version/texture limit, backend availability, CPU architecture, and recognized software renderers. Windows executables request the high-performance NVIDIA/AMD GPU and the Linux launcher advertises the corresponding preference; user/OS/driver policy remains authoritative. An explicit CMake option enables Qt Gui-only CLI/library acceleration without the editor or Widgets, and CPU CLI rendering no longer initializes graphics. Linux CI now requires its Mesa OpenGL parity checks to execute. Project formats, the public renderer ABI, and SONAME 17 remain unchanged. No CUDA or HIP backend is claimed.

Version 17.1.0 refines the artist-facing desktop workflow without changing existing projects. Application Settings uses a wider screen-clamped layout with compact sections and per-tab scrolling, the LFO toolbar action has a palette-aware waveform icon, and effect placement uses effect-specific labels and explanations. Choosing an after-surface placement on an unmapped layer can enable a neutral default Plane in one undoable step or retain the flat layer while preserving the placement choice.

Live audio calibration adds linked percentage and decibel input trim, fine Response entry, a pre-gate dBFS peak meter, an explicit signal-path display, and gate hysteresis/attack/hold/release controls with compatibility defaults. Adaptive normalization is now independent of capture callback size, and OBJ regression coverage guarantees that named objects, groups, and disconnected parts remain one normalized imported surface. CPU + GPU scheduling remains GPU-primary with bounded CPU work for independent unsupported layers. Project formats, the public renderer ABI, and SONAME 17 are unchanged.

Version 17.0.0 lets one LFO modulate every runtime-editable setting of another LFO, including enable state, waveform, range, cycles, phase, pulse shape, delay, and skipped cycles. Stable layer-local IDs preserve links across edits and persistence; iterative dependency resolution is list-order independent, while self-links, missing targets, duplicate identities, and cycles are rejected. The LFO editor adds destination categories and case-insensitive type-to-search completion instead of one unbroken destination list.

Setup/layer formats advance to 25/22 with deterministic ID migration for older oscillators. The public ParameterLfo layout grows, so the product ABI and SONAME advance together to 17 and installed-library clients must rebuild.

Version 16.0.0 expands numeric animation with Square and rising/falling Sawtooth waves. LFOs can reserve a percentage of each active slot as a post-wave delay and skip any number of whole oscillator slots before running again; every rest retains the authored numeric fallback, and active-wave counts remain seamless across the project loop. Project, layer, music-anchor, and Live microphone clocks add Ease in, Ease out, and quintic Smootherstep curves alongside Hold, Linear, and Smoothstep.

Setup/layer formats advance to 24/21 and render-output/split formats to 9/7 with neutral migration for older LFOs. The public ParameterLfo layout grows, so the product ABI and SONAME advance together to 16 and installed-library clients must rebuild.

Version 15.1.0 makes live audio shaping easier to discover and read. The audio processor gains six built-in EQ presets, new projects start with protective 20 Hz high-pass and 20 kHz low-pass filters enabled, and the dedicated Live Controls action is named explicitly. Live input now includes a post-processing ten-band spectrum, an optional noise gate with machine-local settings, more analysis sources for control mappings, and a starter mapping that connects bass, onset, and treble to visible project changes.

Audio filtering treats bands above the source Nyquist frequency as exact no-ops, preserving deterministic behavior for low-rate sources. Existing projects retain their authored processing choices, setup persistence advances to format 23, and render-output formats advance to 8 (split format 6) with backwards migration. The public ABI and SONAME remain 15.

Version 12.0.0 makes post-processing order explicit and layer-local. Artists can reorder all eight finishing stages and route RGBA channels simultaneously from Red, Green, Blue, Alpha, Zero, or One. The routing mix is a numeric LFO target, while routing enable and source choices are Live targets. CPU and Metal render the authored order with matching HDR RGB and clamped-alpha semantics. Setup format 19 and layer format 17 migrate older projects to the historical order with a disabled identity map.

Application Settings now expresses the machine-local render-memory limit as Automatic, MiB, GiB, or a percentage of detected physical memory, while preserving legacy byte-equivalent limits. Still, sequence, and native-video export can suspend editor preview work and restore exactly the playback state that existed before export. New Project returns to the Project page and selects the project name for immediate naming.

PostProcessConfig changes by value, so the product ABI and SONAME advance together to 12 and installed-library clients must rebuild.

Version 11.0.2 makes the release gate deterministic. Verified no-change Save smoke coverage now checks that the project stays clean and no bundle version is appended or selected; it no longer requires the status bar to retain “No changes” when concurrent preview work legitimately reports “Rendering preview…”. Windows GUI smoke failures are mirrored to standard error so native CTest and packaged checks keep actionable diagnostics. Product behavior, public ABI/SONAME 11, setup format 18, and layer format 16 are unchanged.

Version 11.0.1 made GUI smoke validation wait for the queued background Save completion handler before inspecting dirty state and the title. Its tag did not publish because the test still coupled Save success to transient status text; version 11.0.2 supersedes that release-repair attempt.

Version 11.0.0 adds File > Show Project in File Browser and places the absolute saved bundle or imported setup path before the project name and version in the window title. Folder bundles open directly; file bundles are revealed and selected through Finder, Explorer, or the Linux FileManager1 service with a containing-folder fallback.

Post Effects gains independent red, green, and blue inversion stages with individual mixes. The existing all-RGB stage runs first, so combining it with a channel stage intentionally supports double inversion. CPU, Metal, GUI, CLI, numeric LFO/Live targets, persistence, and migration share the same semantics. Setup format 18 and layer format 16 give older projects neutral disabled defaults. The public PostProcessConfig layout changes, so the product ABI and SONAME advance together to 11 and installed-library clients must rebuild.

Version 10.0.3 fixes two macOS regressions. Native HEVC-with-alpha export no longer passes the redundant PreserveAlphaChannel property rejected by macOS 27; straight-alpha mode, alpha quality, data rate, hardware policy, and atomic chunk output remain intact. Full-screen Live Preview Output now exits Qt's native full-screen desktop before hiding its stage window, so a secondary display returns to its normal desktop instead of remaining on a black output Space. Native HEVC-alpha and Cocoa full-screen teardown regressions cover both fixes. The public ABI, SONAME 10, and persisted formats are unchanged.

Version 10.0.0 makes CPU + GPU rendering GPU-primary. Every Metal-supported project layer remains on Metal, while bounded host-adaptive CPU workers handle only genuinely unsupported independent work. CPU mode uses the same scalable layer pool, authored-order compositing, cooperative cancellation, worker-exception propagation, and a shared host-memory admission gate. Sequence and native-video exports partition automatic CPU and memory capacity across the outer frame workers actually admitted, avoiding nested thread-pool oversubscription without silently single-threading a serialized frame.

On the supplied six-layer 512x512 project, the same 12-frame CLI workload with one outer worker, project loading, and PNG encoding improved from 6.18 seconds to 3.17 seconds in CPU + GPU mode; strict GPU remained effectively flat at 3.23 to 3.25 seconds. CPU improved from 6.73 to 4.34 seconds, and hybrid output was byte-identical to strict GPU. With the project already loaded, automatic CPU layer scheduling reached 6.682 fps versus 1.434 fps with one layer worker.

Application Settings gains a machine-local Performance tab that defaults to Automatic GPU-first and retains explicit CPU, CPU + GPU, and strict GPU choices. Separate 0=Auto controls cover preview/LIVE/still CPU workers, concurrent export frames, CPU layer workers per export frame, Metal frames in flight, and aggregate render memory. Metal admission is disabled and explained on OpenGL-only or CPU-only systems. The UI reports the existing native linear RGBA float32 working precision instead of offering simulated low-bit modes that would add quantization work and reduce quality; authored output bit depth remains project-local.

Realtime ownership is now explicit: starting Performance LIVE or Live Preview Output cancels competing editor preview work, stopping GO LIVE restores export and preview state, editor playback cannot start under performance LIVE, stage shutdown clears stale monitor/device state, and full-screen dismissal returns cleanly to a windowed restart on the selected display. Project identity and navigation move to the Project page, while the saved-layout-compatible dock is visibly renamed Layers & Groups and contains only layer/group work.

FrameRenderOptions gains CPU-worker and host-memory fields. The product major and installed shared-library ABI therefore advance together to 10.0.0/SONAME 10; installed-library clients must rebuild. Project, setup, layer, and bundle formats are unchanged.

Version 9.0.0 adds layer-local numeric LFOs for the editor, library, preview, and export pipeline. Artists can drive supported numeric render values between authored minimum and maximum values with Sine, Triangle, Smooth pulse, or Bounce waveforms, plus whole cycles per loop, phase, and pulse shape. Stable wave, swing, and effect IDs survive reordering; the underlying numeric field remains the authored fallback; undo and setup/project persistence retain the oscillator definitions.

The backend selector is now simply GPU and describes both performance and debugging uses. On Windows and Linux, every validated project is admitted: starting images, palettes, alternate generated-color modes, Custom OBJ work, and neutral layers without an analytic surface complete through OpenGL instead of being rejected by a narrow admission rule. Dependency-ordered reference stages can remain inside the same GPU-owned frame, while runtime context or shader failures stay actionable and are never hidden by a whole-frame CPU retry.

Setup persistence advances to format 17 and layer records to format 15. Existing projects remain migration inputs with an empty neutral LFO collection. ParameterLfo extends the public by-value configuration layout, so the product major and installed shared-library ABI advance together to 9.0.0/SONAME 9; installed-library clients must rebuild.

Version 8.0.3 fixes the actual Windows/Linux acceleration gap instead of hiding strict GPU diagnostics. Ordinary Continuous hue generated layers now execute in a real offscreen OpenGL 3.3 fragment pass covering prepared waves and paths, spatial swings, displacement, slope lighting, spiral/wall signals, generated RGB ranges, audio hue response, block replication, and procedural alpha. Supported surface stages can run in the same accelerated frame. CPU + GPU retains bounded CPU lanes for unsupported ordered work, while any admitted OpenGL failure is reported without a CPU retry.

GPU was restored as a first-class editor, CLI, and library choice on every platform, and saved selections were preserved. A no-surface default layer succeeded through the portable generated-source shader. The CLI also began pumping Qt graphics events around sequence coordination, so drivers that require the OpenGL context on the GUI thread accelerate rather than deadlock.

Version 8.0.2's Windows/Linux preference migration and removal of strict GPU from the editor are superseded by this release.

Version 8.0.1 fixes the Linux OpenGL release gate and a displaced-Plane rendering hazard. A Plane with active height-map displacement now uses a dedicated cached indexed-mesh OpenGL raster path instead of entering the analytic shader and silently omitting its authored geometry. CPU + GPU and strict GPU preserve the height map, projection, XYZ transform, lighting, outside-fill, and straight-alpha composition without collapsing the expensive raster stage to CPU. Flat Plane transforms remain accelerated on Linux and Windows. Straight-alpha parity checks compare visible composited color and alpha, with a separate fully opaque raw-float fixture preserving strict coverage for every accelerated surface. Live audio and MIDI clocks now apply Hold, Linear, or Smoothstep Between pulses changes immediately while performance Live remains active, including Mic routes whose offline fallback would otherwise disable the selector. Incremental CMake builds also reconfigure automatically when the canonical VERSION file changes, preventing stale patch-version metadata.

Version 8.0.0 removes implicit surface presentation. New Plane mappings are pixel-aligned, unrotated, unlit 100% views, and changing the selected surface never invents a camera angle, fit, scale, or light. Projection, fit and outside-fill policy, visible size, XYZ scale and placement, starting rotation and integer loop turns on all three axes, all six Euler rotation orders, camera distance, focal length, light direction, ambient/diffuse balance, transparent rear-surface compositing, and OBJ normalization are portable authored controls in the GUI, CLI, and Live mappings. Neutral front and Classic three-quarter views are explicit Undo-aware presets. CPU, Metal, Qt OpenGL, Custom OBJ, and displaced-Plane paths share the explicit transform model. Existing setup 1-15 and layer 1-13 data migrates the old presentation into visible values; setup advances to 16, layer records to 14, and the public C++ ABI to SONAME 8, so installed-library clients must rebuild.

Version 7.0.2 corrects Windows ARM64 deployment. Qt's x64 host tools now query the ARM64 target installation through its patched qtpaths wrapper, preventing x64 Qt DLLs from being mixed into an ARM64 package. The workflow verifies the PE machine type of the application, Qt Core, and platform plugins before running the installed-package smoke tests. Product behavior, the public API, SONAME 7 ABI, setup format 15, layer format 13, and bundle formats are unchanged.

Version 7.0.1 adds full-precision PNG and OpenEXR input for displacement height maps and layer starting images. Raw 8/16-bit PNG samples and 16-bit HALF/32-bit FLOAT EXR scanlines remain linear data without an 8-bit intermediate; single-channel EXR height maps work directly, and palette-image import now accepts HALF or FLOAT EXR. Supported scanline compression includes NONE, RLE, ZIPS, and ZIP.

Windows/Linux Qt OpenGL surface acceleration now negotiates core, compatibility, and unprofiled contexts against the actual context format, and can remain hardware-accelerated on the GUI thread when a driver does not support threaded OpenGL. Independent layers use two bounded CPU lanes for ineligible stages. Numeric zero fields remain ordinary editable numbers, and unfocused wheel/touchpad gestures scroll their container instead of changing values or focus. Randomized mixes retry unsafe particle workloads, and the missing GCC standard-library include that broke the Noble ARM64 Snap build is restored. The public API, SONAME 7 ABI, setup format 15, layer format 13, and bundle formats are unchanged.

Version 7.0.0 adds GUI-only Mic (Live) clock authoring for the project and active layer. Detected input devices bind to portable logical Audio roles through machine-local identities, with visible gain, sensitivity, filtering, EQ, frequency-range, metering, latency, and tap-calibration controls. Continuous beat routing now preserves detected or tapped tempo, advances through short callback gaps, and keeps offline and command-line rendering deterministic.

Live Preview Output presents the editor preview or Preview Solo on a selected display at Auto, Full, 75%, 50%, or 25% quality without starting performance Live inputs, mappings, scenes, routes, or sleep prevention. Presentation, performance Live, export, project I/O, and music analysis use explicit lifecycle guards, revision-gated coalesced rendering, watchdog adaptation, and display-aware output state.

Particle Field gains a Defined profile with distinct antialiased Spark, Soft Orb, Ring, Diamond, and Star silhouettes plus size, variation, definition, twinkle, deterministic seed/reseed, orientation, rotation, and improved trail authoring. Legacy projects retain the prior glow profile. Canvas-aware aggregate workload admission, bounded Metal allocation, cooperative cancellation, transactional unsafe-workload recovery, and independent-copy Live-path remapping harden rendering and persistence. Setup format advances to 15, layer records to 13, and the public C++ ABI to SONAME 7; installed-library clients must rebuild.

Version 6.0.1 fixes the blank Live pop-out introduced in 6.0.0. Choosing LIVE now opens a populated companion window immediately while the editor remains available, with no prompt or intermediate screen. Edit Project brings the editor forward without stopping the active runtime; closing the Live window stops capture/render/output, releases sleep prevention, restores the workspace, and supports a clean subsequent reopen. The public API, SONAME 6 ABI, setup format 14, layer format 12, and bundle formats are unchanged.

Version 6.0.0 adds pre-analysis high-pass and low-pass filters, a ten-band graphical EQ, and stable named frequency streams for Music and Live audio. The full band or any named stream can drive the project clock or an active-layer clock, while flat processing and the full-band route remain the compatibility defaults.

Live setup now provides a smart audio-beat route when the input role is unambiguous, a searchable grouped control-map target browser, a detachable workspace, editor preview driven by the same routed Live clocks, and optional native sleep prevention for active sessions. Edge Detect and Twirl join the CPU/Metal effect pipeline, and Particle Field gains five procedural shapes. Custom PNG particle sprites remain an asset-backed follow-up.

Setup format advances to 14, layer records to 12, and the public C++ ABI to SONAME 6; existing projects remain migration inputs, while installed-library clients must rebuild.

Version 5.0.3 keeps Live input, clocks, rendering, and stage output running while the complete project editor is open, with every live frame using the current authored project snapshot. It also removes artificial round-number ceilings from renderer fields, Live mappings and safety timing, audio buffers, recent-project history, one-shot source duration, and per-item audio routing. Semantic normalized ranges, protocol/format constraints, hostile-input defenses, deterministic real-time workload limits, and representation boundaries remain enforced.

Version 5.0.2 made Wave output prerequisites explicit in the editor. The Wave page exposes the same generated-pattern displacement and slope-lighting switches as Modifiers, keeps both views synchronized, and warns when an enabled wave cannot affect pixels because both outputs are off.

Version 5.0.1 repaired Ubuntu minizip-ng 4 source-package compatibility and headless CLI OpenGL initialization/teardown. Portable GPU admission follows tested platform behavior: Windows includes flat Plane rotation plus Cylinder, Sphere, and Cube, while Linux retains the three curved primitives and keeps flat Plane rotation on CPU.

Version 5.0.0 fixed the built-in Cylinder so it renders as a closed, rounded, perspective-projected 3D primitive with textured sides, visible caps, lighting, and translucent rear-surface compositing instead of a rectangular box mask.

Version 5.0.0 also added embedded PNG height maps, signed minimum and maximum Plane displacement, an artist-selected neutral midpoint, pixel-to-node density, resolution-aware preview/output mesh caches, and Wavefront OBJ export. Setup format advanced to 13, layer records to 11, and the public C++ ABI to SONAME 5.

Windows and Linux product builds add a public-Qt offscreen OpenGL 3.3 stage for analytic Cylinder, Sphere, and Cube mapping; Windows also accelerates flat Plane rotation. CPU + GPU uses it when the runtime context supports it, strict GPU reports unsupported Plane/mesh/context work directly, and runtime capabilities show the actual OpenGL renderer. Linux flat Plane, displacement Plane, and imported-OBJ work remains ordered CPU stages, and full portable effect/source/compositing coverage plus physical Intel/AMD/NVIDIA qualification remain follow-up work. macOS continues to use its broader Metal pipeline.

Application Settings and Video Export now cap themselves to the active monitor, keep action buttons visible, and scroll their content when the display or UI scale cannot fit the natural layout.

CoreMIDI remains the first native MIDI backend. Linux and Windows packages retain the portable Live authoring model but report the unsupported runtime adapter clearly. Syphon, Spout, and NDI remain optional follow-up transports.

Downloads are attached for Apple Silicon macOS, x64 and ARM64 Linux, and x64 and ARM64 Windows. Every package was built and smoke-tested on its named native GitHub-hosted runner before this release was published. See SHA256SUMS.txt for integrity checks.

The optional command-line renderer is named pvt-render. It is embedded inside the macOS application bundle and installed under bin/ in the Linux and Windows packages.

Platform boundary: macOS includes the tested Metal renderer and AVFoundation/VideoToolbox movie export. Linux and Windows include OpenGL acceleration for ordinary Continuous hue generated layers and supported Plane/Cylinder/Sphere/Cube surface stages, but still use PNG/EXR sequence export and the CPU for unported renderer stages. The macOS package is ad-hoc signed but not notarized; Windows packages are not Authenticode-signed.