MIDI Controller

A MIDI (Musical Instrument Digital Interference) controller is a device that generates electronic music through a series of hardware and software components. As the buttons are pressed, a signal is sent from the controller to a PC, where music software converts this signal into a distinct sound.


Matthew F.

Area of Interest

Civil Engineering


Garden City High School


Rising Senior


In my third year at BlueStamp, I learned about electrical engineering, coding, and music software in greater depth than I ever had before. My experience was extremely rewarding, as I acquired new knowledge and skills, and built a project that combines my unrelated interests. I am so glad to have been a part of the remote program, as I feel that experimenting on my own allowed me to learn even more than I ever had in previous years.

Final Milestone

For my final milestone, I was able to get my MIDI controller to make music! While I spent a lot of time building and wiring my project before now, I finally delved into the code. Luckily, I was able to find the code I needed for my project to work on the internet, and I downloaded it to my computer. This code allows my PC to interpret the signals sent by the Arduino when buttons on my controller are pressed. However, in order to get my project to actually make music, I needed to download two pieces of software, Hairless MIDI and Loop MIDI. Together, these programs convert the signal from Arduino to MIDI, the language that music software understands. I then proceeded to download Ableton, a popular program in the music industry. However, I could not seem to figure out how to use it properly. After hours and hours of troubleshooting, my MIDI controller still wasn’t making noise. I then realized that half of my wiring was incorrect, but even after fixing that, I had no luck. Finally, after trying many programs, I found FL Studio, which works very well! All of the buttons on my controller make different noises. In the future, I plan to connect the knobs and sliders to make my project even more advanced. However, my experience in building this project has been very positive and I am really excited to have a working MIDI controller!

Second Milestone

Completed Wiring

For my second milestone, I properly wired all of the buttons and a slider to the Arduino. To start, I soldered one wire to each of the four pins mentioned in my first milestone. After spending hours on soldering 48 wires, I then connected these wires to the breadboard. I first wired one LED pin on each button to the negative rail on the breadboard, which connected them all to ground on the Arduino. I then wired the other LED pin on each button to a pull-up resistor which was connected to the positive rail on the breadboard, thus connecting them all to 5V. Next, I wired the pins that control the button itself. I wired one pin on each to the positive breadboard rail which connects to 5V. The other pin was wired to both a digital pin so that the pressed button would be registered and a pull-down resistor which connects to ground through the negative rail. Alas, the twelve buttons were finally wired! I then connected a slider in a similar way. The slider had three pins. The first two connect to the negative rail (ground) and the positive rail (5V). The third pin connects to an analog pin on the Arduino since it is an analog input and has a wide range of input values. I am very glad to have completed the hardware aspect of this project and move onto learning how to get my MIDI controller playing music!

First Milestone

For my first milestone, I designed and assembled the box for my MIDI controller. I started by creating 3D computer-aided design models on AutoDesk Inventor of how I wanted my box to come out. I carefully took measurements of the parts that are going to go in the box to make the controller actually work, like buttons, knobs, and sliders, in order to ensure that they fit into my design. Once I was done modeling all six sides of the box, I created dimensioned drawings of each one on AutoDesk Inventor as well. These are 2D sketches that contain every measurement of each part and are needed to ensure that the box is accurately created. I then sent these files to be laser cut so I could add the rest of the parts into the box. Next, I learned how the buttons for the controller work. Each of the four pins on the buttons serves a different function. Two of them power the LED inside the button, which makes it light up. One of these pins connects to 5V on the Arduino, and the other connects to ground, thus allowing electricity to flow through and power the LED. The other two pins power the button itself. As with the LED pins, one of the button pins connects to 5V on the Arduino, and the other connects to ground. However, an additional wire connects the ground pin on the button to a digital input pin on the Arduino, thus allowing the button to tell the Arduino to complete its programmed task. Once I am finished with the project, this task will be to make some sort of noise. In the process of connecting these wires from the Arduino to the button, I needed to use pull-down resistors. On a breadboard, I connected wires to these resistors in order to make sure that the state of the button remained either positive or negative, without changing back and forth randomly. While I wait for my box to be cut, I will work on coding my Arduino and deciding what sounds I would like the MIDI controller to make. I’ll also begin soldering parts wires that I know will need to be connected in the final product. I look forward to completing this soon!

Start typing and press Enter to search

Bluestamp Engineering