Hoffer_Assignment1_feedback-recursion

I AM SITTING AT MY COMPUTER. ALL DAY.

Similar to the YouTube codec edition of “I am sitting in a room,” I decided to focus on encoding and decoding within the computer world. No real things! Not allowed. Except the original sample loop, which is real:

This loop is a simple keyboard figure and some tin cans with piezo elements taped to them, looped and run through an eighth-note delay. It’s a little noisy, has a mix of a room mic and a direct line– something pleasantly human, ready to be turned into Robot Time.

TEST 1 – AUDIO TO MIDI

Ableton Live has a cool feature where you can take any audio source and turn it into MIDI notes. The software comes with settings for Melody, Harmony, and Drums– so I assume it works a little better when you have an audio source that is one of those things. Instead, we have this one loop. The Harmony setting seemed to result in the largest number of notes getting encoded from the loop, so I decided to start there.

So we get a scrambly pile of weird MIDI notes. Rather than play the MIDI back through an external instrument, I thought it would be more true to the project to somehow use the initial audio with the resulting MIDI to make the next generation of audio. My first idea was to use a vocoder on the original audio, using the MIDI pile as the carrier– that way I could use the full original audio, and avoid the intrusion of a software instrument. G1 sounded like this:

Cool! Sort of like a Harry Partch version. But I got sidetracked by using the original audio as a sample to be triggered by the MIDI. This would mean triggering pitched versions of the first few fractions of a second of the original audio… Maybe less faithful to Lucier’s idea of serially processing the entire original signal, but it sounded nuts so I couldn’t resist. Here’s the full output, from the original through seven regenerations:

So the natural state for this system is… silence. This is because of the MIDI encoder– it tends to leave areas silent if the audio is too fast, or too complex, or not percussive enough… I think. Anyway it starts to insert rests after a few generations, including at the beginning of the loop. To keep things from falling silent too quickly, I allowed myself a cheat of setting the sampler to play back starting at the first recognizable audio, rather than from the now-silent front of the original loop. Also, oddly, the MIDI’s pitch tended to come out a perfect fifth above the original file. Recursion of that feature also took us out of the piano range pretty quickly, so I corrected resulting audio down 7 semitones with every generation as well.

TEST 2 – STRETCH CONTRACT

Over to Logic! I’m really into using the natural glitchiness of pitch-maintaining time stretch algorithms when they are stretched over-long. I wondered what would happen if I used Logic’s Stretch Time to stretch the loop, printed it, then used the same process to contract it. I’d then print the contracted version, stretch it again, etc etc. The time stretcher maintains sample rate, so when stretched to double its length, you’ll get an equal number of original samples and algorithmically generated “guess” samples. On contraction, they would erase half of those samples. Would the system selectively remove the guess samples, or would it get a mixture? Would I eventually get a loop that was mostly guesses? I decided to go with a 2:1 stretch.

After eight regenerations, the short answer is “no”. Hard attacks were blurred by the time stretch algorithm– no surprise to me– but a lot of the other primary sounds sounded pretty much the same after a bunch of iterations. Fascinatingly, the biggest change was a reduction in the noise floor: the final loops feel like a gated version of the original, but like a really transparent gate.

TEST 3 – MP3-O-RAMA

Again, inspired by the youtube iteration file. In the misty past, I’ve tried recursive mp3 encodings– an indeed, after a few hundred recursions you do indeed sound like a total monster. I thought it might be interesting to see what the difference was between an mp3 and an original, and somehow iterate that process.

I created an mp3 version of the loop, inverted it, and combined it with the original. Therefore, anything that made it into the mp3 that is identical the original will be cancelled out, an we should be left with just the difference between the tracks. I’d then take that resulting ‘difference track’ and use it as the original audio for the same process, over and over. Through this process, we should eventually get something more and more like the character of the mp3 encoder itself. In the photo above, the top track is the generations of “original” audio, and the bottom is the mp3 versions. Here’s what the top line sounds like, at 20 regenerations:

Spooky. But not exactly the distilled nature of mp3. That, it turns out, was what started to come out of the bottom line. Mp3 re-encodings of the vague rhythmic noise heard above resulted in some pretty isolated examples of mp3 random pitch generation:

Some technical notes: to maximize the amount of audio that would show up in the inversions, I used a very low-kbps mp3 encoder. In addition, after I was finished with recursion, I normalized the resulting samples to boost them up to a more audible level– boosting overall level, but more or less maintaining dynamic range.