Joshua Hudelson
Statfeed~
Finite Type
Quiet Takes
IATF
Antennae
Shiftshaper
BELLA
<<
       Statfeed~  /  Statfeeder
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. 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. 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.

<<
       shift_register_sixteen_bit~  /  Shiftshaper
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. 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. 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. 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
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
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
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.

<<
       Iteravely Adjusted Transfer Functions (IATF)
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. 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