www.96kHz.org
advanced audio recording
audio & music workstation with 4096 polyphonic voices
  Cyclone IV

+

Spartan6

  ADC-board
 
Full Stereo
Digital IO Bus


No typical MIDI Delay
because of high bandwidth


4096 oscillators

4096
synthesis
voices

1024 midi channels

16384
LFOs


4 individual
audio dsp
elements


48kHz
96kHz
192kHz
384kHz
768kHz

sample rates



1280x1024
SVGA

1600x1200
VGA / DVI

1920x1080
HDMI



48kHz
96kHz
192kHz
384kHz

Audio DSP


demo sound


demo track


Attention:
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.


Altera DE-115 board für audio dsp workstation with 16384 voices

 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.


High Speed Audio Procesor Board Altera ADC DAC for 384kHz sample rate

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 echo.


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 generate reflections and where repeated notes perfectly fit to the music data stream.




Music Box / MIDI Engine
8 x 16 primary MIDI channels, 1024 secondary channels

MIDI Engine for FPGA Synthesizer

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
with virtual MIDI over S/PDIF

MIDI Mixer of the digital audio workstation

The different boards are interlinked with LVDS parallel bus as well as S/PDIF 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

Music Synthesizer with 2048 voices at 192 kHz

The synthesizer engine takes the MIDI events including ARP notes and produces audio signals for each of the midi channels from generic functions like analytical sine waves, tone banks, or complex DDS-based sound generation. Wave table synthesis is possible (block ram based so far). A modified version of my wavetable module is used for this.

 Configuring the synthesis module for noise leads to a initial drum computer. Listen to a simple pattern here: Altera 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 engine.

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 functions.


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



FPGA
System
Speed 
Audio
Sample
Frequency 
number
of Audio
channels 
50 MHz 48 kHz 1024
96 kHz 512
100 MHz 48 kHz 2048
96 kHz 1024
192 kHz 512
384 kHz 256
200 MHz
/
2x100 MHz
48 kHz 4096
96 kHz 2048
192 kHz 1024
384 kHz 512
768 kHz 256
4 Modules
with
100 MHz
48 kHz 8192
96 kHz 4096
192 kHz 2048
384 kHz 1024
768 kHz 512




Music DSP Engine
configurable DSP functions


audio DSP for FPGAs

The DSP Engine performs audio processing, compression, limiting and distortion like guitar effects and tube microphone amplification. Also hardware based frequency shifting and reverb is possible. More than one DSP engine can be synthesized using the multi dsp concept for more than one FPGA.


Multi FPGA Platform with Audio DSP Elements
Organization of more than one DSP element in a large FPGA or array of FPGAs






Complete Audio Workstation Functional Diagram

FPGA based audio workstation diagram

The platform can be configured with any number of DSP and Synthesizer Modules. Here the output of the guitar distortion module is shown.


Pyratone GUI - PC Controll

Pyratone PC GUI for FPGA Synthesizer

PC-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 spectrum.


Graphical Spectrum Analyzer

FPGA based Görzel Spectrum Analyzer for Audio Apllications

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 Bits effectively.


Graphical Mixer Representation

FPGA based Digital Mixing Console

A GUI Console shows the knob positions and mixing states for both MIDI and Audio.



Spread Audio Workstation Block Diagram
Several S6 FPGAs used to combine the functions of the audio workstation

Spartan 6 based audio workstation with music synthesizer

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.

Current design prototype
planned design for rack mountable device

Preview audio dsp workstation synthesizer



Finalized Hardware Unit
planned design for rack mountable device


Preview audio dsp workstation synthesizer


Sound Demo
 (Remake of my "NOX" from 1998)

Former Version of the Workstation (C3, 192kHz)

 

 

© Dipl.-Ing. Jürgen Schuhmacher 2011