The definitive MIDI controller | This is not rocket science

Eurorack DSP development platform

We wanted to start making DSP-based modules for the Eurorack modular synthesizer format. The problem was just that there is no easy way to get started; there are no evaluation boards on the market made for this purpose, so you always need something custom for every project. So I decided to make one.

Eurorack is a relatively simple platform: it provides you with dual power supplies (+/-12V), a standard signal level of about 10V p-p, and control voltages roughly in range 0-5V. Pitch control is in 1V/octave; one volt increase in a pitch control voltage should double the pitch of a controlled oscillator.

You want to write DSP code, so you need a DSP processor. Everything is ARM these days, and with the good experiences with the KL26, we decided to try the Kinetis MK22F series. This one has hardware floating point support (single precision) and set of integer DSP instructions: it can do integer MACs in 1 clock, with a 64-bit accumulator! At 120 MHz!

The board would also need some way to get audio in and out of the processor, and the standard way to do that is to use an audio codec connected over an I2S bus. After some searching I found the AK4558 stereo codec, which has some very intriguing capabilities. It allows you to select between different antialiasing filters, some with very short group delay! The codec can also run at 192 kHz sample rates, which, combined with low-latency filters, means that the total latency for passing audio through the CPU is very low. It’s not zero, so if you mix the processed output with the input, it will still result in phase interference, but it looked very promising for short delaylines.

What else do we need? Not much, really. I wanted to have a module that could be used for development, or plugged in to an Eurorack module frontpanel for placing it in a rack.

The finished development board looks like this. On the bottom there’s a standard Eurorack power connector, and on the top two rows of pins for connecting to a front panel (or plugging in other things.)

Voltage conversions have to be provided off the board: gate signals have to be adapted to (and from) 3.3V range, and adding more CV output signals needs an external DAC. But those can be added on the front panel boards.

You can think of it as an “Arduino for Eurorack DSP code”. Development takes place in the Kinetis Design Studio, which also provides full debugging capabilities. All code is written in C++ (unless you insist on Assembly…)

And here’s how it looks like when plugged in to a frontpanel!

Leave a Reply

Your email address will not be published. Required fields are marked *