Arduino is great for creating DIY MIDI controllers. Many years ago, when I started creating my first Arduino UNO/Mega-based controllers, I got really happy when I came to HIDUINO. This was a USB MIDI Firmware developed by Dimitri Diakopoulos.
The HIDUINO project provides firmwares, documentation, and example code for building a class-compliant USB-MIDI device from an Arduino UNO or Mega 2560. HIDUINO does not use middleware software to convert serial messages through a MIDI loopback port (like LoopBe1 on Windows or IAC on OSX). Instead, HIDUINO provides a true USB-MIDI device for plug-and-play compatibility on Windows, OSX, and Linux - just like a commercial MIDI controller. http://www.dimitridiakopoulos.com/hiduino.html
That’s great! I used it for many DIY controllers. But I have to say something was not too comfortable about using HIDUINO: I had to open and program the “programmed” micro through ISP method because the board lost it’s Serial USB capabilities when switching to MIDI.
Then, I came across MOCOLUFA, a simple dual-bootable firmware that solved that problem. https://github.com/kuwatay/mocolufa
For everyone looking to create a custom controller with MOCOLUFA firmware, we did this simple website that compiles a custom version of the firmware, letting you name the device and manufacturer at will > Pimp My MOCOLUFA
If you are making a DIY MIDI controller project, feel free to post your progress, doubts or experiences in this category of the forum.