This webpage is about my final project for MUMT 307, in which I designed a set of Max/MSP patches that synthesize natural sounds. These sounds are meant to emulate the environment around a cabin owned by my grandparents in West Virginia, and include crickets, wind blowing through the trees (accompanied by chimes), a campfire, and a stream. They also represent the four classical elements of Earth, Air, Fire, and Water (I figured crickets, as natural life, were close enough to represent Earth). The files necessary to run the final product can be downloaded here (make sure the patch is in presentation mode for a friendly user interface). Here's a picture of the final product in presentation mode.
The main patch here includes an [ezdac~] to turn Audio on and off, a master volume control, and on/off, panning, level, and special controls for each sound. I'll describe exactly how each sound works and include pictures of the patches below.
Each of the cricket patches looks like this, with the same additive synthesis technique used to create the cricket noises. The frequencies used in synthesizing the sound were found by plugging in audio ripped from a YouTube video (at https://www.youtube.com/watch?v=K8E_zMLCRNg) into Audacity and doing a quick spectrum analysis. An envelope consisting of a set of amplitude jumps is then applied roughly every .5 seconds, although the specific number of milliseconds between chirps is varied by a [drunk] object. Finally, the dry cricket sound is mixed with a signal creating by applying reverb to it. As can be seen in the presentation mode image, the user can set the number of crickets they want using a small number box (0-3 crickets). When a cricket noise is in use, a small cricket will appear to the left of that cricket's controls. Each cricket has its own panning and level controls. The cricket noises can also be individually "offset", so that they can be triggered at different times as opposed to always being in sync.
The wind subpatch is quite simple: just a set of three noise generators filtered by [reson~] boxes with different center frequencies. The amplitudes are randomized inside the randomizedAmplitudes subpatch. There is one inlet at the top of the main wind patch that takes in a value indicating "Windiness," set by a slider in the main interface. If Windiness is set to a high value, the final amplitude of the output will be higher, and the individual amplitudes of each noise generator will fluctuate more frequently.
The wind chimes patch also takes the same Windiness value input as the wind patch, and uses it to determine the amplitude of the chimes and how often the chimes are struck. The chimes are synthesized using a modal synthesis technique, where a sample of my phone hitting a table in the Trottier building excites a set of resonant filters with center frequencies and adjusted amplitudes according to data found at http://www.vibrationdata.com/WindChimes.htm. There are five separate chimes, each with its own spectrum.
This patch features a couple of noise generators used to generate the rumble associated with campfires and fireplaces, along with a bunch of randomly triggered and filtered clicks that serve to imitate the cracking sound of wood set alight. By happy accident, I found that by randomly and suddenly changing the amplitude of the noise generators, I managed to both make the rumble more realistic and create the high-frequency tapping or hissing sound heard in a fire (because of the clicking created by suddenly changing the amplitude of a digital signal).
The stream sound is created by mixing noise with a "gurgling" sound generated by a set of four sinusoidal oscillators with constantly changing frequencies. I have to admit that the genius behind this patch was found at http://www.obiwannabe.co.uk/tutorials/html/tutorial_stream.html. While I managed to get the sinusoidal oscillator part myself, the esteemed Mr. Obiwannabe made that sound much more believable by multiplying the signal from the oscillators by its first differential, so that larger changes in frequency are met with larger changes in amplitude as well. This helped make the sound more "rumbly" and less "whistly".
This patch is controlled by sliders labelled "Rocks" and "Depth", which are values representing the number of rocks in the stream and the depth of the stream. With high Rocks and Depth settings, the sound could believable be a waterfall. The level of the noise is dependent on both inputs, as it is the result of the two multiplied and then scaled down. The level of the gurgling oscillators is simply scaled from the Rocks value.
Help for stream synthesis found at http://www.obiwannabe.co.uk/tutorials/html/tutorial_stream.html.
YouTube video used to find spectrum data used for additive synthesis found at https://www.youtube.com/watch?v=K8E_zMLCRNg.
Data used for synthesizing wind chimes found at http://www.vibrationdata.com/WindChimes.htm.