Automatic generation of acoustic landscapes

For my masters in computer science at UBC, I developed a tool to help produce randomized audio streams from samples of source material. It was built to help create soundscapes for virtual environments and other scenarios where long streams of audio are used. While mostly in the background, these streams are vital for the creation of mood and realism.

Our approach is to extract the component parts of sampled audio signals, and use them to resynthesize a continuous audio stream of indeterminate length. An automatic segmentation algorithm involving wavelets is used to split the input signal into syllable-like audio segments that we call natural grains. For each grain, a table of similarity between it and all the other grains is constructed. The grains are then output in a continuous stream, with the next grain being chosen from among those other grains which best follow from it. Using this sampling-resynthesis technique, we can construct an infinite number of variations on the original signal with a minimum amount of interaction. Examples of original and resynthesized audio.

New: Try this as an applet. The entire program, or one sample.

Warning: both of these applets are very bandwidth intensive. They are not suitable for use over a modem connection.

Download source or java jar package

There is javadoc documentation for these packages.

My supervisor was Professor Dinesh K. Pai.