Turn an electric organ from the 1960's into a MIDI keyboard controller. (http://j.agrue.info/reorg/)

root

What is it?

A MIDI keyboard controller using parts from an old electric organ.

There are two physical parts to reorg, a control board and a lower board. The control board contains an ATmega644 microcontroller, which speaks MIDI and RS-485, and connects to several knobs as well. The RS-485 bus is used to talk to one or more lower boards, each of which contains 48 digital inputs. There is one such board for the lower manual of the organ, another for the upper manual, another for the stops, and optionally one for the pedals. The final effect is that eight analog inputs and around 100 digital inputs are available to the microcontroller.

You can see what the finished printed circuit boards look like: lower board; control board.

In this repository

  • *.sch The schematics for the control board and lower board, split over several pages, made in gEDA gschem.
  • *.pcb The printed circuit board layouts, made in gEDA pcb.

Schematics and printed circuit board are licensed under the TAPR Open Hardware License (www.tapr.org/OHL) Version 1.0.

The story

I got a Lowrey organ from the 1970s. It's electric. Nice, but heavy; not very portable. It's got two manuals with 44 keys each; 26 stops (do you still call them stops on an electric organ? oh well); 19 rhythm buttons; and three knobs and a light.

I wanted to make a MIDI controller out of it. If you want to do something similar, you may want to check out MIDIbox; but I have more experience with Atmel AVR microcontrollers than Microchip PICs, and I'm a bit foolish, so I started from scratch.

The microcontroller needs to sample, many times per second, which keys are being pressed, which stops are on and off, and where the knobs are. Normally, if you have a lot of digital inputs like this, you would set up some sort of switch matrix with diodes; but the electrical circuit for the switches was already chosen for me: 44 switches with one terminal common to all, and one terminal for each switch.

After some putzing about with multiplexers, I found out about shift registers, and how you can use the SPI controller built into the microcontroller (ATmegaXX4, in this case) to get all those digital inputs in, fast. And then I found out how SPI across multiple boards may be dicey, and decided to use RS-485 and put a small microcontroller on each peripheral board.

The designs have reached the state they are at over a year of work. Thanks to the #electronics channel on freenode.net for their suggestions and reviews.