A couple months ago, I introduced a piece of experimental music called Archivorithm Number One. I’ve continued to tinker with it in the meantime, and I’d now like to release a “second edition,” along with a fresh round of audio examples which I hope you’ll enjoy. Let’s kick things off with a twenty-six-minute medley. (See the end of this post for audio download links.)
To recap, Archivorithm Number One is an indeterminate work of phonography, designed to be carried out by a piece of software. The “first edition” varies substantially each time it’s realized, but what each realization creates is a group of phonograms that can be repeatedly played—not a unique performance event. In primary mode, it creates a cycle of ten segments from scratch by combining randomly downloaded audio clips from the Great 78 Project with any designated collection of drum samples according to chance-based rules. In secondary mode, it takes any existing segment as a seed and generates a remix cycle of ten remix segments from it according to a modified set of rules, placing a higher premium on continuity. Individual segments can also be played separately from the cycles in which they originated, either through random shuffling or as a manually assembled medley (like the twenty-six-minute one presented above). So the operator has several opportunities to control how the work unfolds, each of which is an authorized—but optional—step in its realization:
- Selecting particular cycles as “keepers”
- Choosing segments to remix
- Singling out segments for independent use
- Assembling individual segments into medleys (which can be of any desired length)
None of these activities much resembles traditional musical interpretation by a performer. Some of them feel more like assembling a playlist or track list. Others involve assessing future promise: that’s a catchy segment, so let’s remix it and see what else we get; or, that’s some pretty cool audio, so let’s make a music video out of it; or, that one’s no good, so let’s scrap it and move on. There’s something here akin to the practice of “found art” at its most discovery-centered, and also to an editor’s role in accepting some submissions, rejecting others, and earmarking yet others for further development. The operator can ultimately select only from among those results the algorithm itself happens to crank out. On the other hand, I’ve tried to design the algorithm itself so that it will crank out aesthetically appealing results with some regularity—results that can trigger motions and emotions, and that can even get stuck in your head.
Any cycle, segment, or medley can also have a video track added to it that’s been generated in a similarly randomized fashion from materials in the Prelinger Archives. I won’t be providing any video examples in this particular post, but you can find a couple in the earlier one. This time around, I’ve instead chosen a featured image from an a different algorithmic art project (taking any photograph, making three copies flipped horizontally, vertically, and both ways, layering them, and multiplying the pixel values—a byproduct of the “flip-mixing” experiments described here). Its main connection with the subject matter of this post is it’s been the wallpaper on my laptop throughout the time I’ve been working on Archivorithm Number One.
Here’s a representative cycle of Archivorithm Number One in its “first edition” form. It’s a primary-mode cycle, which means that the whole thing was generated by chance all at once, and that all I’ve done is select it as a “keeper” from among a variety of other, less subjectively appealing cycles I could have chosen instead. As you might expect, consistently appealing cycles are far rarer than single appealing segments.
I still like the earlier edition perfectly well. It’s even made it onto terrestrial radio—specifically WFMU, where listeners to the Frow Show with Jesse Jarnow on June 26, 2018, at 1:24 AM, got to hear a different cycle of it sandwiched between Terry Riley’s “Looking for Mushrooms” and a half-speed playback of “Rockaway Beach” by the Ramones. But I think the new edition is an improvement. An installer for the new Windows 10 executable is available here if you’d like to run it for yourself and generate your very own exclusive listenables. The most conspicuous of several changes I’ve made is this one:
- The default source of audio clips remains the Great 78 Project, but I’ve also introduced an option to draw clips similarly from any local folder of audio files in WAV, AIF, OGG, or MP3 format.
As long as the local folder doesn’t also consist of content digitized from grooved media, one difference will be the absence of the distinctive surface noise. But “feeding” the work with different types of source material also yields different-sounding results, which gives the operator a new variable to play around with and introduces further room for experimentation and discovery—something like a piece originally conceived for violin being played on flute or guitar instead. Here, for example, is a cycle that draws its samples from the wonderful Conet Project: Recordings of Shortwave Numbers Stations (which also featured in parts of the opening medley):
Next, here are two pairs of seed (top) and remix (bottom) with samples drawn from a personal playlist of 668 mp3s I put together for myself a few years ago. This was also the source of samples for most of the segments in the opening medley.
And here are a seed and remix built entirely on samples from the soundtrack CD for one recent mainstream animated film. Can you tell which one? Or does this process disguise raw source material so effectively that it can’t be readily identified?
It’s also possible to mix and match, remixing segments based on samples drawn from one source with samples drawn from another source. Here’s a seed segment with samples drawn a folder of miscellaneous classical piano recordings (obtained here)—
—remixed with samples from the Conet numbers station recordings.
The opening medley contains a few segments of this kind as well, although not very many. In general, that medley is a compilation of all my favorite segments that were (1) based on samples from any sources other than the Great 78 Project and (2) parts of primary or secondary cycles that didn’t otherwise grab me. Sometimes I’ve intentionally sequenced two or three related segments (e.g., a seed and remixes) next to each other.
A few other changes in the code have also impacted the above examples.
- I spotted a mistake in my code that affected only the stereo version of the algorithm. I’d been adding the right-channel component of each clip to the cumulative left-channel result instead of to the cumulative right-channel result as I’d meant to, which was reducing stereo separation and increased the difference in volume between clips. This is now fixed. But was the previous version “wrong,” or just different? It wasn’t quite what I intended, certainly, but the adjustment is roughly equivalent to that between first and revised or “corrected” editions of a score.
- I increased the number of possible loop or bar sizes (i.e., the number of clips assembled into each loop or bar): formerly, this was 4, 8, or 12, but it can now also be 3 or 6 (with a 1/4 chance of 6 and 8 and a 1/6 chance of 4, 12, and 3). The probabilistic mix of rhythmic alternatives has therefore changed. But again, the previous version is still an acceptable variant.
- Before, the percussion track invariably divided each bar into sixteenths, which worked well for four-clip loops (4 beats per clip) and eight-clip loops (2 beats per clip), but for twelve-clip loops it resulted in 3/4 beat per clip, which frustrated one of my goals in introducing percussion, which was to mask clip transitions. This issue would have become more problematic with the increased variability in loop size. In the new version, I’ve therefore introduced an alternate percussion algorithm for bar lengths that are divisible by three, treating the start, 1/3, and 2/3 positions as I’d previously treated the start, 1/2, 1/4, and 3/4 positions; and treating the 1/12, 1/6, 3/12, 5/12, 3/6, 7/12, 9/12, 5/6, and 11/12 positions as I previously treated the second-level divisions (1/8, etc.). This creates the possibility of a waltz rhythm. (It also rules out a twelve-clip loop split into sixteenths, which the older code will sometimes have produced, and which for that reason remains an acceptable variant.)
And two purely practical adjustments:
- There was a problem before with the “set output folder” arrangement; it only worked if the output folder was the same folder that contained the EXE file. That, too, has now been fixed. But if you want to use the older version of the code attached to my previous blog post, you’ll need to be sure the “output folder” is set to the same folder as the EXE.
- There was a mistake in the code that preallocates an empty vector for constructing a rhythm track, and this could generate an error once in a blue moon (it’s happened exactly once out of the dozens upon dozens of times I’ve run the script). Fixed.
To round out the demonstration, I’d like to share just a few “second edition” examples that draw their samples from the Great 78 Project, which remains the default source. Here are a seed and remix:
And four ordinary cycles:
Audio Download Links
- archivorithm-seed_1 | archivorithm-remix_1
- archivorithm-seed_2 | archivorithm-remix_2
- archivorithm-local-seed_1 | archivorithm-local-remix_1
- archivorithm-local-seed_2 | archivorithm-local-remix_2
- archivorithm-soundtrack-seed_1 | archivorithm-soundtrack-remix_1
- archivorithm-piano-seed_1 | archivorithm-piano-numbers-remix_1
- archivorithm-seed_3 | archivorithm-remix_3