128 midi channels
A complete drum computer in VHDL
Spartan 6 LX Development System
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:
works with standard 230kBaud, which is about 7 times faster than normal
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
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
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
linear amplification circuit.
"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
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.
For the music box unit a modified version of the
mbox07 structure used in the
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
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.
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:
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.
Data Flow of the drum computer
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
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
The front of the intended midi controller for the drum computer
using classical Mentor knobs for the encoders.
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
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
See the german discussion page:
See Page 2 of
the drum computer in VHDL: