Research: Tools
MATLAB audio input | MEX Plug-in for cross-platform multichannel audio input using PortAudio |
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. |
MATLAB audio input MEX
Coming soon...
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.