advanced audio recording
An additive sound synthesis module in VHDL
   Cyclone 2

23 wave forms

60 MHz

24kHz bandwidth

Altera Cyclone 2 System

Cyclone 2 MIDI System Gleichmann Research

Additive Synthesis Module

1024 voice polyphonic music synthesizer module

This module is based on additive sound synthesis. Several sine waves, matching the intended generator frequency, are generated and additively superimposed. The principle corresponds to the Fourier and Laplace analysis, according to which it is possible to generate practically any waveform from simple sine waves.

The first module was used in an industrial application to generate and modify multiple waveforms in parallel in real time. It can be used for sound synthesis with slight changes by e.g. band limiting to 24kHz. With other minor changes, it can be used as a LaPlace waveform generator to generate band-limited triangles and rectangles as test signals for audio circuits. Up to 23 waves can be generated in a VHDL module that is available online.

The module works up to 60 MHz and runs on a current Cyclone II FPGA chip.

Example 1

To shun issues with alias frequencies in audio systems with limited sample rate,
pseudo rectangular waves can be used by super imposing those harmonics which
are still below nyquists frequency.
sine wave generation in VHDL

band limited rectangle built with sine waves

Example 2

To create so-called flat-top square waves that approximate hard-constrained waveforms and maximize the energy of the signal at a given amplitude, the coefficients can be optimized to produce very little oscillation and a broad plateau. Even mathematically strictly monotonic waves with only one inflection point are possible this way.

band limited rectangular wave as flat top
optimized band limited flat top waves built with sine waves

Wave Generation

Virtual oscillators are used to generate the sine waves.

sine wave generation in VHDL
Timing Simulation with ModelSIM


audio spectrum analyzer created with spartan fpga on a 1920x1020 TFT screen

Graphical Spectrum Analyzer Appication



© Jürgen Schuhmacher 2006