A chord-oriented MIDI controller
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


The Megachordotron

The Megachordotron is a MIDI controller organized around simple chords. It's intended for people (like myself) who are too clumsy to play a guitar.

A demonstration

A picture of the Megachordotron

Since it's just a MIDI controller, it needs a MIDI synthesizer to work. The synthesizer is the PC on this little rack, which is a Linux Mint box running Fluidsynth (here is some info about that). There is also a guitar amp and a keyboard and monitor.

The MIDI synth as of 10/1/2016

After Maker Faire is over, I want to spend some time making the synth much less cumbersome. As it stands it is quite inconvenient.

BTW, the shortened URL for this repository is https://git.io/vPt04.

Printed circuit board


I use Cadsoft Eagle for PCB layout. For these designs you'll need to pick up some third-party libraries.


I laid out the board in haste and made a mistake. One end of the diode D1 does not connect correctly to the resistor R3. I think it's the cathode. I had to solder a little jumper.

This board was originally used for a different instrument (hence the filename) and the audio circuitry is not needed in the current instantiation. There is no need to populate the TPA3122 (IC6) or the emitter follower to the left, or the parts around them, or the last CD4051 (IC5). There is also no need to supply +12V or +5V other than what is supplied by the USB cable.

The bypass caps should all be populated, and D1 and R3 must be populated.

Programming the Teensy

You should use a Teensy 3.1 or 3.2 to build the Megachordotron.

In the Arduino application menu, choose Tools > USB Type, and select MIDI.

I am running my Teensy at 72 MHz, but that's probably something you can experiment with. There is only one place in the code where fast timing is really significant, in the read_kdy function in teensy.ino which is mostly in assembly language. Actually now that I think of it, I'll probably switch to 96 MHz, because that affects keyboard sensitivity.