← BACK TO INDEX
Live visuals · Real-time engine · MIDI · Depth rendering - Solo build
VZN ZERO

Studio

A solo-built real-time VJ software for live visual performance with audio-reactive effects, clip playback and 3D perspective controls. All in one standalone desktop app.

Role
Sole author · Design · Eng
Scale
~10,000+ lines
Stack
PyQt5 · OpenCV · MiDaS · MIDI
Status
Standalone desktop app
Demo Reel · 01 · Woo Boost
Sound on

One AI generated video clip, with automatically synced visual effects applied based on parameters and audio triggers.

01

Overview

A professional PyQt5/Python desktop application for live visuals: audio, video, 3D geometry, and depth maps composited into audio-reactive, multi-layer output driven live from MIDI hardware.

I built this end to end: the rendering engine, the compositing model, the MIDI control layer, the capture pipeline, and the project system. It started as a simple single-cell effect toy and grew into a ~10,000-line engine designed to survive an actual VJ set.

What started out as a personal hobby project showed signs of commercial interest when strangers saw the output and asked if it was for sale.

VZN ZERO Studio interface
02

The project arc

The biggest challenge was making everything run smoothly in real time. A live performance tool has to respond instantly and maintain a steady frame rate, even on less powerful computers.

Early versions worked, but they weren't efficient enough. As the project grew, I reworked the rendering engine, optimized the way graphics were drawn, and eliminated unnecessary calculations so the application could handle more complex visuals without slowing down.

The project was almost entirely driven by a commitment to the creation of dramatic visual effects. Countless iterations of this software, each with additions and tweaks of a large library of customizable visual effects that I created.

Alongside the desktop application, I also rebuilt several of the same visual concepts in TouchDesigner, including wireframe and depth-map effects. Building the same ideas in two different environments gave me a deeper understanding of the tradeoffs between custom code and node-based, GPU-accelerated workflows.

Gold Dust Mandala
Sound on

Depth-aware compositor driving a mandala scene - audio-reactive geometry, MIDI-mapped params.

03

What I built

A standalone software that allows the user to record and keyframe effects, as well as control effects, clips, and layers via midi controls.

01
The compositing engine
_tick loopaudio-reactiveMiDaS depthparticles + 3D
A multi-layer, real-time compositor. Every tick, multiple cells composite into one live output - audio-reactive particles, video FX, 3D models, and depth-map integration all feeding the same frame. Everything else exists to keep this loop fast and honest.
02
The architecture invariants
per-cell stateno worker→UIpersistent MIDI
Three rules carry the design. Parameters are strictly per-cell, so selecting a cell never touches the live output. Worker threads never call Qt widgets - cross-thread state moves through plain dicts and the main thread reconciles. MIDI mappings persist in the background so a mapped trigger keeps working no matter what's on screen.
03
The control surface
MIDI learnmulti-to-one CChot-swap cells
A full MIDI learn layer: map any knob or trigger to any parameter by touching both. Multi-to-one CC mapping lets one physical knob drive several sliders at once. Mappings don't leak between cells, and effect-enables persist correctly as cells switch underneath them.
04
Capture and projects
clock-anchoredWYSIWYG exportv3 project format
Recording is clock-anchored to the audio - duplicate frames hold sync so a captured set never drifts against its soundtrack. Export mirrors the full multi-layer composite, so what you export is what you saw. The v3 project format restores everything: cells, params, FX state, scenes, and automation.
04

Stack

Application / UI

PyQt5 for the standalone desktop app and control surface. Every parameter is per-cell; the main thread owns all widget state.

Rendering

OpenCV (cv2) and NumPy for compositing and geometry. Depth-bucketed polylines, precomputed crease edges, and short-circuiting effect gates.

Depth

MiDaS DPT_Large (cached in torch hub) for monocular depth estimation feeding the depth-aware compositor.

Audio / MIDI

PyAudio for live audio analysis. Full MIDI layer with learn, multi-to-one CC mapping, and background-persistent mapped effect enables.

Capture / Projects

Clock-anchored recording and composite-mirroring export. A v3 project format covering cells, params, fx and bypass state, scenes, and automation.

Parallel build

TouchDesigner 2025.32280 (GLSL TOP shaders, depth-map point cloud, wireframe geometry) as a deliberate GPU-node-graph counterpoint to the CPU engine.

Demo Reel · 02
Sound on

Extended live capture - depth-aware compositing and multi-cell scenes.

VZN ZERO mark
VZN ZERO Studio

Brendan Rogers · RareShiny LLC · 2026

← Back to index