Devlog #8
Hello there. I’m Duncan and this is the weekly Loud Numbers development log newsletter, which you signed up to at loudnumbers.net. I hope that sounds at least a little bit familiar, but if not then we’re a data sonification podcast and this newsletter is where we’re sharing our creative process.
Irradiation
This week, I mostly worked on the first version of our Geiger-counter Brexit sonification. It’s is actually the first sonification that I’ve coded myself - Miriam has done the other two we’ve made so far. It took me a while to get started, because I had got the idea stuck in my head that it would be really hard, but when I finally sat down to do it it wasn’t too bad.
This piece is similar to the other pieces we’ve made in that it goes through three main steps. The first is loading the data, the second is processing the data, and the third is playing the processed data. That’s a good mental model for sonifications in general, actually.
Loading the data is pretty easy. We shared a snippet of code for that a few weeks back. You open a file, crawl over each line, and then push that line into an array.
Processing the data is a little trickier - it usually involves mapping, or normalising, the data from whatever scale it’s on into a scale that’s suitable for playback. Perhaps your input data runs from 0 to 100, for example, but you want to use it to control a synth’s amplitude, which needs numbers running from 0 to 1. We shared a snippet of code a few weeks back that does this too.
In my case, this step was trickier still because I wanted to recreate the sound of a Geiger counter, which has a strong random element to it. After thinking about the problem for a little while, I came up with a system where each datapoint is represented as a collection of small slivers of time, each a fraction of a second, which can be turned “on” or “off”. If they’re on, they play a “tick” sound, if they’re off, they don’t.
I represented those time slivers as an array of numbers, and started out with all of them set to zero, meaning “off”. I then wrote a function that would switch slivers “on” at random, and the higher the value of the data the more that would be turned on. The result is that when the data is higher you get more random clicks in the same space of time than you do when the data is lower. Just like a Geiger counter.
Playback
I passed the processed data into step three of the sonification process - playback. I picked a clicky synth, shortened the duration of the sound to make it even clicker, and then added some distortion for texture. The result is a reasonable imitation of the real thing, though I think we’ll probably want to play a bit more with effects in Logic.
Here’s a little sound snippet of where we’re at so far.
There was only one problem - the resulting piece of music was about 21 minutes long. I solved that one by switching up the data from days to weeks, which brought the track down to a much more manageable 3 minutes. I may need to extend that a little, but it’ll do for now.
The next step will be to bring in the other datasets - opinion polling data, data on the value of the pound against the euro, and perhaps some of the petitions launched by both sides. Miriam and I have chatted a bit about how we’ll do that, and you’ll hear more next week.
Once that’s done, it’ll then just be a case of exporting it to Logic and finishing it off with a pumping news music intro and outro, and some samples of political speeches from the whole ordeal.
Do you have any “favourite” moments from the whole Brexit saga that we should sample for this track? Hit reply and let us know!