The Additive Synthesis Forest

Introduction   Demo   Investigate   Reading   Credits   Home

Introduction

This is a great demonstration of the power of additive synthesis to create very realistic bird calls.


The tool

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.



Things to investigate

  1. Which birds sound most and least realistic? Why?
  2. Why is additive synthesis a good technique for synthesizing birdsong?

Further reading

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.


Credits

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