Digital Signal Processing

Noise Generation and Wavetable Synthesizer

A linear congruential pseudo-random number generator (PRNG) was used to create a noise source with a zero-mean uniform distribution. This uniform noise was then used to create a zero-mean Gaussian noise source. A linear congruential PRNG can generate a maximum length sequence mod N, thus offering the ability to generate a long chain of random samples before repeating. For this code, the precision of the Motorola DSP56307 chip (24-bit) was used for N. As a result output signal sounded like white noise as expected.

The wavetable synthesizer was considerably more difficult to implement. It used an assembly script file containing notes, duration, and maximum simultaneous notes. It was capable of playing 32 voices, provided enough processing time is available. The wave shape used for a single note could be easily modified using a matlab script to generate more instrumental sounding notes. An optional incident and decay windowing function could also be applied to individual notes.

Report, Analysis, and Code



Record Noise Filtering

Using a median filter and an adaptive noise gate, it is possible to clean up the pops and static hiss that often plagues old records. Pops can be removed using the median filter and hiss can be removed with the noise gate, but both methods have the potential to be a detriment to the clean audio. The noise gate often removes low amplitude frequency compenents in the upper frequency range which hurts the definition of the audio. The median filter removes definition in more of a blurring fashion.

Report, Analysis, and Code

Valid CSS      Valid XHTML