Chris Carlson - Music 220b Final Project: Live Looping and Multiband Spatial Processing with ChucK

Sampling, midi-controlled loop manipulation, and multiband spatialization are explored in this project. A single channel of audio input is processed through a looping engine and a custom 8 channel filtered feedback delay spatialization effect. A Korg Nanokontrol midi controller is tightly coupled to to the looping engine, allowing the performer to trigger recordings of up to seven unique loops, manipulate playback rates and loop directions, and adjust output levels. A collection of prerecorded found sounds are also available. Each of these dry recordings may be panned incrementally around the sound field. Signals sent to the multiband spatialization effect are passed through a bank of bandpass filters, separating out low, mid, and high frequency ranges. These filtered inputs are then processed separately through unique filtered feedback delay lines for each of the eight output channels. The outputs of each delay line are randomly cross-faded with each other, resulting in echoes and resonances that glide through the eight channel sound field in real time.

The following audio file is an improvisation using a 6 channel version of the system collapsed to two channels.

220B Final Project Test Render by cloudveins

Here is a demo video with an overview of the controls and a brief performance example:

Download the full source distribution here

A few notes regarding installation and execution: The looping functionality is very tightly mapped to the Korg nanokontrol midi controller. I have included the "sceneset" (all midi control mappings) which can be downloaded to your nanokontrol (file: 220_final_nanoKontrol_sceneset.nktrl_set). Please make sure to install this - otherwise you will need to look at and modify the midi mappings (msg.data2 = control change number) for each CC# to match your controller. Also - in order for the code to successfully run, you must modify the paths near the top of the following files: and to point to the source directory and the sounds subdirectory. Run chuck --probe in terminal to determine the device number of your nanokontrol. Modify line 53 of to use the appropriate device ID number. If the nanokontrol is successfully opened, you will see a printout in the ChucK console window (or in terminal) telling you that the nanoKontrol was selected as the midi device. To run the instrument, open and add it to the virtual machine (or run LaunchPad from terminal). You should see all shreds launch in the console monitor. Do not be alarmed when you see "Stabilizing: #" in the command prompt as you are playing. This message simply indicates that a filter is being turned off temporarily due to the output exceeding a threshold. This monitoring system allows us to safely approach the edge of "dangerous resonances." It is a feature, not a bug :D

The following controls are available for the live looper