96 kHz.org
Advanced Audio Recording

Advanced Sound Generation with Direct Digital Synthesis

Classical sound generation in virtual music synthesizers is mostly done by providing 3 or more waveforms like sine, square and triangle using the so called direct digital synthesis (DDS). A phase vector often called accumulator is continuously increased with a value which is related to the desired frequency and steps quicker or slower through a virtual wave indicating the values to use. The higher the incremental step, the higher is the final frequency performed by the DDS. The vales for the wave shape are either obtained from the phase value directly (like with square and triangle) or read from a table like often done with sine waves. Also generic functions can be used to calculate the sinus value. This method is easy to implement into DSP systems but introduces several problems because of the granularity of the table which is limited in size, the limited width of the phase accumulator and an overflow issue relevant for non sine wave shapes. See a simple example of a music DDS application for an organ.

These issues require additional treatment of the obtained values to make them appropriate for advanced musical usage.

 

Problems with Direct Digital Synthesis

A very effective method is to filter the value with a given edge frequency and thus remove the edges introduced by interpolation methods, which are mostly necessary for a good resolution. The subsequent diagrams show the filtered value (red) of a coarse wave table (green) controlled by an accumulator (dark blue) and it's upper bits used for the table address (light blue) for two different cases (low + high frequency).

DDS sine wave with analog filter without dithering

Common problem with low DDS frequencies: A kind of a stairway occurs (green) and the filtered analog value follows in a non linear way. The interpolation of the filter is not appropriate. The first idea was to lower the filter frequency to get it more smoothing. Of course, a lower edge frequency would lower the problem, but could work for higher frequencies anymore.

 

Problem with high frequencies: The wave is represented by only a small number of values and the phase granularity (for non sine waves also the gap at the point of maxium) becomes relevant. 

 

Dithering Techniques help to improve Sound Generation with Direct Digital Synthesis

DDS sine wave with analog filter with dithering

Amplitude and phase dithering is used to control the anti aliasing filter behaviour and reduce the number of unwanted harmonics in the signal. The linear increasing phase vector (dark blue) is dithered and rounded to different values (light blue): "Stair like" effects are obviously reduced when looking at the filtered wave.

 

 DDS sine wave with analog filter and phase dithering

Dithering also helps to overcome the problems caused by the granularity of the phase accumulator. The unwanted digital phase jitter is smoothed significantly. The resulting sine wave after the anti aliasing filter is much more precise and has less unwanted harmonics, since the errors are distributed all over the spectrum occurring as a low noise.

 

When using a high resolution table with at least 10 Bits accuracy for amplitude and 12 Bits for phase, a pretty precise sine wave can be produced. Dedicated harmonics can be produced using wave multiplication.

 

Conclusion

Classical DDS techniques might fulfill the requirements of advanced music synthesis when special treatment is performed. Issues caused by rounding can be lowered when adding dither noise. Read also Digital Noise Generation

 

Read also Limits of DDS, Dithering

 

 

© 2002 J.S.