MIDI Input module

MIDI to control voltage (CV) module for my DIY synthesiser.

This is the first module I developed when starting to develop my modular synthesiser. I figured it made sense to have something that could tell the rest of the machine what notes to play before all else.

I built it around an Arduino pro micro board, using a popular Arduino MIDI library.

The module includes the MIDI electrical spec-mandated opto-isolator, a digital to analog converter (ADC) for generating control voltages, opamps and trimmer potentiometers for scaling said control voltages, a pair of shift registers to drive two 7-segment digits, and of course the microcontroller.

The module produces a 1V/Octave CV to set oscillator pitch, as well as 4 additional parameters, each of which has an amplitude control knob. It further provides gate and trigger signals (indicated with LEDs) to communicate the start and end of a note. These are useful for driving envelope generators shaping the timbre.

In the firmware, the module keeps track of up to 24 notes held at the same time. While only one note is output at a time, this allows returning the output pitch CV to the previous notes when you let go off the more recently pressed notes.


Since I had no experience using PCB fabrication houses yet, I designed the boards so I could etch them myself: single-layer. Previously, the synthesiser used a different mounting format than it does now, so the boards have been retrofit on this eurorack-sized panel.

Work Involved

  • Circuit design and testing with breadboard prototype
  • Firmware development (Arduino IDE)
  • Schematic capture (EAGLE)
  • Circuit board design (EAGLE)
  • Circuit board cutting, etching, drilling
  • Circuit board assembly
  • Panel design (Inkscape)
  • Laser cutting at local makerspace
  • PCB stackup, panel assembly

Needless to say, I’ve refined my techniques since this module, but it was a valuable experience to make those boards by hand.

Here’s a look at the PCB stackup from the back:

All design files and code can be found on GitHub: MIDI-in module