Open Source MIDI Control Surface

I am in the process of designing a MIDI control surface so that I can control knob-less synthesisers and also control virtual sliders in Digital Audio Workstation applications like Qtractor, Rosegarden, Ardour, etcetera.

The design is made around an 8-bit Atmel AVR microcontroller, a Texas Instruments ADS7961 16-channel, 8-bit ADC, an array of 16 potentiometers, a cheap 2-line character LCD, some buttons and possibly a numeric keypad, although my current thought on that is ‘bloat’.

Firmware will be written in C, compiled with avr-gcc with the avr-libc C library.

I’m currently struggling over how to avoid sending MIDI ‘noise’ from the pots. I can foresee that the ADC will be picking up changing values without the pots being touched. How to determine whether a change is ‘real’ and needs to be transmitted as a value and what to ignore is the issue. Average a number of samples and then send only if the value has changed from the last average, ignoring any changes smaller than the two LSBs? I don’t know and am open to suggestions.

Software will allow each pot to be assigned a MIDI channel and controller. I’ll probably set it up so that assignments can be saved as programmes which can be recalled depending on what one is controlling.

Once I get to that stage, links to schematics and source code will be posted on this page. This will all be released under a Creative Commons Attribution-Share Alike license. (So yes, you could build this and sell if if you wanted to.)

Anyone interested in this project, please get in touch. There is an e-mail address at the bottom of the page, if you don’t already have one for me.

What About Midibox?

A couple of people have asked me if this is like or had I seen Midibox. To this I would answer not really. This project:

  • Is aimed at producing a very basic/simple/cheap device. Midibox is modular and far more sophisticated.
  • Will be using a different family of Microcontrollers (I’m an AVR man, not a PIC man) although the level of simplicity that I’m looking at should make it fairly easy to adapt to other families such as HC08, 8052 – or PIC.
  • Won’t have an operating system.

So it’s about minimalism, whereas Midibox is about modularity and flexibility (as far as I can see). And the reason that I’m doing this as opposed to re-creating an existing design (like Midibox) is because I want to. I like doing things from scratch.


I have decided to use an AT90S8515 for development purposes since:

  1. I have worked with these before.
  2. I have an STK500 development board/programmer.
  3. I have a couple of devices kicking around in my office in PDIP packages, which are easy to get probes on when doing diagnostics.

Whilst this device is technically obsolete its replacement, the ATMEGA8515, is compatible and very cheap at approximately $4 AUD from my regular suppliers, Soanar Plus. (This supplier may not have a huge range, but prices of single/low volume items are often considerably cheaper than the likes of RS, Farnell, etcetera.)