Configuration files for using the M-VAVE SMC-PAD (16-pad wireless MIDI pad controller) with VirtualDJ.
- Add 2 Decks Devices.xml.
- Add Mappers.xml.
- Add docs to describe the mapper.
- ...
This repository provides Device definitions and Mapper files for controlling VirtualDJ with the M-VAVE SMC-PAD.
The SMC-PAD is a 16-pad wireless MIDI controller featuring:
- 16 RGB back-lit pads (velocity + aftertouch sensitive)
- 8 endless 360° encoders
- 5 assignable buttons:
LEFTRIGHTPLAYSTOPRECORD - Hardware buttons (
BT,PAD BANK,KNOB BANK,SHIFT,Note Repeat) — not mappable (see FAQ)
Note: the RGB pad lighting is not controllable via MIDI (idle color is set in the MidiSuite software; pads flash white when pressed). This is a hardware limitation, not a mapping issue.
VirtualDJ uses two kinds of XML files:
| File | Location | Purpose |
|---|---|---|
| Device definition | Documents\VirtualDJ\Devices\ |
Defines the hardware elements (pads, encoders, buttons) and how the controller is detected (VID/PID). |
| Mapper | Documents\VirtualDJ\Mappers\ |
Maps the defined elements to VDJ actions. |
This project is based on the SMC-PAD default preset (slots 3–8 of its 8 preset slots), with one required change: the encoders' type is set to CW (relative) instead of the factory-default CC (absolute). Because the encoders are physically endless (no end stops), the relative CW type is the correct match — the default absolute CC type would wrap/jump the value.
MIDI layout used (default preset):
| Control | Type | Channel | Values |
|---|---|---|---|
| Pads 1–16 | Note On/Off | CH10 | 36–51 (mirror-reordered for DJ convention) |
| Pad velocity | Note On velocity | CH10 | 0–127 → 0–100% slider |
| Encoders 1–8 | Relative CC | CH1 | 30–37 (reordered) |
| Buttons | CC push | CH1 | 25–29 (LEFT–RECORD), 127 = press, 0 = release |
Key implementation points:
- Pads are vertically mirrored so that pad 1 is top-left (DJ convention) instead of bottom-left (SMC-PAD factory order).
- Encoders are reordered to match conventional DJ knob layout.
- Pad velocity is exposed as an extra
<slider>element per pad, so hitting a pad harder can drive continuous parameters (filter, effect amount, etc.).
- Device definition — from
devices/, pick one based on your preferred deck layout (e.g.decks4= 2 sides × 2 layers,decks2= 2 decks). Seedevices/README.md. - Mapper — from
mappers/<same-layout>/, pick one based on your preferred button/function layout. Each mapper folder has its own README describing the button layout.
- Install the official MidiSuite software and connect the SMC-PAD.
- For each of the 8 encoders, set Type =
CW(relative). Keep the Channel / Curve / CC number unchanged.- The factory default type is
CC(absolute), which does not match the endless knobs; this project requiresCW.
- The factory default type is
- Copy the chosen Device XML into:
Documents\VirtualDJ\Devices\ - Copy the chosen Mapper XML into:
Documents\VirtualDJ\Mappers\ - Restart VirtualDJ.
- Open Settings → Controllers, find the SMC-PAD and select the mapper.
The following keys are hardware-encoded — they send no MIDI message and therefore cannot be mapped:
BT— Bluetooth on/offPAD BANK— toggles pads between notes 36–51 and 52–67KNOB BANK— toggles encoders between CC 30–37 and 38–45SHIFT— modifier for presets / velocity curve / transpose / octaveNote Repeat— internal note-repeat function
Only the 16 pads, 8 encoders, and 5 buttons (LEFT RIGHT PLAY STOP RECORD) are mappable. This project intentionally does not define the second bank (notes 52–67 / CC 38–45).
Symptom: VirtualDJ shows three devices, e.g. SMC PAD, SMC PAD (MIDI IN 1), SMC PAD (MIDI IN 2).
Cause: the SMC-PAD exposes multiple MIDI ports, and all ports share the same USB VID/PID. VirtualDJ treats each MIDI port as a separate controller, so the same definition matches all of them.
Solution: in Settings → Controllers, set the Mapping of the extra ports to None (or use the power toggle next to each entry), keeping only the port that carries the controller data. This is normal behavior for multi-port MIDI devices.
ForGithub/
├── README.md ← this file (English)
├── README.zh-CN.md ← Chinese version
├── LICENSE ← MIT license
├── devices/ ← Device definitions (multiple)
│ ├── README.md ← how to choose a device definition
│ ├── SMC-PAD_decks4.xml
│ ├── SMC-PAD_decks2.xml
│ └── ...
├── mappers/ ← Mapper files (grouped by device layout)
│ ├── README.md ← how to choose a mapper
│ ├── decks4/
│ │ ├── README.md ← button/function layout for this set
│ │ ├── SMC-PAD_decks4_basic.xml
│ │ └── ...
│ └── decks2/
│ ├── README.md
│ └── ...
└── docs/ ← supplementary documents
└── layout.md ← pad/knob/button layout reference
Released under the MIT License. See LICENSE.