Supported MIDI Bindings
We currently support binding midi controls to:
- Master Dimmer, Strobe Rate, Live BPM, Live Beam Speed
- Live Effects (Strobe, Blackout, Blinder, Freeze and Fog)
- Effect Cues
- Live Edits
- Midi Clock (See Midi-Clock for more info)
Remember, if you setup a live edit with a binding to a Live Effect key (for example Strobe) then it will also fire when triggered from Midi!
The Master Dimmer, Strobe Rate, and BPM should be bound to an Encoder or Fader only, a single button will not work as expected.
Live Beam Speed will override the Beam Speed set in the currently running Effect Cue, it will apply to ALL Groups in the Effect Cue, and be reset once the cue is stopped or another cue started.
Binding MIDI Controls
To bind a button, simply place your cursor in the box for the command you wish to program, and then press the key on your midi device you wish to bind to that command.
Remember to click Save on the section once you have filled in all the commands you wish to use. Each section is saved separately.

Network MIDI (RTP-MIDI) Support
As of DMXDesktop v1.0.30, you can now connect to Network MIDI (RTP-MIDI) devices over your local Wi-Fi or LAN. This makes it easy to control DMXDesktop wirelessly or from other networked devices-no USB cables required.
Compatible with Popular Tools
DMXDesktop now works seamlessly with any device or software that supports RTP-MIDI, including:
- Ableton Live – for triggering lighting cues alongside your music
- Stage Traxx 3 – commonly used in live performance setups to send MIDI cues
- Midiclock – for syncing tempo over the network
- TouchOSC/ Lemur / Playtime Engineering / iOS apps – as control surfaces
- Any Mac, PC, or mobile device with RTP-MIDI capability
How It Works
- Make sure both DMXDesktop and your MIDI-capable device/app are on the same Wi-Fi or wired network.
- On macOS, open Audio MIDI Setup > Network and create or join a session.
- On Windows, use the free rtpMIDI driver by Tobias Erichsen to set up a session.
- Once connected, DMXDesktop will list your network MIDI session as a standard MIDI input.
💡 This is ideal for wireless MIDI controllers, syncing with show control software, or running fully automated cue-based setups.
Understanding How DMXDesktop Binds MIDI Messages
DMXDesktop is designed to be flexible, allowing you to use a wide variety of MIDI controllers. To do this effectively, it interprets different types of MIDI messages for different kinds of controls.
Standard Controls: Buttons vs. Faders/Knobs
There are two primary ways MIDI controls are handled:
- Buttons (Note On/Off Messages): For any action that is a simple toggle (like turning a strobe on or off, or activating a specific cue), the application expects a Note On message to activate and, in some cases, a Note Off message to deactivate. Most MIDI controllers with pads or buttons send these types of messages by default.
- Variable Controls (Control Change - CC Messages): For any control that requires a range of values (e.g., setting the master dimmer, adjusting the BPM, or changing the strobe rate), the application expects a Control Change (CC) message. These messages send a value between 0 and 127, which DMXDesktop intelligently maps to the appropriate range for that control (e.g., 0-255 for a dimmer, or a specific BPM range).
Advanced Binding: Using Faders or Knobs as Buttons
We understand that some MIDI devices, especially foot pedals, may only send Control Change (CC) messages, even for their "buttons". To support these devices, you can bind a CC-sending control to functions that typically expect a button, such as Live Edits and Effect Cues.
When you do this, DMXDesktop interprets the CC message values as follows:
- A value of 127 is treated as ON.
- A value of 0 is treated as OFF.
- Any other value between 1 and 126 is ignored.
Behavior for Live Edits
- Latching (Default): When you press the control (sending a value of 127), the Live Edit will toggle its state (turning on if it was off, and off if it was on).
- Momentary: If you have configured the Live Edit as "Momentary" in the binding settings, pressing the control (value 127) will activate it, and releasing it (value 0) will deactivate it.
Behavior for Effect Cues
- When a CC message is bound to an Effect Cue, it is always an "ON" trigger.
- Sending a value of 127 will start the selected cue.
- This binding cannot stop the cue. To stop cue playback, you must create a separate MIDI binding (for another button, fader, or knob) and assign it to the "Stop Effect Cue" function.
Manually Mapping MIDI Controls
If you prefer to manually assign MIDI controls instead of using Direct Button Mode, you can do so by entering the MIDI message details directly into the input fields.
Valid MIDI Message Ranges
You can specify MIDI messages using the following ranges:
- MIDI Note On messages:
- Status byte range:
144to159(MIDI channels 1–16) - Note number:
0to127
- Status byte range:
- Control Change (CC) messages:
- Status byte range:
176to191(MIDI channels 1–16) - Controller number:
0to127 - Value:
0to127
- Status byte range:
Understanding Manual Button Mapping
When entering a Note On message manually (e.g., 144-50 for MIDI channel 1, note 50), DMXDesktop will automatically calculate the corresponding "Note Off" message by reducing the status byte by 16. This is based on the MIDI standard where:
144= Note On (Channel 1)128= Note Off (Channel 1)
So:
- ON =
144-50 - OFF (assumed) =
128-50
⚠️ When mapping manually, only the ON message is recorded. DMXDesktop will assume the OFF message is the same note with a status byte reduced by 16.
Difference from Direct Button Mode
- Direct Button Mode captures both ON and OFF messages from your MIDI device automatically when you press and release a button.
- Manual Mapping requires you to enter the ON value yourself. The OFF value is inferred and not captured from the device, which may lead to issues if your device sends non-standard OFF messages (e.g., velocity 0 Note On instead of actual Note Off).
Please Note: If you experience difficulties opening the midi device, please make sure you are not running other software which may have already exclusively opened the midi device, this is particularly a pottential issue if you start some DJ Software before you open DMXDesktop
As of v1.0.27 you may also configure Midi Feedback, to control the backlights of some devices
Prefer labelled keys? Use a Stream Deck
A MIDI controller gives you physical faders and knobs, which is what you want for riding levels. If instead you want labelled keys that rename themselves with your rig, DMXDesktop also has a first-party Elgato Stream Deck plugin from v1.0.52, with 34 actions covering live control, effect cues, Programmer cue stacks, QuickShow, overrides and DJ transport.
The two are not exclusive. DMXDesktop drives both at the same time, so a common setup is a MIDI surface at the desk and a Stream Deck out on the floor. See setup and connection and the actions reference.
Which controllers get extra support
v1.0.52+
Any class-compliant MIDI device works, and you can map anything to anything. That has not changed. What is new is that a shortlist of controllers gets device-specific integration on top: pad colours, displays, motorised faders and feedback back to the unit.
- SoundSwitch Control One (new) - per-pad colours, the visualiser ring, the OLED status screen showing live status and the Ableton Link display, and both of its DMX outputs. It is a lighting interface and a control surface in the same unit.
- Akai APC Mini MK2 - one colour when the bound effect is off and a different colour when it is on, so you can tell at a glance what is running.
- Akai APC Mini (original) - the Scene Launch buttons down the right-hand side now light up properly when you map something to them. They used to show correctly on screen and stay dark on the unit itself. The colour picker also offers only the colours that model can actually show, instead of a full palette it cannot produce.
- Pioneer DJ DDJ-FLX4, Pioneer DJ DDJ-1000 and Numark DJ2GO2 Touch - input from these has been restored.
- Also mapped in detail: Akai APC40 MK2 and MPD218, Behringer X-Touch, and Native Instruments Traktor Kontrol F1, Maschine Jam and Maschine MK3.
A controller that is not on that list still binds to everything. It simply does not get the colour and display extras. The full picture is in the hardware compatibility list.
Pad colours, blink and default mappings
v1.0.52+
Each pad can carry two colours: one for when the bound thing is off, and a different one for when it is on. Right-click any pad in the MIDI visualiser to set them.
Any pad can also be set to blink, in whichever colour you gave it, so the ones you reach for most stand out on a dark stage.
Supported controllers can now arrive with a sensible default mapping already in place, so a new unit does something useful before you map anything. The SoundSwitch Control One ships with a full default map. Seeded bindings are ordinary bindings, so rebind or delete any of them you do not want.
On a controller with a limited palette the colour picker only offers the colours that unit can genuinely produce. Single-colour buttons, such as the row down the side of an APC Mini, can only be on or off.
The Audio Apps tab
v1.0.52+
The DJ Player tab is now Audio Apps. The four app switches sit at the top, with separate panes underneath for Music Player and Live Wire, rather than one long list where the deck controls and everything else ran together.
Bindings are grouped by the app they belong to, so finding the control you want no longer means scrolling past every other app.
Driving Live Wire from your pads
v1.0.52+
Live Wire, which is on the Standard and Pro plans, can be bound to pads like any other source.
- Live Wire mode. Band, DJ and Ambient behave as one group with exactly one pad lit, showing the mode that is actually running. Pressing one while Live Wire is not running starts it in that mode.
- Live Wire Hold. One pad, toggling. It shows held, listening, or unavailable when the mode has no standby look to hold.
The active mode lights in a different colour from the pad that says which audio app is running, so on a controller with both bound you can tell the two apart at a glance. Devices with a smaller palette use the nearest distinct colour they have.
Single-colour buttons, such as the row down the side of an APC Mini, can only show on or off. A Hold pad placed there cannot show all three states, so put Hold on the main grid.
Half and double tempo
v1.0.52+
Half and double tempo is one setting that the desk, MIDI pads, OSC and the mobile remote all read and write, so they can no longer disagree about the speed the rig is running at.
On a controller the three pads behave as one group with exactly one lit at a time, and Normal Tempo never blinks. A pad flashing all night while nothing is engaged is just noise on a dark stage.
Settings gains its own Tempo Control card for the three bindings. They used to sit in the middle of the Global Controls grid, which made them look like three independent switches rather than one value with three positions.
My controller has stopped responding
v1.0.52+
A binding is learned against a specific MIDI channel. If your controller or your DAW moves to another channel, the bindings stop responding, and nothing used to tell you so. The log was written as messages arrived, before the binding was looked up, so you could watch every note come in and reasonably conclude the fault was further down.
The MIDI log now shows the channel each message came in on, and marks any message that resolved to no binding. If your notes are arriving on channel 2 and your bindings were learned on channel 1, the log says so.
DJ controls are mapped automatically and have no binding of their own, so they are never flagged.
Fixed in v1.0.52
v1.0.52+
- The MIDI Feedback switch could show off while feedback was working. On a rig that had never touched the setting, the switch read off although pad lighting was on. Turning it on from there wrote the opposite, and from that point no pad on any surface updated its colour again. Bound pads still lit at their resting colour when a controller connected, so the surface read as stuck rather than off.
- Cloning a controller's bindings dropped some of them. Copying your mappings from one controller to another silently lost every position preset and colour palette binding, along with any custom pad colour and blink setting. The rows were still created, so the bindings appeared in the list and on the unit and simply did nothing.
- "MIDI is unavailable" on a machine with no MIDI hardware. Windows only starts its MIDI service when something asks for it, so on a rig with nothing plugged in the app gave up waiting too early and declared the whole subsystem broken. It waits properly now, and the notice that followed no longer reappears on every page.

