Hey guys! I Hope you already enjoyed my previous project "Arduino CNC Plotter (mini drawing machine)" and you are ready for a new one, as usual I made this tutorial to guide you step by step while making this kind of super amazing low cost electronic projects which is the "Midi Controller".

During the making of this project, we tried to make sure that this instructable will be the best guide for you in order to help you if you want to make your own MIDI controller, so we hope that this instructable contain the needed documents.

This project is so handy to make specially after getting the customized PCB that we’ve ordered from JLCPCB to improve the appearance of our machine and also there is enough documents and codes in this guide to allow you create your midi controller easily.

We've made this project in just 3 days only, just three days to get all the needed parts and finish the hardware making and the assemble, then we have prepared the code to suit our project. Before starting let’s see first

What you will learn from this instructable:

Step 1: What Is a MIDI Controller

Picture of What Is a MIDI Controller

Picture of What Is a MIDI Controller

I was searching for this kind of instruments or a music related devices and I found some details about it across the internet regarding the description in Wikipedia "is a technical standard that describes a communications protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, computers, and related audio devices for playing, editing and recording music."

In addition, this kind of music device is based on two main parts which are the controller as a hardware and the music instruments player as a software and these parts should be connected somehow so each press on the hardware part should display a specific or a configured musical instrument note.

Step 2: The Hardware Part

Picture of The Hardware Part

Picture of The Hardware Part

Picture of The Hardware Part

Picture of The Hardware Part

Picture of The Hardware Part

In this tutorial we will take in charge the hardware part and we will create a Controller keyboard which has 12 push buttons for digital control and 6 potentiometers for an analog control so it is obvious that all the buttons will be used to display the notes and the potentiometers will control things like sound volume tone etc.

We have all these controllers connected to an Arduino Nano board which has all the necessary I/O pins to hold these inputs together, and through its USB connector it will be easy to send instructions from the controller to the software side, by the way I’ve picked my own Arduino nano from seeedstudio.com webstore where you can get this Arduino and more other electronic devices with some special offers, and I recommend this webstore as a supplier, so go there and check it there is lots of cool stuff out there.

For sure in order to make a better appearance for our MIDI controller, I have designed this box considering the size for the push buttons and the potentiometers and through a CNC laser cutting process I can produced the designed parts for my project.

Step 3: Circuit Diagram

Picture of Circuit Diagram

The heart of our Controller is an arduino Nano Dev board that will control the software part through some MIDI instructions, these isnstructions will be sent depending on the Inputs press. As I wrote in the project description section, we will use 12 arcade push buttons and 6 potentiometers, all these will be connected to Arduino considering the fuctionality of each controller.

The above circuit diagram show how to connect each controller to the board and there is a needed 1KOhm resistor out there for pull up so do not forget to use one, and I advice you to get back to this schematic while soldering all these components together to avoid any misus.

Step 4: The PCB Making

Picture of The PCB Making

Picture of The PCB Making

Picture of The PCB Making

Picture of The PCB Making

Picture of The PCB Making

Picture of The PCB Making

Picture of The PCB Making

Picture of The PCB Making

Picture of The PCB Making

About JLCPCB

JLCPCB (Shenzhen JIALICHUANG Electronic Technology Development Co., Ltd.), is the largest PCB prototype enterprise in China and a high-tech manufacturer specializing in quick PCB prototype and small-batch PCB production. With over 10 years of experience in PCB manufacturing, JLCPCB has more than 200,000 customers at home and abroad, with over 8,000 online orders of PCB prototyping and small quantity PCB production per day. The annual production capacity is 200,000 sq.m. for various of 1-layer, 2-layer or multi-layer PCBs. JLC is a professional PCB manufacturer featured of large scale, well equipment, strict management and superior quality.

Talking electronics

After making the circuit diagram I transformed it into a PCB design to produce it, in order to produce the PCB, I have chosed JLCPCB the best PCB suppliers and the cheapest PCB providers to order my circuit. with them reliable platform all what I need to do is some simple clicks to upload the gerber file and set some parameters like the PCB thickness color and quantity, then I’ve paid just 2 Dollars to get my PCB after five days only, what I have noticed about JLCPCB this time is the "out of charge PCB color" it means you will pay only 2 USD for any PCB color you choose.

Related download files

