A 16 channel MIDI controller
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.
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.
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.
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!
data protocol options
of my improved MIDI for details.
See another Version of the