A Rust framework for building real-time VJ applications. You bring the shader. The engine handles GPU rendering, video I/O, audio analysis, parameter modulation, and network control.
GPU Rendering
wgpu on Metal, Vulkan, and DX12. Single-pass, multi-pass feedback, mesh displacement, and compute shaders.
Audio Analysis
8-band FFT, beat detection, BPM estimation, and an audio-to-parameter routing matrix — all live.
LFO Modulation
3 independent LFO banks with 5 waveforms each. Tempo-sync to BPM, beat-phase lock, per-parameter depth.
Video I/O
Webcam, NDI, Syphon (macOS), Spout (Windows), and V4L2 (Linux) — for input and output.
MIDI · OSC · Web
MIDI CC learn, OSC server, and a REST + WebSocket web remote. Control from anything on the network.
Tempo Sync
Ableton Link, Pioneer ProDJ Link, and MIDI Timecode. Lock to the DJ or the DAW.
What is rustjay-engine?
rustjay-engine is a Cargo workspace of focused crates that handles all the infrastructure of a live visual performance tool — GPU rendering, video I/O, audio analysis, parameter modulation, and network control — so you can focus on the one thing that makes your effect unique: the shader.
When you implement the EffectPlugin trait and call rustjay_engine::run(), you get a complete dual-window application:
- Output window — fullscreen GPU-rendered output
- Control window — a tabbed panel with built-in sections for input sources, audio analysis, LFO modulation, MIDI mapping, output routing, and presets
Running the examples
git clone https://github.com/BlueJayLouche/rustjay-engine
cd rustjay-engine
cargo run -p template # HSB colour — the simplest effect
cargo run -p delta # RGB delay / motion extraction
cargo run -p waaaves # multi-pass feedback pipeline
cargo run -p sputnik # mesh displacement (Rutt-Etra style)
How to use this guide
Start with Installation, then work through Your First Effect. After that, the chapters are largely independent — jump to whatever is relevant to what you're building.