MICrODEC is a work in progress (and probably always will be). It is an open-source platform for Digital Signal Processing (DSP) that is approachable for those familiar with programming Atmel microcontrollers. For those unfamiliar, we hope its a fun excuse to learn.

The hardware itself is of moderately high quality (44.1ksps, 16bit, stereo, -96dB noise, 3Hz - 18kHz frequency response), and has built in features for use with audio effects (wet/dry mix, feedback, mic./instrument/line level inputs). Because of the high data rate, the MICrODEC does not allow for as much processing time as low-end ADC to PWM style microcontroller audio interfaces, but, with 6 seconds of sample time, plenty of useful functions can be executed in the ~400 free clock cycles per sample. And, at a lower cost in comparison to high-end DSP units, it provides a good platform for sound installations where more than a few units may be required.

Features yet implemented

Features not yet implemented

The current MICrODEC implementation is fun to use, but there are a number of things that would make it even better.


The Firmware for the MICrODEC is divided into 2 parts. The first is a Main File, which deals with initializing the microcontroller and codec, and handles the interrupt routine. The second is the Function Bank, which holds all of the commands which are executed when an interrupt is called (once per audio sample). This may or may not be the best implementation. It has the advantage of being more portable, as different programs can be dropped into the Function Bank, without having to worry about conflicts in the Main File. On the other hand, no processing can occur during idle time outside of the interrupt loop.

This is the current Main File: Microdec1

This is a listing of the pre-programmed functions: Stock Functions

And here is a compiled hex file with the stock functions: microdec1.hex

User written programs (which can be added to the Function Bank) can be found here: User Programs.

This is a list of useful functions (written in assembly), that can be used to save you time when programming. They are usually optimized for speed, and have 16b and 32b math operations, along with procedures for talking to the codec or other tasks required by the microcontroller: Useful Functions

Here is an example of a delay, with extensive comments, designed to demonstrate programming the MICrODEC in assembly: Delay Tutorial

Modifications, Additions, Enhancements

Adding another knob: Adding A Knob

Talking MIDI

Talking to the serial port


Files: Beta Release

Files: Datasheets

Other Reprogrammable Audio Platforms

There are a lot of people who have made audio processing platforms. Have a look and see if any of them are more suited to what you're interested in doing. Each has its ups and downs, the major tradeoffs being cost, complexity, and audio quality.

Other Platforms

MICrODEC (last edited 2010-08-14 21:32:33 by guest)