Ustwo Visual Engine Documentation

Complete guide to using Ustwo Visual Engine — a real-time visual performance tool built for live shows, installations, and creative experimentation. Learn about all features, controls, and the technology behind it.

01

Overview

Ustwo Visual Engine is a browser-based visual performance tool that combines real-time 3D graphics with audio analysis and motion tracking. It's designed for VJs, visual artists, and anyone who wants to create reactive visual experiences.

🎨

20+ Visual Scenes

From particle systems and geometric shapes to generative shaders and interactive installations.

🎵

Audio Reactive

Connect microphone or audio files to sync visuals with music frequencies in real-time.

📹

Motion Control

Use your camera to control scenes with body movements and hand gestures via AI.

◉

Live Camera

Real-time webcam input with multiple visual styles — displacement, particles, silhouette and more.

✨

Post Effects

30+ GPU-powered effects — bloom, glitch, fluid distortion, pixel sort, audio displacement and more. Searchable!

🎬

HD Recording

Record performances in high quality WebM format (VP9, 25 Mbps, 60fps) with audio.

⚙️

Matter.js Physics

2D physics engine with bouncing balls, stacking boxes, ragdolls and more. Audio-reactive gravity!

02

Quick Start Guide

Get up and running with Ustwo Visual Engine in under 2 minutes.

Step 1: Choose a Scene

Click on any scene icon in the left panel, or use keyboard shortcuts 1 through 0 to quickly switch between the first 10 scenes. Use arrow keys ← → to navigate through all available scenes.

Step 2: Enable Audio Input

Click the microphone icon in the bottom toolbar to enable audio reactivity. You can use:

Step 3: Customize Parameters

Double-click on a scene to open its control panel. Each scene has unique parameters you can adjust in real-time — speed, color, intensity, and more.

Step 4: Add Effects

Scroll down in the left panel to find Post FX effects. Click to enable/disable effects like bloom, chromatic aberration, film grain, and more.

Step 5: Go Fullscreen

Press F or click the fullscreen button to enter presentation mode. Press H to hide the UI for a clean visual output.

💡 Pro Tip

Use Space to pause/resume animation. Great for finding the perfect frame when recording or taking screenshots.

03

User Interface

Understanding the layout will help you work faster and more efficiently.

Top Bar

Left Panel — Scenes & Effects

Right Panel — Controls

Bottom Toolbar

04

Visual Scenes

Ustwo Visual Engine includes 20+ unique visual scenes, each with its own aesthetic and customizable parameters. Scenes are organized into categories.

3D Geometry Scenes

Generative Shader Scenes

Shader Scenes

Simulation Scenes

Media Scenes

Interactive Scenes

04B

Matter.js Physics Engine NEW

The Matter.js mode adds 2D physics simulation to your visuals. Create interactive physics-based scenes with gravity, collisions, and constraints.

🎮 How to Access

Switch to Matter.js mode by clicking the "MATTER.JS" tab in the top navigation bar. This replaces the Three.js canvas with a 2D physics world.

Available Physics Scenes (17 total)

Physics + Post FX

Matter.js scenes can be combined with Three.js post-processing effects! The physics canvas is composited with the effect chain, so you can add bloom, glitch, chromatic aberration, and more to your physics scenes.

05

Kokeshi Choir

The Kokeshi Choir is an interactive audio-visual installation featuring 5 Japanese-style dolls that sing when you press keys or move in front of the camera.

Playing the Choir

Use your keyboard to play the dolls like a musical instrument:

Key Voice Pitch Offset Position
A Soprano 0 (root) Far left
S Mezzo +4 (major 3rd) Left
D Alto +5 (perfect 4th) Center
F Tenor -12 (octave down) Right
G Bass +7 (perfect 5th) Far right

Motion Control

When camera is enabled, you can control the dolls by moving left/right. The screen is divided into 5 horizontal zones, each triggering a different doll.

Voice Samples

🎤 About the Voice Samples

The choir voices were generated using ElevenLabs AI with the Sound Effects feature. Each voice was created with prompts like:

  • "female soprano choir voice singing long sustained ah vowel, ethereal, pure tone"
  • "female alto voice singing sustained note, dark rich timbre, choir style"
  • "male bass voice deep sustained choir note, rich low tone, gentle"

