advanced audio recording
DIY MIDI controller


14 bits


A 16 channel MIDI controller
DIY Analog MIDI Contoller

15 potentiometers are included in the box to generate a high resolution controller for MIDI applications. A Xilinx FPGA is used to filter the knob movement information, add an external MIDI channel and send it via 230kbps serial interface to the computer or the DIY audio workstation.

MIDI Controller with virtual input and 10 bit

The noisy potentiometers are filtered the analog way using RC-HighCut, then multiplexed to the ADC and finally processed the digital way in order to obtain up to 16 bits resolution. A modern FPGA is used to control the data streams and add a virtual channel for MIDI pass through.

It also processes the data the digital way to achieve most out of the analog data from the potentiometers. Dedicated sampling is used to cut out the middle from out of 8 samples coming from the ADC to use stable data only and shun spikes possibly created by the analog multiplexer. Double IIR-Filtering with hysteresis processing is applied to enhance resolution and reduce any noise. The steepness is corrected to create headroom for position correction and obtain full scale operation easily.

MIDI Controller Data Processing for 14 Bits
 The incoming data from these ADCs has 14 Bit maximum resolution with about 12 valid bits according to SPEC. In fact, the noisy environment gives me 10Bits typically. Also the movement of the potentiometer gives me noise and scratches.  Sampling, filtering and decimation increases the effective precision up to 16 bits finally and appropriate bandwidth is still maintained to follow the fingers.

According to the protocol 14,12 and 10 bit resolution can be used in the final data.

MIDI Controller Calibration and Data Processing for 4096 steps
The FPGA could operate the incoming data even much quicker, but the 960 point per second resolution obtained from the sequential polling seemed to be sufficient.  If desired the transmission speed could be increased up to 460kbaud, but 230kbaud is the limit of most simple UARTs with PCs. Herewith all 16 channels are transmitted within less then 1,5ms!

See the data protocol options of my improved MIDI for details.

See another Version of the MIDI Controller 15



© Jürgen Schuhmacher 2004