Cha-Ching: The sound of selling sounds
July 9, 2011
Bandcamp sells a lot of tunes, that is for damn sure. Folks from New Zealand, the Czech Republic, Mexico, Japan – they are buying up jams in innumerable genres at all hours of the day, every day, everywhere. This May, there were 96,335 transactions in sixteen currencies, and 11.9% of them involved some kind of merch – a 12″ vinyl record, a signed t-shirt, an elaborate playback module set in a finely finished humidor, etc. Being that Bandcamp is only comprised of a handful of people and is philosophically a continent apart from the typical successful company, the already impressive sales are all the more awesome. I got it in my head to celebrate in the most appropriate, laughably nerdtastic way I could imagine: to transform the sales into their own piece of meta-music.
Imagine the musical zone where you might find Edward Tufte hanging out, a smooth valley populated by aesthetically superb and informationally elevated audiographs. Though the large-scale structure of the sales data is too regular and constant (both for a single month and across many) to be all that musically interesting in terms of form, the constant hum of sales has a lot going for it in terms of internal variety. It is that variegated hum, the ongoing process of sales, that you can get a feel for by listening to this:
What is it I am hearing, exactly?
Every 45 minutes in real time is represented by one 100ms blip in audio time. If there is a sale in a particular currency in the given window of time, it will sound as a representative pitch in the larger chord (don’t ask me which 16-note chord this is, this guy doesn’t know enough about Theory to tell you). The mapping of pitch to currency was done as a matter of taste, but with the relative frequencies of each currency in mind. In other words, the most common currency types were given pitches that together make a nice warm center, and all the potentially abrasive stand-out frequencies were moved out to the fringes.
This has the added effect of drawing attention to less common kinds of sales, doing all kinds of great things for you acoustically and cognitively. To supplement this effect, the amplitude of the blips also favors unusual sales. The coefficient (or per-sale loudness factor) was inverted, so currencies that have, say, two sales at most in one 45 minute window will be louder than those currencies with 20 or more at the least. Things still get louder when there are more sales involved, but instead of harmonic mud there is statistical detail.
The twangy electronic timbre that peppers the top of this sound salad represents the strangeness of sales, as a function of the standard deviation of sales in a particular currency in the given window of time. If fans were hella cheap or crazy generous at that moment, twangification happens; the louder the twang the more unusual the transaction.
The last thing worth mentioning is the swell right at the very beginning. In that short span you are given (almost) the entire range of harmonic, timbral, and dynamic variation you’ll experience of the course of the next two minutes. I like to think of that moment as the definition of the axes of the graph.
How does it work?
Most of this was written in Ruby, with a ratio of approximately ten minutes of labor to every second of audio. Nerds will be nerds, after all. A small program gathers the specified data from a database, and hands that chunk back as a file. This file is read into another local program responsible for most of the work. It first distills a buttload of statistics from data, both for individual currencies as well as the entire set of ‘em. Some of the stats are used in playback, but others are around just to give an impression of the data at hand (for manual parameter tweaking, etc). The temporal resolution of the sales data is then reduced, from individual seconds to 45 minute chunks. Choosing that time scale (as well as doing reduction like this at all) brings the final output back from the far, monotonous plains of “the unlistenable likeness of boring” to a point somewhere near “bitchin’.”
To wrap up all the initial crunching, the program produces a pre-computed table of values for playback – the more work done before playback, the faster playback can be. Using the OpenSoundControl protocol, Ruby and Max/MSP hold hands, Max hosting the audio synthesis and playback controls, Ruby spitting out the parameter values. A bank of oscillators and amplitude envelope curves is responsible for the pure-frequency blips, and a coupled bank of buffers with their own envelopes gives the gritty sounds. The grit is a recording of the air and water systems at Bennington College’s Crossett Library, variously pitch-shifted to have the same fundamental frequency as the related blip(s). The recording is longish, so you hear a different part of it each time the grit sounds.
Listening to other months and time frames in the same manner, it is clear the graphs are growing louder and more harmonically populous. That’s the right idea.
If you are so inclined, you can download the track here: http://nrpm.bandcamp.com/track/cha-ching-may