MUS 220A, Final Project by Regina Collecchia

Regina Collecchia

MUS 220A - Final Project - "Lazy Springs"

Contents

"lazy springs" is a fixed media piece inspired by surf music. All effects, sequencing, and envelopes are coded in ChucK. Sounds from the Wave Organ on the pier near the Exploratorium in San Francisco as well as 4 tracks of guitar were recorded with a Roland Portable R-05 recorder. A slide guitar track recorded with an actual spring reverb pedal, the Malekko Spring, serves as contrast. The spring reverb class "GCRev" was created with a Chubgraph extension, but ideally this would be a Chugin so that it could be easily used by others.

Special thanks to Jonathan Abel for an excellent breakdown of the spring reverb effect, which I discuss below.

Files

ChucK

The stereo output

Input sound files

Spring Reverb

Spring reverb is produced by a cascade of many allpass filters with identical coefficients. The term comes from a rather industrial looking piece of metal called a spring reverb unit. They have a "whippy", upwards-sweeping character that echoes, and can be heard in virtually every surf record before 1960. You should read this paper and maybe even this one too for much more detail than I can explain.

I took two approaches to achieve the spring reverb effect in digital audio, which can be shown to be mathematically equivalent. Physical spring reverb units, in addition to their allpass frequency response, have a lowpass characteristic with a cutoff frequency of about 4000 Hz. The allpass filters have a unitary magnitude response and only affect phase, but the digital feedback delay creates a strong, harmonic frequency response. Therefore, we first downsample our input signal to fs=8000 Hz (after applying an anti-aliasing filter, if needed). Then, the signal enters a feedback loop, first passing through a simple delay, then a dispersive allpass filter, then a lowpass filter at 4000 Hz (essentially another anti-aliasing filter), and finally the gain with which to feedback into the loop. After the loop, I upsample and then apply an anti-imaging filter.

The second approach is tidier. Supposing that our file is sampled at 48000 Hz, we can eschew the downsampling and upsampling, simply by changing the order of the allpass to order 6! The lowpass filter at 4000 Hz takes care of the higher harmonics.