Samples are stored in choir_voices/ as WAV files (44.1kHz, stereo).

Technical Implementation

The audio playback uses the Web Audio API with AudioBufferSourceNode for sample playback. Key features:

Visual Elements

06

Audio Reactivity

Ustwo Visual Engine analyzes audio input in real-time to drive visual parameters. This creates a synchronized audio-visual experience.

Audio Sources

How It Works

Audio Parameters

Parameter Description Range
Bass Low frequencies (20-250 Hz) 0.0 - 1.0
Mid Mid frequencies (250-4000 Hz) 0.0 - 1.0
High High frequencies (4000-20000 Hz) 0.0 - 1.0
Volume Overall loudness (RMS) 0.0 - 1.0
Beat Beat detection (onset) 0 or 1
07

Motion Control

Use your webcam to control visuals with body movements and hand gestures. Motion tracking runs locally in the browser using AI models.

Enabling Motion Control

  1. Click the camera icon in the toolbar
  2. Allow browser access to webcam
  3. Wait for "MOTION" indicator to turn green
  4. Move within camera view to control visuals

Tracking Modes

⚡ Performance Note

Motion tracking uses significant CPU/GPU resources. For best performance, use a modern device and close unnecessary browser tabs.

08

Post-Processing Effects

Post-processing effects add the finishing touches to your visuals. These GPU-based effects are applied after the 3D scene is rendered, allowing for cinematic looks and creative distortions.

Available Effects

New Effects NEW

Searching Effects

Use the search field at the top of the Post FX panel to quickly filter effects. Type any part of an effect name (e.g., "glitch", "blur", "pixel") and the list will instantly filter to show only matching effects.

Combining Effects

Multiple effects can be enabled simultaneously. They are applied in order, so the combination can create unique looks. Popular combinations:

⚡ Performance

Each effect adds GPU processing overhead. On lower-end devices, limit active effects to 2-3 for smooth performance. Bloom is the most demanding effect.

09

Keyboard Shortcuts

Master these shortcuts to control Ustwo Visual Engine like a pro.

Scene Control

Shortcut Action
1 - 9, 0 Switch to scene 1-10
← → Previous / Next scene
Space Pause / Resume animation

View Control

Shortcut Action
F Toggle fullscreen
H Hide / Show UI

Recording

Shortcut Action
R Start / Stop recording

Audio

Shortcut Action
M Mute / Unmute audio

Kokeshi Choir

Shortcut Action
A Play Soprano (leftmost doll)
S Play Mezzo
D Play Alto (center doll)
F Play Tenor
G Play Bass (rightmost doll)
10

Recording & Export

Ustwo Visual Engine can record your performances as high-quality video files with synchronized audio.

How to Record

  1. Click the record button (●) in the bottom toolbar, or press R
  2. The button turns red and shows elapsed time
  3. Perform your visuals
  4. Click again to stop — video downloads automatically

Recording Specifications

Property Value
Format WebM
Video Codec VP9
Audio Codec Opus
Video Bitrate 25 Mbps
Frame Rate 60 FPS
Resolution Canvas size (usually 1920×1080)

Technical Implementation

// Capture canvas as stream const canvasStream = canvas.captureStream(60); // Add audio if available const audioDestination = audioCtx.createMediaStreamDestination(); analyser.connect(audioDestination); // Combine video + audio const combinedStream = new MediaStream([ ...canvasStream.getVideoTracks(), ...audioDestination.stream.getAudioTracks() ]); // Create recorder const recorder = new MediaRecorder(combinedStream, { mimeType: 'video/webm;codecs=vp9,opus', videoBitsPerSecond: 25000000 });

📁 File Location

Recordings are saved to your browser's default download folder as vj-recording-YYYY-MM-DDTHH-MM-SS.webm

Converting to Other Formats

WebM files can be converted to MP4 or other formats using tools like:

11

Settings & Configuration

Fine-tune Ustwo Visual Engine to match your setup and preferences. Settings are accessible via the gear icon (⚙) in the toolbar or on individual items.

