• James

Building your own Arduino-based Midi Controller

In the MC6 v2.2 firmware, we added Midi processing capabilities, where you can call presets or switch banks with a simple external Midi controller. If you have got some basic soldering and DIY skills, you could easily build an 8 switch controller to extend the functionalities for your MC6.

What you will need to do is to drill the enclosure and solder the switches to the Arduino board. I will not be going through the full details on how to build the controller here. You could very easily find great information just by googling online. What I will cover here is the components I used as well as sharing the code for this controller.


For the micro-controller, I chose an Arduino Micro simply because of its small board area and because it has a 9v regulator on-board, which minimizes the number of components I need to solder. There are also through-holes where I can easily solder my wires directly to the board. You could also use an Arduino Uno for this, but IMO it is more suited for prototyping with a breadboard.

Other parts

For the switches, I would go with the SPST soft touch momentary switches. Those are very durable, silent and has little moving parts. The code we wrote for this Midi controller is suited for momentary switches.

The code also has a LED function that turns on a LED for x seconds when any switch is pressed. You can either ignore that or add a LED into your build.

You can easily all the parts from online stores. My favorite place for getting components in small quantity is from Tayda Electronics. If you are in the US, you could get your stuff from Mammoth Electronics as well. Check them out!

You will also need a DIN5 Midi Jack, likely a mounted on piece like in the image below. The screw size required is M3. You can find them from online distributors like Element14 (or Farnell) or Mouser, although there might be a minimum order you need to fulfill.


Each SPST switch has 2 lugs. The soldering you will need to do is simply connecting one lug to ground and another lug to an I/O port on the Arduino board. You'll also need to solder the + and - from the 9v input. Vin connects to + and Grd connects to -.

You also need to wire the Serial pins from the Arduino Board to the DIN5 Jack. There are Tx and Rx pins on the Arduino Board. Tx is a Transmit pin while Rx is a Receive pin. You can see the labels on the Micro and Uno. Add a 220ohm resistor between a 5v source and Pin4 on the DIN5 jack. You can get the 5v power from the Arduino board itself. Be sure to use the 5v pin instead of the 9v pin! Pin5 on the DIN5 jack simply connects to the Tx pin on the Arduino.

Schematic from http://www.tigoe.com/

Midi Messages for the MC6

Here are the messages that the MC6 will respond to, and the functions that can be controlled:

1. PC#0 - PC#29: Jump to Bank 1 to Bank 30

2. CC#0: Bank Down

3. CC#1: Bank Up

4. CC#10 - CC#15 to activate Presets A - F

5. CC#16 - CC#21 to activate Presets G - L


The Arduino code for this project can be viewed here.

The code simply reads each switch (with a debounce function) and then sends a pre-defined programmed message when a switch is pressed. In the code, we have set it up to control the bank up/down functions as well as to call presets G - L on each switch.


With this controller, you can now have dedicated bank up/down buttons, as well as 6 extra buttons to all Presets G - L. That gives you a total of 12 presets per bank with the MC6!

Cost breakdown (in USD)

Arduino Micro - $19.80 from Arduino Webstore

8 x SPST Soft Touch switches - $15.92 from Tayda Electronics

Din5 Midi Jack - $2 from Element14

1032L Enclosure - $12.90 from Mammoth Electronics

Misc items like LED, resistor, 9VDC Jack and wires - $3

Total cost: About $50

Please feel free to leave us any feedback or questions!

#midicontroller #diy #tutorial



User Forum

  • Instagram - White Circle
  • Facebook - White Circle
  • YouTube - White Circle

© 2020 Morningstar FX Pte Ltd