As you can see in the pictures above the PCB is very well manufactured and I’ve got the same PCB design that we’ve made for our main board and all the labels and logos are there to guide me during the soldering steps. You can also download the Gerber file for this circuit from the download link below in the case you want to place an order for the same circuit design.

Step 5: Ingredients

Picture of Ingredients

Now let’s review the necessary components that we need for this project, I'm using an Arduino Nano as mentioned above, it will be the heart of our Device. You will find below some recommended amazon links for the appropriate items

In order to create this kind of projects we will need :

★☆★ The necessary components ★☆★

- The PCB that we've order it from JLCPCB

- Arduino Nano : https://amzn.to/2WjS51Y

- 12 Arcade push buttons : https://amzn.to/2WjS51Y

- 4 Slide potentiometers : https://amzn.to/2WjS51Y

- 2 rotory potentiometers : https://amzn.to/2WjS51Y

- 1KOhm resistor : https://amzn.to/2WjS51Y

- Some header connetcors : https://amzn.to/2WjS51Y

Step 6: Electronic Assembly

Picture of Electronic Assembly

Picture of Electronic Assembly
Picture of Electronic Assembly

Picture of Electronic Assembly

Picture of Electronic Assembly

Picture of Electronic Assembly

Now everything is ready so let’s start soldering our electronic components to the PCB and to do so we need a soldering iron and a solder core wire.

Safety first

Soldering Iron

  • Never touch the element of the soldering iron....400°C!
  • Hold wires to be heated with tweezers or clamps.
  • Keep the cleaning sponge wet during use.
  • Always return the soldering iron to its stand when not in use. Never put it down on the workbench.
  • Turn unit off and unplug when not in use.

As you can see, using this PCB is so easy due to its very high quality making and without forgetting the labels that will guide you guys while soldering each component because you will find on the top silk layer a label of each component indicating its placement on the board and this way you will be 100% sure that you will not make any soldering mistakes.

I’ve soldered each component to its placement and you can use both sides of the PCB to solder your electronic components.

Step 7: Hardware Assembly

Picture of Hardware Assembly

Picture of Hardware Assembly

Picture of Hardware Assembly

Picture of Hardware Assembly

Picture of Hardware Assembly

Picture of Hardware Assembly

Picture of Hardware Assembly

Picture of Hardware Assembly

Picture of Hardware Assembly

Picture of Hardware Assembly

Picture of Hardware Assembly

Picture of Hardware Assembly

Now we have the PCB ready and all the components soldered very well, Now we need to place the push buttons each one to its placement in the top side of the bow, it will be so handy placing these push buttons. After that we screw the slider potentiometers and the same for the rotary potentiometers too, and do not forget to put the potentiometers cavers so using theme will be easier for you.

After that we need to solder some wires in order to connect these controllers to the board. In case you faced any difficulties while soldering these wires, just get back to the circuit diagram where it is clear how to place these wires, It is not that much hard sure if you follow the same circuit diagram, you will have in the end all the push buttons input wires just screw them to them header connectors on the board and do the same for the potentiometers, last but no least we take the lower base of our box and we screw the PCB in it.

Ok so after placing the board in its placement all what we need to do now is finishing the assembly of the box and we finished the hardware part.

Step 8: Software Part

Picture of Software Part

Picture of Software Part

Picture of Software Part

Picture of Software Part

Picture of Software Part

Picture of Software Part

Let’s move to the software part, the first thing you need is the Arduino code that has a full midi library for Arduino so just download it for free from the link down below and upload it to your Arduino.

About the music editor, I use Ableton software, but how to link this software to the Arduino instructions that will be sent through the serial port! It is easy since I use loopMidi sotware to create the Midi port in which our Arduino is connected, and another software which is hairless-midiserial which will receive the arduino instructions and convert theme to midi instructions and then send them to Ableton.

So first things first we run loop midi and we create a new midi port by giving it a new name.

Then we move to hairless-midiserial and we select the com port of our Arduino, and as you see once you select the right com port the Arduino start sending serial commands, in the other side we select the midi port that we have created, then we move to Ableton’s settings and under preferences we activate the external input controller device.

The last step is mapping the controller functionalities, by selecting what each button should control, it is so simple, just select the function in Ableton and press the desired button in your controller and it will be mapped.

And once you finish that, you can start playing with your new MIDI controller.

As you can see guys, this project is so easy to make and an amazing one but still some other improvements to perform in order to make it much more butter, that’s why I will be waiting for your suggestions to improve this MIDI controller.