Build your own MIDI-controller
During their concept research phase, Platform Project 2 took a deep dive into exploring sound. It started off with experimenting through circuit bending old children’s toys. From there, the team tinkered further on and ended up building a MIDI-controller, using Arduino and Ableton. On this page, we will elaborate on the different steps on how to build your own MIDI-controller.
Start building!
-
Arduino uno board
-
4 potentiometers
-
Arduino joystick
-
Laptop
-
Cable from Arduino to laptop
-
Soldering kit
-
Cables
Materials
01
Gather materials
Before you start, make sure to obtain everything from the materials list. Also, download the latest versions of Arduino and Ableton.
02
Potentiometer & soldering
-
Connect three wires to the potentiometer by soldering it
-
Make sure the + and – is routed correctly so the voltage changes in the right direction
-
Middle wire goes to analogue inputs
-
Outer wires are for power
-
Parallel connected
03
Joystick
-
Connect power to the joystick: 5V to 5V GND to GND
-
Connect X and Y axis to their own separate analogue inputs
-
Connect parallel
-
By changing the voltage, you change the analogue signal that is received
04
Downloading libraries
For the MIDI script to work the following library is needed:
https://www.arduino.cc/reference/en/libraries/midi-library/
05
Installing software
An Arduino can receive and give out a signal that is 0-1023 bits, whereas a MIDI controller can only do 0-127 (8 times less). To translate the Arduino signal into the right MIDI signal, two programs need to be installed:​
-
Hair Less MIDI Bridge: This is needed to make the translation from an Arduino signal to a MIDI signal.
https://projectgus.github.io/hairless-midiserial/ -
LoopMIDI: This is needed for the Arduino to be recognized by Ableton as a MIDI controller. https://www.tobias-erichsen.de/software/loopmidi.html
06
Coding
This code was inspired by a code online that was meant for a specific MIDI controller with four potentiometers, 2 slider resistors and 12 buttons. Instead of sliding resistors, I connected the joysticks’ x and y axis to be read as the sliders.​
​
That code can be found here:
https://www.instructables.com/Arduino-MIDI-Controller/
​
The final code can be retrieved here:
https://drive.google.com/file/d/1SiM5XGd9T_CGDbEnKMHP_UCT9GINu-St/view?usp=sharing
​
Final result
The final result should look like the image on the left. Two take-aways were:
-
Analogue inputs are read by an Arduino as the difference of voltage levels within 0-5V. This variation can be caused by anything that emits an electric current.
-
Be careful with wiring, for you might fry your Arduino and/or other electronics.