Digital IO Bus
No typical MIDI Delay
of high bandwidth
1024 midi channels
VGA / DVI
Because of many downloads,
the number of demos have been reduced
Base Hardware Unit
Altera Cyclone IV + ADC/DAC board
The new Altera Cyclone IV DE2-115
platform from Terasic is used to implement and test the parts of the
AUDIO DSP. It performs IO communication and is the master of
the sub modules. Currently there is one music module driving
one synthesizer module and one audio DSP module directly. This
gives the option to generate and process all music and audio
data with low latency avoiding any MIDI issues.
The board is attached to both a stereo
audio codec chip and high speed ADCs and DACs which are used for
signal observation during development process. They can also
by used for analog monitoring signals on a common
oscilloscope. It also contains
a Video interface to VGA/HDMI to directly monitor spectral audio
responses acting like a graphical equalizer.
Terasics daughter board for the
Altera Cyclone IV is a perfect extension to drive and test the
audio DSP system: It comes with both audio IO connectors (line,
mic etc.) and high speed DACs with 250 MHz over SMA connectors.
Full speed 200 MHz audio DSP output shows up here, using dithered
PDM with 14 Bits finally achieving >20Bits with a simple
analogue AA-filter. Together with the main board 6 analog audio out
channels are available. The 4 self built pdm-channels are
used mainly for bass treatment / bass array.
Other daughter boards can be linked
by audio wire or external MIDI over S/PDIF. This both ensures
high MIDI bandwidth much beyond the current MIDI standard.
For example with common studio music setups, the transmission
of sixes-data and tone data for e.g. 32 MIDI channels will typically
require a period of nearly 70ms which makes it impossible to
generate musically synchronous data in real time. Remember that
already 2ms delay between two channels might be discovered as
With the FPGA based digital audio workstation,
1024 MIDI channels could be transmitted in less than one sample
of 96kHz! This makes it first possible to define echo's and reverbs
in the midfield and install arpeggiator modules which
reflections and where repeated notes perfectly fit to the music
Music Box / MIDI Engine
8 x 16 primary MIDI channels, 1024 secondary channels
The Music Engine produces MIDI-like
tone information, based on pre defined rhythm (see
algorithms) 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 and then sent to the synth module synchronously.
255 Tone Levels = quarter Notes covering 127 MIDI Notes are
available. Pure Tuning and Balanced Tuning is available.
Midi Routing to internal
and external devices
MIDI over S/PDIF
The different boards are interlinked
with LVDS parallel bus as well as
like LVDS-connection using a virtual
MIDI2S/PDIF-converter. With S/PDIF-to-MIDI,
standard MIDI-interface can be linked. MIDI-send/MIDI-return
is used to plug additional arpeggio boards, as well as real
arpeggiators from hardware synthesizers. All
MIDI-connections require a two wire line only.
In this audio
workstation, I use a modified version of my
5 Byte MIDI
protocol, containing additional time
code and channel information. This is necessary to handle
sound channels independently from MIDI channels in the
future. Routing information may be attached
too for virtual MIDI channel handling. Also 10 Bit and 12
Bit controller data can be sent instead of only 7/8Bit.
The difference between the first and the last MIDI channel is
only 0,2ms in maximum, even when all 1024 channels are active
and sending. Typically 200-300 channels send and receive midi
packets of 9-12 bytes in size per tone, so the latency is below
0,1ms leading to inaudible jitter of simultaneously
triggered music notes.
Music Synthesizer Engine
with 4096 voices polyphony
The synthesizer engine takes the MIDI
events including ARP notes and produces audio signals for each of the midi channels
from generic functions like
waves, tone banks, or complex
sound generation. Wave table synthesis is possible (block
ram based so far). A modified version of my
wavetable module is used
Configuring the synthesis module for noise
leads to a initial drum computer. Listen to a simple
Drum Computer Example
Module Setup Options:
By using 100MHz for FPGA system
frequency and 96kHz sample rate, the synthesis module
produces 1024 pipelined oscillators, which appear to
run simultaneously and independently from each other.
With full 192 MHz+ operation speed (possible for Spartan
6 and Cyclone IV) and reduced sample frequency of "only"
48kHz (common for most synthesizers in the market) 4096
polyphonic voices can be produced from one sound synthesis
Without too extensive and extraordinary
functions at least 2 synthesis engines like these are
possible in one FPGA like S6 leading to 8192 voices.
For a large S6 device and a large C4 device, 4 modules
can be instantiated to obtain 16384 voices
per FPGA depending on the complexity of the DSP
Regarding a modern synthesizer
with typically 4 oscillators per voice, this compares to
2048 voices true polyphony
with an unbeatable quality.
The number of LFOs is now totally independent from the
voices number, while voices can still be configured
as LFOs. Running at audio sample frequency / 4
= 48kHz currently 4 LFOs are designed for each channel
which means 16 LFOs per voice.
In the minimal config, 768 kHz sample frequency and
almost 200MHz can be used in the DSP-pipeline but because of the fact, that higher FPGA-speeds
demand more FFs for pipelining and pre delay for
calculation, which rapidly decreased the number of
modules, the most reasonable configuration is the
4x100MHz with 96kHz.
Using 384kHz as the sample
frequency (the ultimate audio sampling rate
currently discussed) is possible of course, but has
only small impact on the sound. Read here why:
Comparison 48KHz and 384kHz
configurable DSP functions
The DSP Engine performs audio
limiting and distortion like guitar effects and
tube microphone amplification.
Also hardware based
is possible. More than one DSP engine can be synthesized using the multi dsp
concept for more than one FPGA.
Organization of more than one DSP element in a large FPGA or
array of FPGAs
Complete Audio Workstation
platform can be configured with any number of DSP and Synthesizer
Modules. Here the output of the
distortion module is shown.
Pyratone GUI -
to configure the internal parameters of the synthesis
engine. Real Time oscilloscopes show the impact of the
controller activity and the resulting wave forms and
Large scale graphical Spectrum
Analyzer with 192 Tap Görzel FFT compressed to 48taps with direct
DVI output to 1920x1080 TFT monitor (Samsung TFT TV) by Altera
C4 FPGA. Resolution 0,1 dB and better. Sound patch (still image)
created with E-mu Orbit 2 + Access Virus B. Live recorded with
1024 oversampling (96MHz Sigma-Delta ADC at 16 Bits) with 21
Graphical Mixer Representation
A GUI Console shows the knob
positions and mixing states for both MIDI and Audio.
Spread Audio Workstation
Several S6 FPGAs used
to combine the functions of the audio workstation
Block diagram of the whole DSP
Engine with graphical outputs intended for a
Xilinx Spartan 6 Platform.
Apart from the standard MIDI and synthesis engine, dedicated
audio DSPs can be instantiated to perform echo, delay, reverb
and analysis. As an example audio spectrum analysis can be performed
through wide FFT if enough FPGA power is reserved. Direct Monitoring
of both oscilloscope like signals as well as spectrums are possible.
planned design for rack mountable device
Finalized Hardware Unit
planned design for rack mountable device
of my "NOX" from 1998)
of the Workstation (C3, 192kHz)