Homework Assignment #4

Steven Backer
sbacker @ ccrma

November 11, 2004


MUSIC 220A - Foundations of Computer Generated Sound
CCRMA, Stanford University


Ed Berdahl and I decided to try and collaborate on this assignment – we felt that if we combined our individual works, we could maybe create something greater than the sum of its parts. Also, we seem to have made many similar decisions on some of the previous assignments, so collaboration seemed only natural. I think in the end, what we came up was well worth the time spent together, and still showcases the individual elements that each of us brought to the table (or canvas).

The patch that I created performs two basic functions by itself. First, it creates chords using the pluck~ object and realtime input from fiddle~ and an electric guitar. Second, it serves as a control interface to/from the Etherwave Theremin*, allowing the theremin performer to interact with the sounds from other instruments.

One of my pd objects, 'triads,' has two inputs – on the right it consumes MIDI note values, and on the left, it takes in a number representing the type of chord it should produce, according to the table below. Then, 'triads' produces 3 (or 4) MIDI pitch values representing a root position chord build on the input note and of the type specified. Not too interesting by itself, but certainly useful as part of a larger canvas!

Value of Left Input to 'triads' object

Type of Chord Output from 'triads'

1

Major

2

minor

3

Major 7

4

Diminished



Using 'triads' I built up the next level of my patch, which is somewhat arbitrarily named 'harmonizer~'. This patch invokes the 'triads' function, as well as two fiddles and a bunch of controls. The first fiddle object is embedded within the “guitar-fiddle” block. It simply calculates MIDI note values from an electric guitar connected to the ADC, and passes these values back up to the harmonizer~ patch. These values are passed to the 'triad' object to create chords. Note that this fiddle makes use of the 'lbyl' block, with quota and tolerance values optimized for the guitars that Ed and I were using.

The second fiddle tracks the pitch and amplitude of the theremin, corresponding to the vertical and horizontal antennae, respectively. Since the theremin outputs fairly clean, simple sine waves, it works well with fiddle, even without 'lbyl'. I sort of picked up on the fact that fiddle could be finicky and is not a perfect pitch detector (else it might be called 'violin'!). This prompted me to choose to work with the theremin, hoping that fiddle could track it fairly well and give the thereminist reasonable physical control of parameters inside of the pd patches.

The amplitude antenna of the theremin controls both the tempo and dynamics of the chords produced by 'triads'. Thus, a user can physically create crescendos and metric variance with the sweep of a hand. Nothing too new here – I think I've seen one or two people conduct similar experiments with larger groups of instruments! As far as the frequency antenna on the theremin, this serves multiple purposes. First, it simply is used to control the type of chord created by 'triads'. So at one distance, a major chord is produced. Moving your hand further away changes the plucked string synthesis to produce minor chords, and so on.

The seond use of the frequency antenna is perhaps the more interesting one. When the thereminist physically grabs the antenna, the pd patch “samples” the current note being played on the guitar. Once the antenna is released, the triadic harmony will remain rooted in that sampled note. It is then left up to the thereminist to create musically interesting sounds by varying the tempo, dynamics, and color of the synthesized chords. In essence, you can grab and capture sound out of thin air.

* I tried using the other Theremin – the wooden one – and found that it was not callibrated the same as the Etherwave. While the wooden theremin seems to have more controls and some tempting CV outputs, most of my patch had been calibrated for the tessitura of the Etherwave, so I stuck with what worked!





When Ed and I brought our works together, we exchanged many ideas and he certainly taught me a lot about pd. His patch for the electric guitar is quite fascinating in its own right. Simply put, he is able to create precisely controlled guitar feedback at relatively low volumes, under user controlled conditions. I'll leave it up to the reader of this web page to go over Ed's work more thoroughly, which can be found here.

Ed and I created a top level patch, which we called 'mixer' that served as an interconnect between our work. Obviously, my patch makes use of his guitar playing (which by the way, was quite impressive) to capture note values that drive the plucked string synth. His 'gtr-feedback' patch utilizes the MIDI note values from 'triad' to control the cutoff frequencies of some of his internal filters, as well as using a control line from harmonizer's thermemin amplitude tracker to modify the rate of his feedback arpeggiator.

Putting all of this together, an extremely interactive performance environment was realized. Interaction occurs not only between both of the physical instruments and pd patches, but also became inevitable between Ed and myself as we began to create sounds with the 'mixer'. We recorded a large amount of real-time performance, preserved at the link below for your listening pleasure. (Aside: LADSPA plugins seemed to inevitably crash ecasound, pd, jack, X, etc. While the addition of fx to the plucked synthesis was necessary to avoid a “Vegas slot machine” sound, the plugins caused us an enormous amount of frustration!). Listen and judge for yourself. I personally think there are some great moments where our physical control of each instruments converged into tightly coherent music, but I only reached this conclusion since I knew how the performance system behaved. It may not be apparent just by listening to the sound; our collaboration really only shines in real time.




Theremin Feedback




Screenshot of harmonizer~ patch:







Screenshot of mixer patch:







And of course, the patches themselves:


triads.pd


harmonizer~.pd


mixer.pd



-Steven