Audio Settings

Configure how audio input affects the visuals.

Setting Description Range
Sensitivity How responsive visuals are to audio input 0 - 100%
Smoothing Reduces jitter in audio response 0 - 0.99
Frequency Range Which frequencies to focus on (bass, mid, treble) Low / Mid / High / Full
Beat Detection Enable automatic beat sync On / Off

Motion Settings

Configure motion tracking behavior when using webcam input.

Setting Description Range
Tracking Mode Which body part to track Full Body / Hands / Face
Smoothing Reduces jitter in motion data 0 - 1
Scale X/Y Amplify or reduce motion range 0.1 - 3.0
Dead Zone Minimum movement to register 0 - 0.5
Mirror Flip the camera horizontally On / Off

Scene-Specific Settings

Each scene has its own customizable parameters. Double-click on a scene to open its control panel. Common parameters include:

Global Preferences

Setting Description
Auto-play Audio Start audio file playback automatically
Show FPS Display frames per second counter
High DPI Mode Render at retina resolution (uses more GPU)
Background Color Default scene background when not overridden

Saving & Loading Presets

Your settings and scene configurations can be saved as presets:

💡 Pro Tip

Create multiple presets for different venues or music styles. You can quickly switch between them during a performance.

12

Technology Stack

Ustwo Visual Engine is built entirely with web technologies, requiring no plugins or installations. Here's what powers it under the hood.

Three.js

3D Rendering

WebGL 2.0

GPU Graphics

GLSL

Custom Shaders

Web Audio API

Audio Analysis

TensorFlow.js

AI Pose Detection

MediaPipe

Hand Tracking

MediaRecorder

Video Export

ES Modules

Modern JavaScript

13

Three.js & WebGL

Three.js is the primary 3D rendering library, providing a high-level API over WebGL for creating and displaying 3D graphics.

Core Components

Render Loop

function animate() { requestAnimationFrame(animate); // Update time const time = performance.now() * 0.001; // Update scene objects sceneManager.update(time, { audio: audioData, motion: motionData, palette: currentPalette }); // Render renderer.render(scene, camera); }

Performance Optimizations

14

Web Audio API

The Web Audio API handles all audio processing — from microphone input and file playback to FFT analysis and synthesis.

Audio Graph

// Audio context and nodes AudioContext ├── MediaStreamSource (microphone) │ └── AnalyserNode (FFT) │ └── Destination (speakers) │ ├── AudioBufferSource (samples) │ └── GainNode (volume) │ └── MediaStreamDestination (recording) │ └── OscillatorNode (synthesis) └── BiquadFilter (formants) └── GainNode (envelope)

FFT Analysis

Frequency analysis uses a 2048-sample FFT, providing 1024 frequency bins. Data is smoothed with a time constant of 0.8 for stable visuals.

Kokeshi Audio Synthesis

The Kokeshi Choir uses sample-based playback with pitch shifting:

15

TensorFlow.js & MediaPipe

AI-powered motion tracking runs entirely in the browser using pre-trained models from Google's TensorFlow and MediaPipe teams.

MoveNet (Pose Detection)

MediaPipe Hands

// Initialize pose detector const detector = await poseDetection.createDetector( poseDetection.SupportedModels.MoveNet, { modelType: poseDetection.movenet.modelType.SINGLEPOSE_LIGHTNING } ); // Detect poses const poses = await detector.estimatePoses(videoElement);
16

GLSL Shaders

Custom GLSL shaders power many visual effects, from post-processing to generative art scenes. Shaders run on the GPU for maximum performance.

Post-Processing Effects

Example: Vignette Shader

// Fragment shader for soft vignette uniform float fadeTop; uniform float fadeBottom; varying vec3 vWorldPos; void main() { float y = vWorldPos.y; float alpha = 0.0; if (y < fadeBottom) { alpha = 1.0; // Solid black } else if (y < fadeTop) { alpha = 1.0 - smoothstep(fadeBottom, fadeTop, y); } gl_FragColor = vec4(0.0, 0.0, 0.0, alpha); }

Generative Techniques