Skip to main content
Advanced engineering
Deckmatics Academy article cover: Building a MIDI Controller for Stems or FX
Credits: Deckmatics

Deckmatics

Deckmatics vector SVG generated on this page.

Deckmatics Academy article cover: Building a MIDI Controller for Stems or FX
MIDI mapping, mods and homebrew · Advanced · 6 min read

Building a MIDI Controller for Stems or FX

Decisions before buying hardware: control types, LEDs, screens and driver-free USB MIDI compatibility, with firmware logic and where to start.

Eventually, further mapping changes stop solving anything. You have used SHIFT layers, reassigned pads and established that software accepts your messages. Yet you still lack four stem faders, an FX amount knob you can grab without changing layers and a way to see what is active without looking at the laptop.

Then the question is what hardware is missing rather than which MIDI message to assign. This guide covers decisions: what to control, with which components and feedback, and under what compatibility requirement. Soldering is deliberately outside its scope: the decisions determining usefulness come before buying the first part.

Why a Custom Controller Makes Sense

Mapping extends what you have; it does not invent controls. Two free FX knobs cannot provide four simultaneous gestures through any assignment. Three gaps recur:

  • Stems: each stem needs controls. Four volume faders and four mute buttons offer more gestures than a SHIFT layer can supply.
  • FX: amount and activation together, without changing layer or page, with visible state.
  • State: checking what is active at a glance, solved with LEDs or a screen.

Another advantage deserves stating: you touch no commercial equipment. No third-party firmware, modifications, warranty at stake or bricking risk. Modification risks do not apply: you are building, not modifying.

Design Decisions Before Buying Anything

Before adding anything to the cart, resolve four questions in order, because each affects the next:

  1. How many controls, and which families? A button differs from an encoder: both the message and booth behaviour change.
  2. Do you need LEDs? They add wiring, resistors and firmware, but distinguish knowing from assuming.
  3. Do you need a screen? The most effort-intensive decision comes after the first two.
  4. Do you want driver-free compatibility? This determines the board and the rest of the project. A wrong choice means redoing it.

The following table summarises the four control families and their uses.

Choosing a Control Family for Each Function
Control What It Is Usual Message Use
Push button Momentary contact without state memory.Note On and Note Off, or Control Change.Mute stems, trigger cues, activate FX.
Button with LED A button plus an LED controlled by software.As for a button, plus the return LED message.States you need to see without watching a screen.
Potentiometer Short travel, absolute value tied to position.Control Change values from 0 to 127.EQ, filter, FX amount, stem blending.
Fader Long travel, absolute value and finer reading.Control Change values from 0 to 127.Volume per stem, sends, FX mixing.
Encoder Turns without stops and has no unique position.Relative Control Change, or increment/decrement.Navigate lists, adjust cumulative parameters.

The first column determines the message; the message determines mapping. Choose the family for the function, never whatever is left in a drawer.

Buttons, Knobs, Faders and Encoders: Choosing

A push button is a momentary contact with no state memory; software decides whether it toggles or triggers. It is the direct choice for muting stems and toggling FX.

A knob (potentiometer) and fader are absolute controls: physical position is value. That is convenient until software value differs from position; then soft takeover matters and should inform the layout. Both send Control Change values from 0 to 127. If you need resolution beyond 127 steps, paired messages provide 14 bits at the cost of doubled traffic.

An encoder turns without stops. Decide whether it is absolute, mapped to a full range, or relative, sending increments and decrements that software adds. For navigating lists or adjusting cumulative parameters, relative is what you want.

Two warnings: control addresses are shared resources, and the standard reserves 120 to 127 for channel mode messages, so do not use them for your controls. A button matrix handling simultaneous presses needs diodes, or firmware will read ghost combinations you never pressed.

LEDs and Screens: When They Help

An LED is not decoration. In the booth, an illuminated button determines whether you know a stem is muted or must check. But each LED needs management: a resistor, wiring space and firmware.

The update method matters. Control LEDs by sending MIDI back to the controller, preferably from functions reflecting actual software state rather than button handlers. Lighting an LED from its button makes it lie when state changes through a keyboard shortcut, another controller or automatic action.

A screen is another league. Standard Control Change carries no text, so a screen needs SysEx or a custom protocol, relying on each program supporting it. Start with LEDs; add a screen once the device works and you know precisely what information is missing. A reasonable alternative displays only what you send yourself, without waiting for software to report it.

Driver-Free Compatibility: The Board-Deciding Requirement

A driver-free controller presents itself as a standard MIDI device: the operating system already includes the driver, so there is nothing to install. The industry calls this USB MIDI class-compliant. Write it as a requirement before choosing anything. Three practical consequences:

  • It works the same in Windows, macOS, Linux, Android and iOS without installers or administrator permissions.
  • Any software accepting MIDI inputs sees it, not only today’s choice.
  • You do not rely on somebody maintaining a driver for your invention.

A device needing its own driver is tied to supported systems and how long its author maintains it. For a DJ controller sending only short messages, there is no reason to accept that dependency. Existing compliant platforms state it in their feature lists; look there before buying.

