Open-source NestDrop alternative for Linux and Windows
Real-time audio visualization with MilkDrop presets, multi-deck mixing, MIDI control, and video output for OBS/VLC.
| Platform | Format | Download |
|---|---|---|
| Linux (x64) | AppImage | OpenDrop_0.3.5_amd64.AppImage |
| Linux (x64) | Debian | OpenDrop_0.3.5_amd64.deb |
| Windows (x64) | Installer | OpenDrop_0.3.5_x64-setup.exe |
| Windows (x64) | MSI | OpenDrop_0.3.5_x64_en-US.msi |
# Arch Linux
sudo pacman -S projectm pipewire
# Ubuntu/Debian
sudo apt install libprojectm4 pipewire
# Video output (optional)
sudo pacman -S v4l2loopback-dkms # Arch
sudo modprobe v4l2loopback devices=1 video_nr=10 card_label="OpenDrop"
# Prerequisites
# - Rust 1.75+
# - Node.js 18+
# - pnpm
# - libprojectM-4 development files
# Clone
git clone https://github.com/kushiemoon-dev/OpenDrop-VJ.git
cd OpenDrop-VJ
# Install dependencies
pnpm install
# Build renderer sidecar
cargo build --release -p opendrop-renderer
mkdir -p src-tauri/binaries
cp target/release/opendrop-renderer src-tauri/binaries/opendrop-renderer-$(rustc -vV | grep host | cut -d' ' -f2)
# Development mode
pnpm tauri dev
# Release build
pnpm tauri build
┌─────────────────────────────────────────────────────────┐
│ Frontend (Svelte 5 / SvelteKit) │
│ PresetBrowser, Playlist, Crossfader, MIDI, VU Meters │
└────────────────┬────────────────────────────────────────┘
│ Tauri IPC Commands
▼
┌─────────────────────────────────────────────────────────┐
│ Tauri Backend (Rust) │
│ AppState, AudioEngine, MIDI, Crossfader, Compositor │
└──┬──────────────────────────────────────────────┬───────┘
│ Spawn (JSON IPC) │ Audio
▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────┐
│ Renderer Deck 0 │ │ Renderer Deck 1-3│ │ PipeWire │
│ ProjectM+OpenGL │ │ ProjectM+OpenGL │ │ /WASAPI │
│ + Video Output │ │ + Video Output │ └──────────┘
└────────┬─────────┘ └──────────────────┘
│ glReadPixels
▼
┌──────────────────┐
│ v4l2 / Spout │ → OBS / VLC
│ / NDI │
└──────────────────┘
# Load kernel module
sudo modprobe v4l2loopback devices=1 video_nr=10 card_label="OpenDrop"
# Verify device
ls -la /dev/video10
# In OBS: Sources → Video Capture Device → OpenDrop
SpoutLibrary.dll is bundled with the installer. In OBS:
Built-in presets for popular controllers:
Custom mappings can be created via the MIDI Learn mode.
Settings are stored in:
~/.config/opendrop/%APPDATA%\OpenDrop\Preset and texture directories are configurable in Settings (gear icon).
| Component | Technology |
|---|---|
| Backend | Rust, Tauri 2.x |
| Frontend | Svelte 5, SvelteKit, TypeScript |
| Visualization | ProjectM 4.x, OpenGL 3.3 |
| Audio | PipeWire/PulseAudio (Linux), WASAPI (Windows) |
| MIDI | midir |
| Video Out | v4l2 (Linux), Spout (Windows), NDI (cross-platform) |
| Icons | Lucide |
OpenDrop-VJ/
├── src/ # Svelte frontend
│ ├── lib/components/ # UI components (12)
│ ├── lib/stores/ # State management (Svelte 5 runes)
│ └── routes/ # SvelteKit pages
├── src-tauri/ # Tauri backend
│ └── src/lib.rs # Main Rust logic
├── crates/
│ ├── opendrop-core/ # Core library (audio, video, MIDI)
│ ├── opendrop-renderer/ # OpenGL renderer process (sidecar)
│ ├── projectm-rs/ # Safe ProjectM wrapper
│ └── projectm-sys/ # ProjectM FFI bindings
└── assets/ # Bundled presets & textures
MIT License - See LICENSE for details.
Made with ❤️ by kushiemoon-dev