|
The Additive Synthesis Forest |
Introduction Demo Investigate Reading Credits Home |
|
This is a great demonstration of the power of additive synthesis to create very realistic bird calls.
Simply press the bird buttons next to the bird name. Click on several to make a cacaphonous forest! The random bird is a mixture of all the bird calls with random paramters.

The file birdsgui.m creates the interface and callbacks for each button. When a particular button is pressed the function birdcall() is called with the bird name as the variable (help birdcall). The portion of code that matches the birdname is then executed. This involves defining unique amplitude and frequency envelopes for the bird and finally a 'pscore' of the bird song. The pscore is a cell array which contains: {begin dur freq freq_skew amp freq_env amp_env partials} where freq_env, amp_env, and partials are vectors. Each note must have all these variables specified.
Once the score is created it is passed to the function synth(). This code takes pscore and for each note it calls the function additive(), which then synthesizes the note and returns a signal to synth(), which is added into the larger signal. synth() then returns to birdcall() the final signal which is played over the speakers.
You are encouraged to work through the code, starting with birdcall(), to attempt to understand how it works.
The original code for these birds was in Common Lisp Music, (CLM), developed at
the Center for Computer Research in Music and Acoustics (CCRMA) at Stanford
University. This code was translated to MATLAB by Bob L. Sturm during summer
2003.
Produced by Dr. Jerry Gibson and Bob L. Sturm.
Release date: September 2, 2003
Copyright 2004 University of California, Santa Barbara