<<
Statfeed~ is an audio-rate implementation of the Statistical Feedback
heuristic for Pure Data. The user specifies the number elements
(representing evenly-spaced, digital sample amplitudes between -1 and 1)
to choose from, and an exponent. The larger the exponent, the lower the
probability that a recently-chosen element will be used again before all
of the others have been chosen.
![](Materials/sfobject.png)
When driven by white noise, the object operates in the typical
manner (as described by
Barnett,
Polansky, and Winter).
Driven by non-random audio sources, however, it produces different
results. I have been particularly interested in feeding the audio
output back in as a driver. The input parameters continue to produce
similar qualities of effect (tone vs. noise, frequency) if not the same
kind of control. The following are sample waveforms from my
experiments:
 
Statfeeder is a Pure Data patch that employs three Statfeed~ objects for
performance, recording, and experimentation. The three objects can be
driven with any combination of white noise, constant-value audio signals,
and their own outputs.
![](Materials/main_interface.png)
Presets feature the range of textures and timbres possible, and two
interfaces (rhythms and transition) use a message-rate
statfeed objects to switch between presets. I have also designed a
waveform visualizer in GEM that designates a circular oscilloscope to each
Statfeed~ object. The patterns emanating from each scope come directly
from the sample values generated. In general, noise and
high frequencies tend to appear as misty halos, while steady tones and low
frequencies tend to appear as geometric patterns. See the video below
for examples.
You can find the current code for this project
here
and
here.
<<
The shift_register_sixteen_bit object is a virtual audio-rate shift
register for Pure Data. The object truncates incoming signal values to
1s and 0s and then outputs DSP blocks of those values as they are
bit-shifted across 16 1-bit taps.
![](Materials/Shiftshaper/pd_object.png)
The object's instantaneous state can
be defined by with an integer (which the object converys to a 16-bit
binary number).
Sending the output signals from different taps through audio-rate XOR
gates (using Pure Data's [expr~] object) and then feeding the resultant
signal back into the register's input creates the equivalent of a
linear-feedback shift register.
![](Materials/Shiftshaper/waveform1.png)
Whereas linear-feedback shift registers have typically been used to
generate pseudo-random numbers, it is more interesting (for sonic
purposes) to select tap/gate arrangements that generate more periodic
(and therefore tonal) sequences.
Shiftshaper is a Pure Data patch for exploring the sonic possibilities
of audio-rate, linear-feedback shift registers.
![](Materials/Shiftshaper/main_interface.png)
Two units, each
consisting of three shift registers separated by variable-length delay
lines, allow a wide range of register lengths, tap locations, and gate
combinations. See the video below for examples.
You can find the current code for this project
here
and
here.
<<
Quiet Takes is a project oriented around the role of silence in
the history of film.
               
 
What would a film be if it were only
its quiet parts?
Speech and nondiegetic music do the lion's share of the work in a
film, compelling the narrative forward and tying together
disparate moments in time. Meanwhile, periods of relative quiet
tend to fall to the extremes of meaninglessness or
profundity. Quiet Takes explores what happens when a film
is truncated to these two kinds of scenes.
The first film I've analyzed with this process is Ingmar
Bergman's 1951 film
The Silence. See the video below for a short clip
from the result.
The entire process of analysis and resynthesis was automated.
First, a program written in Python analyzed the film's soundtrack
using a recursive windowing and RMS-comparison algorithm.
Then a Pure Data patch using GEM replayed and recorded the list of
silent segments, three at a time,
allowing for smooth crossfading between scenes and sounds.
You can find the current code for this project
here
<<
Finite Type is a system for musical performance using
cryptographic attacks on keystroke dynamics and acoustics. The
performer provides a text file from which the program calculates a
table of transition probabilities. Then, as the user types on the
keyboard, the system builds a Hidden Markov Model of the user's typing
patterns (based off the time intervals between keystrokes) and
generates guesses about what the performer has typed.
My long-term
goal is to combine this system with timbre classification to create an
instrument that can be played by modulating both the rhythmic and sonorous
aspects one's typing technique.
My work was inspired by recent research into biometrics and
cryptography. A paper on deciphering messages through keystroke
dynamics can be found
here.
Two papers on deciphering messages
through acoustic keyboard emanations can be found
here and
here.
You can find the current code for this project
here
<<
Antennae is a sculpture project in which unearthed tools, fragments of
metal, and other objects are connected in a feedback
oscillator circuit.
In
Antenna 1, two trowels serve as the
conductive plates of a capacitor, while a window-sash weight serves as
the core of an inductor. These components are integrated, via the
amplifier circuit on the back, into a Wien-Bridge oscillator.
I began the project after conducting ethnographic fieldwork on
Electronic Voice Phenomenon in the United States. I was inspired by the
experiments my informants made using combinations of electrical equipment
and sentimental objects to channel the otherworldly. Future sculptures
will use different circuits and feedback topologies with the long-term
goal of producing a small ecosystem of whose members are sensitive to one
another as well as fluctuations in the ambient radioscape.
<<
IATF builds on my interest in what results from using the (scaled)
output of the Statistical Feedback heuristic as its own driver (in other
words: fed-back statistical feedback). I wrote an implementation of
the heuristic in python and then built a system around it to generate
output from different numbers of elements and exponents. The output is
collected and analyzed, and the results are displayed in an interactive
panel built with Tkinter.
![](Materials/IATF/IATF_image.png)
Of central interest is how the input parameters effect which unique
"loops" (repeating sequences of states) the system arrives at. As one
would expect, the larger the number of elements, the greater the number
of possible loops. But I also hope to show that certain contours of
starting state arrive at distinct kinds of loops.
You can find the current code for this project
here