Tech Projects

CrossoverUnit Digital loudspeaker crossover design using Apple's AudioUnit architecture.
Function Generator Simple function generator AudioUnit for MacOS X
SoundBlocks Master's thesis: a set of interconnectable blocks for children to explore music and audio manipulation.
Vocoder Multiband analog vocoder and vocal harmonizer.

CrossoverUnit

CrossoverUnit is an AudioUnit plug-in for MacOS X which implements many common filters used in loudspeaker crossovers:

Low Pass
High Pass
All Pass
Butterworth, Linkwitz-Riley, Chebyshev, Bessel types
Up to 8th order
Shelving Low Pass
Shelving High Pass
First order (suitable for dipole speaker equalization)
Boost / Notch Variable depth and Q
Biquad Also known as "Linkwitz Transform" for sealed box equalization

Usage

With this plug-in, you can design and audition digital crossovers with any number of drivers and any level of complexity. To do so, you will also need the following:

1. Multi-channel audio interface, with enough outputs for each driver in the system (e.g. 6 channels for stereo 3-way)
2. Power amplifiers for each driver
3. AU Lab, an application which comes with Apple's Developer Tools
4. (optional) Soundflower, a free audio routing utility by Cycling '74

Detailed setup instructions can be found here.

How it works (tech details)

These are IIR filters modeled after their analog equivalents, and indistinguishable from the analog in performance (except that these will have less noise!). Filters are designed starting with continuous-time poles and zeros, which are prewarped and converted to discrete time. Second-order cascade structure and 64-bit double-precision arithmetic are used to minimize rounding error and ensure stability even with very high Q and very low frequency poles.

Download and installation instructions

CrossoverUnit v1.0 (Universal binary, MacOS X 10.4 or later)

To install, drag the component into the following folder:
[Home directory]/Library/Audio/Plug-Ins/Components/

Known issues

The UI currently assumes a sample rate of 44.1k. The filter itself should work at any sample rate, although this has not been tested.

Because the state of the filter is cleared every time a parameter is changed, sweeping a parameter results in small clicks. This is only an issue when the parameters are actively changing, and should not come up in the operation of a normal crossover.

AudioUnit function generator

This simple plug-in makes use of Apple's new generator class of AudioUnits to implement a waveform generator. Frequency and amplitude are controllable, and the waveform can be sine, triangle, square, or sawtooth.

Usage

Any application that supports generator AudioUnits can use this plug-in. Apple's AU Lab (available with the Developer Tools) is one such application. In AU Lab, make a new document with the desired number of output channels, and select the audio interface to use. Then with the document window open, choose "Add Audio Unit Generator" from the Edit menu and select APM->FunctionGenerator.

Download and installation instructions

FunctionGenerator v1.0 (Universal binary, MacOS X 10.4 or later)

To install, drag the component into the following folder:
[Home directory]/Library/Audio/Plug-Ins/Components/

Known issues

The UI currently assumes a sample rate of 44.1k. The only practical consequence is that the maximum frequency is 22050Hz.

SoundBlocks

"SoundBlocks is a tangible environment where young users connect blocks to describe network dataflow. The environment explores digital sound manipulation as a personal, meaningful and fun artistic endeavor, rather than as a venture into mathematical, electronic or networking relationships. Led by their own curiosity, children can design their own sounds by exploring SoundBlocks. In doing so, they will indirectly learn about networks, mathematics and hardware synthesizers and sequencers. The environment will shift the child's focus from the product of creation to the process of creation."

--John Harrison

This is my master's thesis at MIT, completed in 2005 at the MIT Media Lab. The project was a collaboration with John Harrison, now director of CRATEL, the Center for Research in Arts, Technology, Education, and Learning at Wichita State University. My thesis focused on the circuit design and firmware of the physical blocks, as well as the software to communicate between computer and block network.

Abstract:

This thesis describes the technical implementation of a set of interconnectable blocks designed to be used by children to explore the possibilities of digital sound manipulation. In contrast to similar modular systems, this project places an emphasis on achieving the minimum possible cost. Every aspect of the design from the circuitry to the high-level code will be covered. Two particular innovations will be described in detail: first, a new method of combining power, data, and clock signals onto a single wire, and second, a method of determining the topology of a network of devices usually connected electrically in parallel.

Thesis (PDF)

John Harrison's SoundBlocks page

Vocoder and vocal harmonizer

This was a project for MIT's 6.101 analog electronics laboratory, designed collaboratively with Uriel Klieger and Philip Decamp. The project combines a 19-band analog vocoder with a circuit to harmonize the input from an instrument or singer. The vocoder uses two banks of narrowband filters and a set of voltage-controlled amplifiers to shape the spectrum of one signal to follow that of another. Using a vocal signal to control the spectrum of an instrument signal, the result is a surreal impression of an instrument talking.

Vocoders, both analog and more recently digital, have been around for decades, but our addition to this project was a vocal harmonizer done almost entirely in analog electronics. After filtering the input signal to remove noise and high-frequency harmonics, a frequency-to-voltage converter produces a control voltage proportional to the pitch of the input. This voltage is amplified and attached to a voltage-controlled oscillator. The F-to-V converter and VCO are calibrated so that with no amplification of the control voltage, the input and output frequencies are identical. By amplifying by ratios such as 3/2, 4/3 and 5/4, notes can be synthesized a perfect fifth, perfect fourth or major third above the input pitch. These synthesized tones are fed into the vocoder so they acquire the same timbral characteristics as the input signal. The result is a chorus of instruments or singers in perfect harmony with the input.

Full report (PDF)