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.
CPU
I have decided to use an AT90S8515 for development purposes since:
- I have worked with these before.
- I have an STK500 development board/programmer.
- I have a couple of devices kicking around in my office in PDIP packages, which are easy to get probes on when doing diagnostics.
Smiffy at LinkedIn