4chord MIDI

Status and Roadmap

4chord MIDI board


The first hardware revision A is done and proven and work, firmware version 1.0 is officially done as well. PCB design and sources can be found on Github.

Hardware Revision A

  • Credit card sized PCB layout
  • ATmega328P TQFP32 microcontroller running at 16MHz
  • Nokia 3310 LCD with backlight connected via SPI
  • USB powered with 3.3V voltage regulator
  • Three button menu interface
  • Four button chord playback
  • UART interface
  • 10-pin ISP interface

Firmware Version 1.0

  • MIDI message handling for note on/off commands for each playback key
  • Hardware timer based tempo handling for arpeggio and mixed mode playback
  • Graphical user interface to display current playback key, mode and tempo
  • UART command line interface to emulate button press (38400 8N1)
  • USB and MIDI message handling via V-USB

Additional Tools

For easier development, I created some additional tools:

  • XBM images to C char arrays conversion tool for easier UI design
  • ATmega328P fuse dump tool to output human readable fuse settings


Future development plans involve both the PCB and the firmware.


While functional, the PCB requires some improvements.

LCD Backlight

Revision A includes connectors to add a backlight to the Nokia 3310 LCD. Unfortunately, due to mechanical factors, it is not possible to attach it. The connector cable for the LCD is too short to properly fit it to the connector and place the rather high backlight under it.

Moving the LCD connector closer towards the PCB edge might be a solution worth trying as a backlight would come in very handy. Otherwise the whole PCB would require a redesign to place the connector on the front side, which I prefer to avoid.

Crystal Oscillator

Currently the microcontroller is running at 16MHZ, which is within specification when running at 5V. However, since the LCD uses 3.3V, the whole PCB is powered with a 3.3V regulator, which technically is out of spec for 16MHz. Although it appears to run without problems so far, I feel more comfortably not to overclock the controller.

Additionally, when I first sourced the components, I ended up with a crystal with rather odd form factors that might not be easily found somewhere else. I'd prefer a more common form factor.


Version 1.0 features many under the hood basics that can be used to further extend the playback and mode handling functionality. The actual playback is a bit limiting still at this point, so work will be focused on improvements on that side, i.e. adding more playback modes for different metres and notes

Ultimately I will add a configuration method to user-define playback modes, keys, predefined tempos and all in all make 4chord MIDI adjustable for everyone's own personal taste.