Skip to content

Procedural Visualizer Tool 16.0.0

Choose a tag to compare

@github-actions github-actions released this 27 Aug 17:24
· 1 commit to main since this release

Procedural Visualizer Tool 16.0.0 is the current stable release.

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.