This project provides working configuration files to use the Pioneer DDJ-200 MIDI controller with VirtualDJ software, running via Wine (using Bottles) on a Linux operating system.
The goal is to offer a simple setup and avoid the long hours of troubleshooting encountered during setup on Bazzite.
This configuration was successfully tested on:
- OS: Bazzite (Fedora-based Linux)
- Software: VirtualDJ 2025 (b8472) installed via Bottles (Flatpak)
- Controller: Pioneer DDJ-200 (connected via USB)
-
Download the files from this repository. You can clone the repository or download the
SIMPLE_MIDI_0_0.xmlfiles individually:- The file in the
devices/folder - The file in the
mappers/folder
- The file in the
-
Place the files in the VirtualDJ folders. Copy each file into the corresponding folder inside your Wine "bottle". Replace
[YOUR_BOTTLE]with your actual bottle name:-
Device File: Copy
devices/SIMPLE_MIDI_0_0.xmlto:~/.var/app/com.usebottles.bottles/data/bottles/[YOUR_BOTTLE]/drive_c/users/steamuser/AppData/Local/VirtualDJ/Devices/ -
Mapper File: Copy
mappers/SIMPLE_MIDI_0_0.xmlto:~/.var/app/com.usebottles.bottles/data/bottles/[YOUR_BOTTLE]/drive_c/users/steamuser/AppData/Local/VirtualDJ/Mappers/
-
Bottles needs permission to access your USB hardware.
- Bus: Ensure USB is enabled. (device=usb)
- Via Flatseal: Select Bottles, go to the
Devicesection and enableUSB Devices (device=usb). - Via Terminal:
flatpak override --user --device=usb com.usebottles.bottles
Important
Custom Pad & Shift Behavior This configuration is heavily customized for a Stems and Loops workflow. It deviates from the factory default:
- Performance Pads: Hardcoded to Stems (Mute/Unmute Vocal, Instru, Bass, etc.) instead of Sampler or Hot Cues.
- SHIFT + Pads: Mapped to Auto Loops (8, 16, 32, 64 beats). They do NOT trigger the default secondary actions.
If you need the Sampler or standard Hot Cues, this mapping is not suitable without manual XML modification.
MIDI Documentation: DDJ-200 MIDI Message List
- To prevent the interface from flickering under Wine : launch VirtualDJ -> Settings -> OPTIONS.
- Search for
experimentalSkinEngine. - Set it to No.
- Don't forget to select the SIMPLE_MIDI_0_0 file in the controller Edit mapping
| Physical Control | VDJ Action |
|---|---|
| PLAY / PAUSE | play_pause (LED feedback included) |
| CUE | cue_stop |
| SYNC | sync |
| SHIFT + SYNC | Reset pitch (pitch_reset) |
| PFL (Headphone) | pfl (pre-listening) |
| SHIFT + PFL | Load selected track (load) |
| JOGWHEEL (Top) | Scratch (touchwheel) |
| JOGWHEEL (Side) | Bend (jogwheel) |
| SHIFT + JOGWHEEL (Side) | Browse library (browser_scroll) |
| PADS 1-3 | Mute Stems (Vocal, Instrumental, Bass) |
| PADS 5-6 | Mute Stems (Kick, Hihat) |
| SHIFT + PADS 1-4 | Auto Loops (8, 16, 32, 64 beats) |
