Skip to content

kniessner/openvj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

33 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽ›๏ธ OpenVJ

Real-time visual performance and projection mapping in your browser

OpenVJ is an open-source VJ (Video Jockey) and projection mapping system built with modern web technologies. Transform any surface into a dynamic canvas for live visuals, performances, and installationsโ€”with full MIDI control, real-time audio reactivity, Uji generative art, and AI-powered shader generation. No expensive hardware or proprietary software required.

Beta Release License: MIT React Three.js p5.js


โœจ What is OpenVJ?

OpenVJ brings professional VJ capabilities to the web. Whether you're mapping visuals onto buildings, creating stage backdrops, or experimenting with live generative art, OpenVJ provides the tools you needโ€”entirely in your browser.

๐ŸŽฏ Perfect For

  • Live Performers โ€“ VJs, musicians, stage designers
  • Installation Artists โ€“ Projection mapping for galleries, events, public spaces
  • Creative Coders โ€“ Experiment with shaders, generative art, real-time graphics
  • Educators โ€“ Teach projection mapping and real-time graphics
  • Hobbyists โ€“ Explore visual art without expensive equipment

๐ŸŒŸ Features

Current (v0.2.0 - Generative)

โœ… Projection Mapping

  • Quad-based surface warping with corner pin distortion
  • Drag-and-drop corner manipulation in 3D space
  • Multiple independent surfaces per project
  • Real-time UV coordinate transformation
  • Surface visibility toggle and lock
  • Mask shapes: Circle, Ellipse, Diamond, Star, Polygon

โœ… Video Playback

  • Support for MP4, WebM, and browser-native formats
  • Drag-and-drop video loading
  • Play/pause/stop/seek controls
  • Variable playback rate (0.5ร—, 1ร—, 2ร—, 4ร—)
  • Loop mode and volume control
  • Timeline scrubbing with waveform visualization

โœ… Uji Generative System [NEW in v0.2.0]

  • 39 built-in presets from the original Uji by Noah Doersing
  • Real-time kaleidoscopic generative patterns
  • Canvas 2D rendering with seamless looping
  • Full parameter control: Shape, Rotation, Expansion, Waviness, Jitter
  • Audio-reactive modulation: Rotation, Jitter, Expansion, Hue shift
  • Fade effects: Fade-in, Fade-out, Sawtooth fade patterns
  • Customizable appearance: Colors, Opacity, Shadows, Noise
  • Visual presets: โต‹, โดผ, โต›, โต, โตŸ, โตฅ, โตฃ, โต , โต’, and more!

โœ… Audio-Reactive

  • Real-time microphone input with frequency analysis
  • Three-band EQ: Low (20-300Hz), Mid (300-4kHz), High (4k-20kHz)
  • Beat detection with adjustable threshold
  • BPM tap tempo
  • Visual level meters
  • Shaders can respond to uAudioLow, uAudioMid, uAudioHigh, uBeat uniforms
  • Uji patterns react to audio in real-time
  • Adjustable sensitivity and smoothing

โœ… MIDI Controller Support

  • Full MIDI CC mapping via WebMIDI API
  • MIDI learn mode for easy binding
  • Control surface parameters: opacity, brightness, contrast, hue, saturation, zoom, warp, chromatic aberration, pixelate, vignette, rotation
  • Default 8-knob mapping with persistent storage
  • Works with any MIDI controller (tested with generic USB controllers)

โœ… Shader System

  • Custom GLSL shaders per surface
  • AI-assisted shader generation (bring your own Anthropic API key)
  • Live shader editing with syntax highlighting
  • Built-in shader library: Plasma Wave, Tunnel, Kaleidoscope, Lava Lamp, Voronoi, and more
  • Audio-reactive uniforms built-in

โœ… Creative Coding & Generative Art:

  • p5.js integration for live generative art coding
  • 5 built-in templates: Audio Waveform, Particles, Kaleidoscope, Neon Grid, Liquid Flow
  • Live code editor with real-time preview
  • OpenVJ Bridge API for audio/MIDI access in sketches
  • Layer-based sketch management with blend modes
  • Instance mode rendering for independent execution

