The whole idea of an small and mobile MIDI controller, that one could always have with you and just plug in came to me when I received this 100 pack of micoswitches that i ordered on Aliexpress. Without a lot of thinking i just startet putting all the stuff together, program some code and testing it. Surprisingly everything worked out great the first time.
This project covers a button Midicontroller, that you can use for basically everything that is controllable by MIDI. I for example use it as a controller for a DJ Software. Therefore the code is programmed with that in mind, but i am sure that with some small adjustments you can do pretty much everything.
Everything you will need, will be described in the following steps. So without further ado, let´s get into it.
Step 1: Electronics
The electronics in this Project are very easy.
Everything you will need is:
- Some Buttons (7 in my case) Aliexpress
- An Arduino Nano Aliexpress
- Some 1k Resistors (I bought this set with all the ones you need often) Aliexpress
- A Prototyping Board Aliexpress
- Some wire
- I also used Pinheaders so i can take the Arduino out if i want to
I like to buy greater numbers on Aliexpress since that mostly is cheaper and at some point i will need the stuff anyways.
NOTE: The linked Arduino uses the cheap CH340 USB to Serial converter... those may need some drivers on you system (Mac OSX) and some trouble.
Everything needs to be soldered onto the prototyping board a seen in the diagram. Make sure to put the Arduino and the buttons in the same places as i did if you want to use the .stl file of the case that i will talk about in the next step.
The code is a basic Arduino code, that checks if the buttons are pressed. There is a delay inserted that prevents that the button is measured triggered more than once. Also therefore this code is not really capable of triggering more than one button a time. But for most for example DJing tasks this will be fine.
The Code contains some functions at the bottom so you just need to call those and give the note that you want to play as a parameter. The Code is tagged with some comments, so it should be simple to understand.
The code itself can be found here.
For the actual USB to MIDI i used the Hairless Midi to Serial Bridge that works just flawlessly. You can find everything about this here.
Step 2: Case
I designed a simple 3D printed housing for the controller.
The prototyping board is secured using 4 M2 screws. The case is closed using some 15mm M3 screws. For a more professional look to the whole thing, and since i had those laying around anyways I used some brass inserts that are threaded on the inside.
The buttons are really simple and designed in a way, they do not fall out.
Last but not least there of course is a hole in the side of the case so you can connect your USB cable to it.