In practice, choose a board with native USB and firmware enumerating as a standard MIDI device. One unable to present itself that way will require an adapter or custom driver, losing the project’s main advantage.

Firmware Logic: Read Inputs, Send MIDI, Manage LEDs

Required firmware does three things in a loop, never blocking.

Read inputs. Buttons, knobs, faders and encoders. A real button creates several changes within milliseconds: debounce them. A potentiometer produces noisy readings: smooth them or send only when change exceeds a threshold. An encoder supplies two offset signals, not a value; convert them into a direction. Multiplexers and matrices help when controls outnumber pins.

Send MIDI. Each control has a message: Note On/Off for buttons, Control Change for continuous controls. Allocate channels from the start; separating by deck simplifies mapping. Avoid flooding the port: a fader sending every fluctuation saturates the stream and delays other controls.

Manage LEDs. The device is bidirectional: it receives as well as sends. Firmware retains each LED’s state and updates it on software messages. An LED switched inside the button handler loses synchronisation when state changes elsewhere.

One rule summarises all three: no waits. If the loop stops for a slow sensor or response, the controller feels dead.

Starting With an Existing Platform

Writing firmware from scratch is possible and gives full control. It also creates maintenance obligations: USB descriptors, debouncing, MIDI parsing, LED management and recompiling and reflashing for every change.

Alternatively, use a platform already solving that layer. OpenDeck connects components to a board and lets a web configurator customise every aspect: you neither design the circuit nor program firmware. It supports prototyping and custom controller development, and its official page declares driver-free USB MIDI and universal Windows, macOS, Linux, Android and iOS support.

When does it fall short? A screen with a custom protocol, an unsupported format or layout, or logic the configurator cannot express. Two honest options remain: accept the limit or take on custom firmware and all its implications.

Before committing to a platform, check continued maintenance, licence and community responsiveness. Prototype on a breadboard before machining anything: the enclosure accounts for most of a design mistake’s cost.

Next Step

If an existing platform appeals, learn its details: its problem, configuration and suitable projects. That is covered by opendeck-controlador-diy, the guide closing this homebrew hardware block.

If message allocation per control remains unclear, start with que-es-midi-mapping-dj; for light-based feedback, see leds-rgb-mapping-dj.

Frequently asked questions

How do I know how many controls I need?

Count simultaneous gestures rather than parameters. Moving four stem volumes together and muting each requires eight dedicated controls. Do that count before buying anything.

Why insist so much on no drivers?

The operating system already includes the driver: no installation, no administrator permissions, and any software accepting MIDI inputs sees it. A board unable to present as a standard MIDI device loses that advantage.

Can I start without LEDs and add them later?

Yes, the recommended route. LEDs add wiring, resistors and firmware. Add them after messages are reliable and you know which states need visibility.

Is a screen worthwhile on a homebuilt controller?

Only once the project works and you know what information is missing. Standard Control Change carries no text: a screen needs SysEx or a custom protocol, tying it to each program's support.

Does building a controller carry the risks of modified firmware?

No. You modify no commercial equipment: no third-party firmware, warranty implications or bricking risk. You build with your own components, so risks are those of any electronic prototype.

Do I need soldering skills to decide the design?

Not to decide. This guide covers prior decisions: number and type of controls, feedback and compatibility requirements. Execution is another phase; settle design beforehand.

Continue learning

Next lessonWhat is OpenDeck and how can it build a DJ controller?

OpenDeck combines a board, firmware and web configurator for building a MIDI controller without circuit design or programming: driver-free USB MIDI.

Sources

  1. OpenDeck — Wiki Official documentation Shantea Controls · accessed on

    Platform documentation describes prototyping and custom MIDI controllers with a web configurator and a board receiving components, supporting starting from an existing base. Driver-free claims rely on the official product page rather than this wiki.

  2. Shantea Controls — An Easy Way to Build MIDI Controllers Official documentation Shantea Controls · accessed on

    Official product and compatibility source: connect components to an OpenDeck board and customise through a web configurator rather than circuit design, programming and unnecessary troubleshooting. Features declare driver-free USB MIDI and universal Windows, macOS, Linux, Android and iOS support, an online configurator without installation, buttons, potentiometers, FSR and encoder inputs, single-colour and RGB LEDs, 14-bit support and Nextion touchscreens. This informs using an existing platform.

  3. MIDI 1.0 Control Change Messages (Data Bytes) Technical standard MIDI Association (MMA) · accessed on

    Standard reference for component messages: continuous controls use control values from 0 to 127; control numbers 120-127 are reserved for Channel Mode Messages. Supports ranges and avoiding those addresses for custom controls.

  4. Mixxx Wiki — MIDI Scripting (Controller Scripting) Community (additional context) Mixxx (proyecto de código abierto) · accessed on

    Explains controlling LEDs by sending MIDI back, preferably from callbacks reflecting actual state instead of button functions. This is feedback design a custom controller also needs, supporting the warning that a button-driven LED eventually lies.

Last technical review: 29/09/2026. Please report any errors so they can be corrected.