โœ… Media Sources:

  • Video files (MP4, WebM)
  • Image files (JPG, PNG, GIF, WebP, SVG, BMP)
  • Webcam input
  • Screen capture
  • Custom GLSL shaders
  • Uji generators (39 generative kaleidoscope patterns)
  • p5.js sketches (code-based generative art)

โœ… Scene Management

  • Save and load complete scenes
  • Scene thumbnails for quick preview
  • Smooth scene transitions
  • Multiple scene presets

โœ… Project Management

  • Save/load project configurations
  • Export/import as JSON
  • LocalStorage persistence
  • Full state restoration
  • JSON validation with Zod schemas

โœ… User Interface

  • Clean, dark-themed interface
  • Media browser with type filters
  • Surface list with thumbnails
  • Real-time parameter sliders
  • Fullscreen mode (F11)
  • Help overlay (? key) with shortcuts
  • Surface Inspector with tabs (Color, Transform, FX, Mask, Corners)
  • Transport controls with audio waveform

โœ… Surface Inspector [NEW in v0.2.0]

  • Color tab: Brightness, Contrast, Saturation, Hue, Colorize, Invert
  • Transform tab: Scale, Translate, Rotation, FlipX/Y
  • FX tab: Zoom, Warp, Chromatic Aberration, Pixelate, Vignette, Scanlines, Noise
  • Mask tab: Circle, Ellipse, Diamond, Star, Polygon masks with feather/invert
  • Corners tab: Corner adjustment with nudge controls and presets

โœ… Uji Controller Panel [NEW in v0.2.0]

  • Live parameter adjustment for all Uji settings
  • 7 tabs: Geometry, Rotation, Motion, Texture, Visibility, Appearance, Animation
  • Geometry: Shape, Segments, Radius, Iterations
  • Rotation: Speed, Speedup, Period, Until, Origin, Initial rotation
  • Motion: Expansion H/V (linear + exponential), Translation
  • Texture: Jitter, Waviness (phase & amplitude H/V)
  • Visibility: Skip chance, Segment rotation, Lengthening, Line swappiness, Reveal speed
  • Appearance: Thickness, Line color/opacity, BG color/opacity [NEW], Hue shift, Blend mode, Shadows, Noise
  • Animation: Live animation mode with audio modulation controls
  • 39 one-click presets from original Uji

๐Ÿš€ Quick Start

Prerequisites

  • Node.js 18+ (Download)
  • A modern browser (Chrome, Firefox, Edge, Safari)
  • Optional: A projector or second display for projection mapping
  • Optional: MIDI controller for hardware control

Installation

# Clone the repository
git clone https://github.com/kniessner/openvj.git
cd openvj

# Install dependencies
npm install

# Start development server
npm run dev

Visit http://localhost:5173 and you'll see the OpenVJ interface with a demo scene.

First Steps

  1. Load a Video โ€“ Drag and drop an MP4/WebM file into the Media Browser
  2. Create a Surface โ€“ Click "+ Add Surface" in the Surface List
  3. Adjust Mapping โ€“ Drag the corner handles to warp the projection
  4. Try a Shader โ€“ Select a surface and apply a built-in shader effect
  5. Try Uji Generative Art โ€“ Click "โ›ถ" on a surface, choose "Uji Generator", select a preset
  6. Create p5.js Sketch โ€“ Open the p5.js panel, click "New Sketch", and code live
  7. Enable Audio Reactivity โ€“ Click the ๐ŸŽค icon to add audio-responsive visuals
  8. MIDI Control โ€“ Connect a MIDI controller and use MIDI Learn to map parameters
  9. Go Fullscreen โ€“ Press F11 or click the fullscreen button

๐Ÿ“– Detailed Guide: See QUICKSTART.md


