Jump City Records is an open-source, python-based, generative audio project built in the Fall of 2014. The goal was to create a completely self-sustainable record label that automatically publishes its work online.
Under the hood Jump City Records is powered by a variety of scripts performing all of the functions needed to create an "album". This includes: album art generation, selecting source material, mixing the selected samples, lossless outputting, track and album naming, and a readme.txt. At its core, the sounds are sourced from a large sample library of field and electro-acoustic/musique concrète recordings.
This script was designed and developed with help from Michiel Overtoom, a software engineer from the Netherlands. The illustration below was drawn by Matt Carignan of Scramble Skates.
For reference, let's begin by listening to a typical Jump City Records album:
These tracks are best described as sound collages.
They are sourced from a massive sample bank of field recordings, avant-garde music libraries, and other oddities that I've been collecting for the past few years. The script creates tracks by selecting random pieces from this archive, producing them with some panning ajustments and outputs them with a name and album art.
This is not a "smart" system by any means. There isn't any AI or decision making algorithms that determine the output of the track (though that could be an interested experiment in the future). The sonic aesthetic is simply determined by the sample library that it is pulling from, a dance between human-controlled curation and rapdily automated production.
jumpcityrecords/ │ ├── _albums/ │ ├── _assets/ │ ├── sample folder 1 │ ├── sample folder 2 │ └── sample folder 3 │ └── src/ ├── jumpcity.py ├── albumart.py ├── albumtracks.py ├── ... (a few other scripts) └── utils.py
The chart above shows the basic file system for Jump City. There are three main folders:
This folder stores the albums that Jump City outputs.
This is where all of the audio samples live. Samples must be organized in folders because the script will select one folder per album to draw samples from. This was designed for maximum variation.
This folder is where the various python scripts are stored. Everything from generating album artwork to combining and mixing out tracks are all found here.
The following items are generated when the main script is run:
The chart below should help you visualize the process flow of Jump City:
The first step Jump City does is selects a random folder in
_assets to pull samples from. This allows me to assign different pools of samples and makes for great unpredictability. I figured that a single, massive folder would get watered down after awhile.
The selected folder determines the sample bank for the entire album.
After selecting a folder, the script determines how many tracks are going to be in the album and generates its first track. The script then selects three random audio samples in the defined folder and cuts them to the desired length (x). For longer samples (I have a lot of samples that are over an hour) it randomly crops it at (x) duration.
The mixing algorithm is such that each three tracks are panned a certain way. One track pans hard left, another hard right, and the last one is centered. This system makes the tracks a little bit more interesting to listen to and gives them a "wider" feel.
The track then needs to be named. To do this, Jump City just selects a random article title from a Wikipedia entry and prints it as the file name (while writing it in the file's ID3 tag).
The final mixed track exports as a .flac and repeats the process until it reaches the generated track limit.
Here are some examples of of the album art that Jump City generates:
You'll notice that the album art is a bit more formulaic than the audio output of Jump City Records.
The logic consists of picking a background color, generating two quadrilaterals, assigning them two random colors, and rotating them a randomly generated number of degrees. A timestamp is placed at the bottom to indicate time and date of creation (the font used is Orator, incase you're wondering).
One source of inspiration for these visuals was Dadaist algorithmic art, notably Jean Arp's chance collages.
While this project is for the most part complete, the idea of create a "smarter" automatic record label is fascinating to me. Advancements in machine learning and AI have the potential to make bodies of work that will no doubt pass a Turing test.
If you stumbled upon this project, remember that it's entirely open-source. Feel free to do what you'd like to it, just preserve the names of the people who helped build it!
Premiere of Jump City Records at Livestream HQ in Bushwick! (I'm the first presenter):