Background / How It Works

We use a prism to split sunlight up into its component colors (ie, electromagnetic frequencies). In the world of sound, a Fourier transform is like a prism; it splits a sound signal up into its component frequencies. Like a light spectrum, we can represent a frequency spectrum by having the x-axis be frequency and the y-axis be "the strength of frequency x contained in the beam/signal." Suppose we recorded a 500Hz and a 800Hz tuning fork playing together. If we used a fourier transform on the recording, we'd see two peaks, one at 500Hz and the other at 800Hz.

To "sample" a freshly baked cake is to try *part* of the whole cake with the assumption that parts we didn't try taste nearly the same. A computer samples sound by seeing how hard the air is pressing against the microphone at an instant in time, called deflection sampling (because the microphone membrane deflects a certain distance depending on the air pressure due to sound waves). Like sampling cake, a computer samples the sound level in parts and assumes the sound during this rest of time didn't doing anything strange. Because a computer can store samples thousands of times a second, it can record samples quickly enough to recreate the original sound. For example, when you see that CDs are sampled at 44kHz, it means each speaker on your CD player "plays" 44,000 speaker positions per second.

A frequency sample is like a photograph of a light spectrum coming out of a prism. For the given moment in time, the photograph shows the strength of each of the frequencies composing the signal. But because it's a photograph, we can't say anything about what the light signal was like before or after the moment in time when the photograph was taken, we can only say it was similar shortly before and after the photograph time.

WhiteCap is a black box that 1) runs programs called configs, 2) allows these configs to draw, and 3) provides access to a frequency spectrum of the current audio whenever the current config asks for it. Before WhiteCap provides a frequency spectrum to the config, WhiteCap must choose the spectrum's resolution. Let's say you had to describe to a friend over the phone a photograph of a light spectrum (split by a prism). You could say, "from red to violet, it goes strong, weak, none, strong, strong," meaning that when looking at it, you chopped the x-axis into 5 portions (or "bins") and described the intensity of each portion. From that, your friend could recreate the photograph, but it would only have 5 bins of resolution ("bins" is used because real buckets or bins collect over the size of their entire mouth--water falling in near a side is treated the same as if it fell in the center). Now let's say your friend wanted a higher resolution spectrum. To do this, you could chop up the spectrum into more bins, say 20, and proceed to tell your friend the intensity for each bin (making you say 20 intensities total). In doing this, you're trading off the speed to communicate the spectrum in return for your friend getting a nicer looking spectrum. Increasing the spectrum resolution (ie, having a high number of bins) causes WhiteCap to run slower. If we tell WhiteCap to process only a few bins per frequency sample, it runs faster. The 'FNum' parameter in the WhiteCap preferences file sets how many bins WhiteCap chops recorded frequency spectrums into. This means any config that doesn't override the number of bins, you'll count it FNum lines wide.

The 'FRge' parameter affects how "wide" each of WhiteCap's bins are. The larger this number, the more frequencies that will fall into a given bin. Increasing the bin frequency width has the effect of compressing the spectrum (ex, 10 buckets side by side stretch longer distance than 10 cups).