advanced audio recording
Spartan 6 drum computer
  128 oscillators

16 voices

128 midi channels

96 kHz
Audio DSP

Demo 1

Demo 2


A complete drum computer in VHDL

Spartan 6 LX Development System
FPGA Drum Synthesizer with Spartan 6

A Spartan 6 FPGA board from Trenz Elektronik Germany is used for sound synthesis and video generation. 2 PS/2 ports (mouse + keyboard) are available for graphic and synthesis control. Also a MIDI-controller can be attached: The DIY-MIDI-Controller works with standard 230kBaud, which is about 7 times faster than normal MIDI (31,250bps).

The design was derived from my universal VA-synthesizer module formerly realized in the Cyclone 4 platform which was ported to the Spartan 6 device, initially intended for the Multi Audio-Video-FPGA platform. The sample frequency can be selected from 48kHz, 96kHz and also 192Hz. All processing units do adapt automatically in this design. To obtain to best sound quality possible especially for the brilliance of the HF and adapt to current audio hardware, 192kHz have been chosen as the sample frequency. Read here about the advantage of 192kHz in audio processing.

Even with 192kHz still 1024 voices can be used running the circuit with full operation speed at 216 MHz. This is already more or less the limit of the Xilinx Spartan 6 device because of the technology and also the determined limitation of the PLL oscillator. With the subsequent design, all clocks including video, audio and filter tick can be derived from only one PLL using the existing external oscillator of the board. With that speed the FPGA already becomes pretty warm and possible requires cooling. Hopefully the sound gets "warm" too :-) If necessary they might be warmed up with the non linear amplification circuit.

VA - Synthesizer 192kHz in VHDL

"True Analog" filtering is applied with a 225 TAP FIR filter running 5 times the speed of the sampling frequency instead of only running exactly at the sampling frequency as with common audio processing software.

optimized AA - Filter for 5x192kHz x 225 TAP 216 MHz

The filter consists of a symmetric set of optimized binary coefficients using a modified Blackman-Harris window and performs nearly artifact free real time resampling with just only two 25x18 multiplier at full system speed leading to a 24Bit precise calculation with 36Bit precise coefficients.

Music Box / MIDI Engine

The Data handling is done following an hierarchical architecture of song / pattern / sequence scheme controlling the synthesis unit.

MIDI music engine in VHDL

For the music box unit a modified version of the mbox07 structure used in the organ vplayer is applied:

MIDI music engine in VHDL

The Music Engine produces MIDI-like information, based on pre defined rhythm and tone patterns which are kept in a memory. The tone notes are copied/doubled according to the ARP pattern, compressed in loudness and modified by the ADSR-module end then sent to the synth module synchronously. 255 Tone Levels = quarter Notes covering 127 MIDI Notes are available.

The arpeggio module uses adjacent MIDI channels to produce MIDI echo rather than audio echo. This is possible with a very high time resolution creating short reflections similar to room reverb. For the slower (normal) arpeggio the channels can use different parameters for the voices.

Listen to the Drum Demo Sound.mp3

The Synthesis Uni is taken from an existing VA-Synth Platform making some controllers fixed and some others variable:

1024 voice polyphonic music synthesizer module

The synthesizer uses the MIDI notes and produces audio signals for each midi channel from generic functions, tone banks, or DDS-based sine waves. Wave table utilization is planned. Also true random generators are possible acting as my vhdl noise generators. The synthesizer operates totally pipelined and with 50MHz clock speed and processes 128 from 256 possible MIDI channels, has 3 oscillators / wave generators and 256 voices polyphony.

drum computer

Data Flow of the drum computer

Graphical Sound Analyzer

audio analyzer on spartan 6 fpga used as ascilloscope for sound analysis

A simple oscilloscope function in the FPGA is used to control and analyze the wave form during sound generation and modification. The video runs at 108 MHz with 1280x1024 pixels.

Graphical Spectrum Analyzer

spectrum analyzer on spartan 6 fpga

Drum Computer Synthesizer GUI

 GUI for a FPGA based drum computer

A simple 800x600 pixel GUI in VHDL is used to control the parameters of the drum machine. All values can be displayed virtually on a VGA monitor including the oscilloscope like frequency and wave form monitors.

Drum Computer Front

 Front Plate for the FPGA based drum computer

The front of the intended midi controller for the drum computer using classical Mentor knobs for the encoders.

drum computer front skin

The front skin design of the drum computer with 16 step sequencer and individual tone control for each musical step for tuning the sounds. Thus bass drums and toms can be setup with the right frequency to met the melody's tuning. The design is done with excel and printed on silver foil.

Drum Sound Morphing

beat morph

The built in sound design module can modify the sounds in real time by adding echoes and delay bases extra information with frequency treatment. Listen to a fading demo:

Drum Delay Fader Demo

See the german discussion page: MCNET

See Page 2 of the drum computer in VHDL: Drummix 2



© Dipl.-Ing. Jürgen Schuhmacher 2012