PCB schematics and firmware for a custom MIDI controller. 48 rotatory potentiometers can be used to control virtual mixers or software synthesizers.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
firmware/48knobs Channel switching with LED signalization Nov 12, 2017
README.md add Behringer link to readme Oct 27, 2017



PCB schematics and firmware for a custom MIDI controller


DIY Arduino MIDI controller featuring 48 rotatory potentiometers (knobs). The values are sent out by MIDI CC signals through DIN-5 or USB port. The intended use is to control various software synthesizers but it can be used as a virtual mixer control or as an input device for custom software (for example MAX/MSP or Processing applications).

My work on this project started before Bastl Instruments released their own 60Knobs controller but I incorporated some of their ideas into my design.

There is also a similar MIDI controller Behringer B-CONTROL ROTARY BCR2000 with 32 knobs.

48Knobs midi controller


  • 48 knobs!
  • USB MIDI output
  • USB powered = doesn't need a separate power supply
  • 3 buttons (1 for sending out all the values, 2 for switching the MIDI mapping)
  • 2 signal LEDs
  • MIDI OUT DIN output

Schematics and PCB layout

Knobs are divided into six rows of eight potentiometers each. In each row, potentiometers are connected to a 8-channel multiplexer, the output is connected directly to analog pins on the Arduino Mini (there are 8 analog pins in total out of which 6 are used). Three digital pins are connected to selector pins on MUX'es.

For MIDI output, TX pin is connected to DIN-5 connector and MIDI to USB adapter, I didn't bother creating my own schematic for MIDI to USB since it was so cheap on eBay.

MIDI input is not implemented, although it would have been nice for configuration without reprogramming.

48Knobs PCB


Possible improvements

  • Potentiometers didn't fit well - the distance between 2mm holes should be a bit smaller (~0.2mm).
  • LEDs and 100k resistors are too close.
  • DIN-5 connector needs bigger holes (~1.2mm instead of 0.8mm)
  • The design allows for adding more rows, it is possible to add 16 more knobs without much hassle (there are two free analog ports left on the Arduino). Adding more rows should be possible using another multiplexer.
  • MIDI to USB should be easy enough to include on the main board. It was just easier for me to buy it.


The software scans through all the potentiometers, averages the values and sends out only the changes using MIDI library. Optionally there is a raw output mode implemented for debugging.