Windows Installation
Overview
This guide walks through installing and configuring Conductor v3.0.0 on Windows. Conductor now includes multi-protocol input support (MIDI controllers + game controllers), a background daemon service, and a modern Tauri-based GUI for visual configuration.
Installation Options:
- Option 1 (Recommended): Download pre-built binaries from GitHub Releases
- Option 2: Build from source (developers/advanced users)
Installation takes approximately 15-20 minutes.
Supported Windows Versions:
- Windows 11 (recommended)
- Windows 10 (1903 or later)
- Windows Server 2019+
Option 1: Install Pre-Built Binaries (Recommended)
1. Download Conductor
Visit the Releases Page and download:
For GUI + Daemon (Recommended):
conductor-gui-windows-x86_64.zip- GUI application with daemon- OR download daemon separately:
conductor-x86_64-pc-windows-msvc.zip
2. Install the Binaries
# Extract the archive
Expand-Archive -Path conductor-x86_64-pc-windows-msvc.zip -DestinationPath C:\Program Files\Conductor
# Add to PATH (PowerShell as Administrator)
$env:Path += ";C:\Program Files\Conductor"
[Environment]::SetEnvironmentVariable("Path", $env:Path, [EnvironmentVariableTarget]::Machine)
# Verify installation
conductor --version
conductorctl --version
3. Install as Windows Service (Optional)
# Run as Administrator
# Create scheduled task to auto-start Conductor
schtasks /create /tn "Conductor Daemon" /tr "C:\Program Files\Conductor\conductor.exe" /sc onlogon /rl highest
Skip to Hardware Requirements
Option 2: Build from Source
Prerequisites
1. Hardware Requirements
Conductor v3.0 supports two types of input devices:
MIDI Controllers:
- Native Instruments Maschine Mikro MK3 (recommended, full RGB LED support)
- Generic MIDI controllers (keyboard controllers, pad controllers, etc.)
- USB-MIDI or MIDI over Bluetooth
Game Controllers (HID) (v3.0+):
- Gamepads: Xbox (360, One, Series X|S - native support), PlayStation (DualShock 4, DualSense), Switch Pro Controller
- Joysticks: Flight sticks, arcade sticks
- Racing Wheels: Logitech, Thrustmaster, or any DirectInput/XInput compatible wheel
- HOTAS: Hands On Throttle And Stick systems
- Custom Controllers: Any SDL2-compatible HID device
You need at least one MIDI controller OR one game controller to use Conductor. Both can be used simultaneously.
2. Software Requirements
Rust Toolchain (for building from source):
Conductor is written in Rust and requires the Rust compiler and Cargo build system.
Check if Rust is already installed:
rustc --version
cargo --version
If you see version numbers (e.g., rustc 1.75.0), skip to the next section.
Install Rust using rustup:
- Download rustup-init.exe from https://rustup.rs/
- Run the installer
- Follow the prompts and select the default installation
- Restart your terminal/PowerShell
Verify installation:
rustc --version # Should show: rustc 1.75.0 (or later)
cargo --version # Should show: cargo 1.75.0 (or later)
SDL2 Library (for game controllers):
SDL2 is included via the gilrs v0.10 Rust crate. No additional installation required - it’s built into Conductor automatically.
3. Platform-Specific Requirements
Microsoft C++ Build Tools (Required):
Required for compiling native Rust dependencies.
Option A - Visual Studio Build Tools (Recommended):
- Download from https://visualstudio.microsoft.com/downloads/
- Install “Desktop development with C++” workload
- Restart your terminal
Option B - Full Visual Studio:
- Download Visual Studio Community (free)
- Install “Desktop development with C++” workload
Verify installation:
where cl
# Should show: C:\Program Files\Microsoft Visual Studio\...\cl.exe
4. Game Controller Support
Windows Game Controllers:
Most game controllers work natively on Windows without additional drivers:
Xbox Controllers:
- Xbox 360: Native XInput support
- Xbox One: Native XInput support via USB or Xbox Wireless Adapter
- Xbox Series X|S: Native XInput support via USB, Bluetooth, or Xbox Wireless Adapter
- No additional drivers required
PlayStation Controllers:
- DualShock 4: Native DirectInput support via USB or Bluetooth
- DualSense (PS5): Native DirectInput support via USB or Bluetooth
- For XInput emulation (optional): Install DS4Windows from https://ds4-windows.com/
Switch Pro Controller:
- Native DirectInput support via USB or Bluetooth
- For XInput emulation (optional): Install BetterJoy or reWASD
Generic Controllers:
- Most USB and Bluetooth gamepads work via DirectInput
- SDL2 provides automatic mapping for 100+ controller types
Verify game controller detection:
# Open Windows Settings
start ms-settings:devices-controllersandgamedevices
# Or open Game Controllers directly
control joy.cpl
Your controller should appear in the list. Click “Properties” to test buttons and axes.
5. Device-Specific Drivers (Optional)
Native Instruments Drivers (for Maschine Mikro MK3 only):
If using a Maschine Mikro MK3, install Native Instruments drivers for full RGB LED support.
Download and install:
- Visit Native Instruments Downloads
- Download Native Access (the NI installation manager)
- Install Native Access and sign in (free account)
- In Native Access, install:
- Maschine software (includes drivers)
- Controller Editor (for creating custom profiles, optional)
Verify driver installation:
# Check Device Manager
devmgmt.msc
# Look for "Maschine Mikro MK3" under:
# - Sound, video and game controllers
# - Universal Serial Bus devices
Building from Source
1. Clone the Repository
# Choose a location for the project
cd ~\Projects # or wherever you keep code
# Clone the repository
git clone https://github.com/amiable-dev/conductor.git
cd conductor
2. Build the Daemon
Release build (recommended for regular use):
# Build the entire workspace (daemon + core)
cargo build --release --workspace
# Or build just the daemon binary
cargo build --release --package conductor-daemon
The release build takes 3-7 minutes on modern hardware and produces an optimized binary (~3-5MB) in target\release\conductor.exe.
Build output:
Compiling conductor-core v3.0.0 (C:\Users\you\Projects\conductor\conductor-core)
Compiling conductor-daemon v3.0.0 (C:\Users\you\Projects\conductor\conductor-daemon)
Finished release [optimized] target(s) in 3m 42s
3. Build the GUI (Optional)
# Install Node.js (if not already installed)
# Download from https://nodejs.org/ (LTS version)
# Install frontend dependencies
cd conductor-gui\ui
npm ci
# Build the frontend
npm run build
# Build the Tauri backend
cd ..\src-tauri
cargo build --release
# The GUI exe will be at:
# conductor-gui\src-tauri\target\release\conductor-gui.exe
4. Install Binaries
# Return to project root
cd ~\Projects\conductor
# Create installation directory
New-Item -ItemType Directory -Force -Path "C:\Program Files\Conductor"
# Copy binaries (requires Administrator)
Copy-Item target\release\conductor.exe "C:\Program Files\Conductor\"
Copy-Item target\release\conductorctl.exe "C:\Program Files\Conductor\"
# Add to PATH (PowerShell as Administrator)
$env:Path += ";C:\Program Files\Conductor"
[Environment]::SetEnvironmentVariable("Path", $env:Path, [EnvironmentVariableTarget]::Machine)
# Verify installation (restart terminal first)
conductor --version
conductorctl --version
Verifying Device Connection
Verifying MIDI Controller Connection
Check USB Device in Device Manager
# Open Device Manager
devmgmt.msc
Look for your MIDI controller under:
- Sound, video and game controllers
- Universal Serial Bus devices
Example: “Maschine Mikro MK3” should appear
Check MIDI Ports
# List available MIDI ports
conductor --list-ports
# Or use test_midi diagnostic
cargo run --bin test_midi
Test MIDI Events
# Run diagnostic tool (replace 0 with your port number)
cargo run --bin midi_diagnostic 0
# Or if installed:
midi_diagnostic 0
Press pads on your controller. You should see:
[NoteOn] ch:0 note:12 vel:87
[NoteOff] ch:0 note:12 vel:0
If nothing appears:
- Check USB connection
- Verify correct port number (try 0, 1, 2, etc.)
- Install device drivers
- Check Device Manager for errors
Verifying Game Controller Connection
Check Windows Game Controllers
# Open Game Controllers panel
control joy.cpl
# Or via Settings
start ms-settings:devices-controllersandgamedevices
Your controller should appear in the list. Select it and click “Properties” to test:
- Button presses
- Analog stick movements
- Trigger pulls
- D-pad inputs
Check via Device Manager
# Open Device Manager
devmgmt.msc
Look for your controller under:
- Xbox Peripherals (Xbox controllers)
- Human Interface Devices (Generic gamepads)
- Bluetooth (Wireless controllers)
Check via Conductor Status
# Start Conductor
Start-Process conductor
# Check status
conductorctl status
# Look for gamepad in device list
# Example output:
# Connected Devices:
# - Xbox Wireless Controller (Gamepad)
Test Gamepad Events
Use Conductor’s debug logging to verify gamepad inputs:
# Start Conductor with debug logging
$env:DEBUG=1
conductor --foreground
Press buttons on your gamepad. You should see:
[GamepadButton] button:128 (A/Cross/B)
[GamepadButton] button:129 (B/Circle/A)
[GamepadAnalogStick] axis:128 value:255 (Left stick right)
If nothing appears:
- Check USB or Bluetooth connection
- Verify controller appears in Game Controllers (joy.cpl)
- Check battery level (wireless controllers)
- Try reconnecting the controller
- Restart Conductor
Platform-Specific Troubleshooting
Xbox Wireless Adapter:
- Requires Xbox Wireless Adapter for Windows
- USB adapter available from Microsoft or third-party
- Automatic driver installation on Windows 10+
Bluetooth Connection:
- Open Settings → Devices → Bluetooth & other devices
- Click “Add Bluetooth or other device”
- Select “Bluetooth”
- Put controller in pairing mode:
- Xbox: Hold pair button until LED flashes
- PlayStation: Hold Share + PS button
- Switch Pro: Hold sync button on top
- Select controller from list
- Wait for pairing to complete
DS4Windows for PlayStation Controllers (Optional):
- Download from https://ds4-windows.com/
- Install and run DS4Windows
- Connect DualShock 4 or DualSense
- DS4Windows provides XInput emulation and additional features
Permissions:
- Windows does not require special permissions for gamepad access
- If issues persist, run Conductor as Administrator (not recommended long-term)
Configuration
Using the GUI (Recommended)
v3.0.0 includes a visual configuration editor:
-
Open Conductor GUI:
conductor-gui -
Connect your device in the device panel (MIDI or gamepad)
-
Use MIDI Learn mode:
- Click “Learn” next to any trigger
- Press a button on your controller or gamepad
- The trigger config auto-fills
- Assign an action (keystroke, launch app, etc.)
-
Save configuration - automatically writes to
%USERPROFILE%\.config\conductor\config.toml
See GUI Quick Start for detailed tutorial.
Manual Configuration (Advanced)
If you prefer to edit config.toml manually:
Config location: %USERPROFILE%\.config\conductor\config.toml
Create a minimal config:
# Create config directory
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.config\conductor"
# Create config file
@"
[device]
name = "Mikro"
auto_connect = true
[[modes]]
name = "Default"
color = "blue"
[[modes.mappings]]
description = "Test mapping - Copy"
[modes.mappings.trigger]
type = "Note"
note = 12
[modes.mappings.action]
type = "Keystroke"
keys = "c"
modifiers = ["ctrl"]
[[modes.mappings]]
description = "Gamepad A button - Paste"
[modes.mappings.trigger]
type = "GamepadButton"
button = 128 # A/Cross/B button
[modes.mappings.action]
type = "Keystroke"
keys = "v"
modifiers = ["ctrl"]
[[global_mappings]]
description = "Emergency exit (hold pad 0 for 3 seconds)"
[global_mappings.trigger]
type = "LongPress"
note = 0
hold_duration_ms = 3000
[global_mappings.action]
type = "Shell"
command = "taskkill /IM conductor.exe /F"
"@ | Out-File -FilePath "$env:USERPROFILE\.config\conductor\config.toml" -Encoding utf8
This creates a basic configuration with:
- One mode (Default)
- One MIDI test mapping (pad 12 = Ctrl+C)
- One gamepad test mapping (A button = Ctrl+V)
- One emergency exit (hold pad 0 to quit)
Hot-reload: The daemon automatically reloads config within 0-10ms when you save changes.
Running Conductor
Using the GUI
# Launch the GUI (starts daemon automatically)
conductor-gui
The GUI provides:
- Real-time event console
- Visual configuration editor
- Device status monitoring
- Daemon control (pause/resume/reload)
Using the Daemon
# Run in foreground
conductor --foreground
# Run in background
Start-Process conductor
# Check status
conductorctl status
# Control daemon
conductorctl reload # Reload configuration
conductorctl stop # Stop daemon
Auto-Start on Login
Option 1 - Scheduled Task:
# Create scheduled task (run as Administrator)
$action = New-ScheduledTaskAction -Execute "C:\Program Files\Conductor\conductor.exe"
$trigger = New-ScheduledTaskTrigger -AtLogon
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive -RunLevel Highest
Register-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -TaskName "Conductor Daemon" -Description "Auto-start Conductor daemon on login"
Option 2 - Startup Folder:
# Create shortcut in Startup folder
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\Conductor.lnk")
$Shortcut.TargetPath = "C:\Program Files\Conductor\conductor.exe"
$Shortcut.Save()
Troubleshooting
Build Errors
Error: link.exe not found
Solution: Install Visual Studio Build Tools:
- Download from https://visualstudio.microsoft.com/downloads/
- Install “Desktop development with C++” workload
- Restart terminal
Error: could not compile 'windows-sys'
Solution: Update Rust toolchain:
rustup update
cargo clean
cargo build --release
Runtime Errors - MIDI
Error: No MIDI input ports available
Solution:
- Check USB connection
- Open Device Manager and verify device appears
- Install device drivers
- Restart Windows
Error: Failed to open MIDI device
Solution:
- Close other MIDI applications (DAWs, etc.)
- Disconnect and reconnect device
- Restart Windows
- Try different USB port
Runtime Errors - Game Controllers
Error: Gamepad not detected
Solution:
- Open Game Controllers (joy.cpl) and verify controller appears
- Test controller in Properties dialog
- Check battery level (wireless)
- Try USB connection instead of Bluetooth
- Run Conductor as Administrator (temporary test)
- Check debug output:
$env:DEBUG=1; conductor --foreground
Error: Gamepad buttons not responding
Solution:
- Use MIDI Learn to discover correct button IDs
- Verify button IDs are in range 128-255 (not 0-127)
- Test controller in joy.cpl
- For PlayStation controllers, try DS4Windows
- Check that gamepad appears in
conductorctl status
Error: Analog stick not working
Solution:
- Check axis IDs in joy.cpl Properties
- Verify axis IDs match config (128-133)
- Check dead zone settings
- Calibrate controller in joy.cpl
- Use button triggers instead of analog for precise control
Bluetooth Gamepad Issues
Controller not pairing:
- Open Settings → Bluetooth & other devices
- Remove old pairings
- Put controller in pairing mode
- Pair as new device
- Test in joy.cpl
Controller disconnects randomly:
- Check battery level
- Update Bluetooth drivers
- Move USB Bluetooth adapter away from other USB 3.0 devices
- Use USB cable instead
Controller lag or latency:
- Use USB cable for lowest latency
- Use Xbox Wireless Adapter instead of Bluetooth
- Update controller firmware
- Close background applications
Windows Firewall
If running Conductor across network (advanced):
# Allow Conductor through firewall
New-NetFirewallRule -DisplayName "Conductor" -Direction Inbound -Program "C:\Program Files\Conductor\conductor.exe" -Action Allow
Next Steps
Now that Conductor v3.0.0 is installed and running:
For GUI Users
- Learn the GUI: Read GUI Quick Start Guide
- MIDI Learn Tutorial: See MIDI Learn Mode
- Device Templates: Check Using Device Templates
- Per-App Profiles: Set up Application-Specific Profiles
- Gamepad Setup: Read Gamepad Support Guide (v3.0+)
For CLI Users
- Daemon Control: Read Daemon & Hot-Reload Guide
- CLI Reference: See conductorctl Commands
- Manual Configuration: Check Configuration Overview
- Advanced Actions: Explore Actions Reference
For All Users
- Gamepad Support: Gamepad Support Guide (v3.0+)
- Troubleshooting: Common Issues
- Diagnostic Tools: Debugging Guide
Getting Help
If you encounter issues:
- Check Common Issues
- Use Diagnostic Tools
- Enable debug logging:
$env:DEBUG=1; conductor --foreground - Check Event Viewer for errors
- File an issue on GitHub with:
- Windows version
- Device model (MIDI or gamepad)
- Error messages
- Output of
cargo --versionandrustc --version
Last Updated: November 21, 2025 (v3.0.0) Windows Support: Windows 10 (1903+), Windows 11, Server 2019+ Architecture: x86_64 Input Support: MIDI Controllers + Game Controllers (HID)