๐Ÿ“– Documentation

Document Description
QUICKSTART.md Get up and running in 5 minutes
DEVELOPMENT_STATUS.md Current implementation status
TODO.md Development roadmap and task list
docs/PROJECT_PLAN.md Detailed feature specifications
docs/ARCHITECTURE.md Technical architecture overview

๐ŸŽฎ Keyboard Shortcuts

Press ? in the app to see all shortcuts:

Key Action
Space Play/Pause video
F Toggle Fullscreen
H or ? Show/Hide Help
S Save Project
L Load Project
M Toggle Media Browser
Delete Remove selected surface
1-9 Select surface by number

๐Ÿ› ๏ธ Technology Stack

OpenVJ is built with modern web technologies:


๐Ÿค Contributing

OpenVJ is an open-source project and contributions are welcome!

Ways to Contribute

  • ๐Ÿ› Report bugs โ€“ Found an issue? Open an issue
  • ๐Ÿ’ก Suggest features โ€“ Have an idea? Start a discussion
  • ๐Ÿ”ง Submit PRs โ€“ Code contributions are always appreciated
  • ๐Ÿ“ Improve docs โ€“ Help make the documentation better
  • ๐ŸŽจ Share creations โ€“ Show us what you've made!

Development Setup

# Install dependencies
npm install

# Run development server
npm run dev

# Run tests
npm run test

# Build for production
npm run build

See CONTRIBUTING.md for detailed guidelines.


๐Ÿ“œ License

OpenVJ is released under the MIT License. See LICENSE for details.

You are free to use, modify, and distribute this software for personal, educational, or commercial purposes.


๐Ÿ™ Acknowledgments

OpenVJ stands on the shoulders of giants:

  • Three.js for making WebGL accessible
  • @react-three/fiber for the React integration
  • p5.js for creative coding capabilities
  • Noah Doersing for the original Uji generative art system
  • The open-source projection mapping community
  • All contributors and testers

Special thanks to:

  • Uji by Noah Doersing (inspiration for generative patterns)
  • MapMapMap (inspiration for projection mapping workflows)
  • MadMapper (feature reference)
  • Resolume (VJ workflow inspiration)

๐Ÿ”— Links


๐Ÿ’ฌ Community & Support

  • ๐Ÿ’ฌ Discord โ€“ Coming soon
  • ๐Ÿฆ Twitter โ€“ Coming soon
  • ๐Ÿ“ง Email โ€“ your.email@example.com

โš ๏ธ Beta Notice

OpenVJ is currently in beta. Core features are working and stable, but you may encounter edge cases or browser compatibility issues. Please report issues on GitHub!

Known Limitations:

  • Webcam/screen capture needs browser permissions (may vary by browser)
  • Single display output only (multi-output in development)
  • Effect chains not yet implemented (single effect per surface)
  • No frame-by-frame image sequence playback yet
  • Works best in Chrome/Edge (WebMIDI and WebGL support)

๐ŸŽ‰ What's New in v0.2.0

Generative Art Release

  • โœจ Uji Generative System โ€“ 39 presets, full parameter control
  • โœจ p5.js Integration โ€“ Live coding creative sketches
  • โœจ Surface Inspector โ€“ Tabbed interface for all surface properties
  • โœจ Improved UI/UX โ€“ Better help system, keyboard shortcuts overlay
  • โœจ Seamless Uji Looping โ€“ No visible reset in animations
  • โœจ Audio-Reactive Uji โ€“ Patterns react to music in real-time
  • โœจ Black Lines Fix โ€“ Texture wrapping improvements
  • ๐Ÿ› Build Stability โ€“ All TypeScript errors resolved

Happy VJing! ๐ŸŽฌโœจ

Built with โค๏ธ by the OpenVJ community

About

Real-time visual performance and projection mapping in your browser. VJ tool with quad warping, video playback, custom GLSL shaders, AI-assisted generation, and generative graphics. Built with React, Three.js, and WebGL.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors