Hey all – Rachel here!
I have spent the last year talking with lots of artists who are making amazing things with Raspberry Pis. Every day my inbox is PINGing with exciting progress news. So I’m going to start showcasing some of these projects on the blog. I find them incredibly inspiring – I hope you do too!
I’m going to kick off with a piece from one of my favourite artists: Dominic Wilcox. I bet you’ve seen some of his work kicking around the internet – He made the GPS shoes which guided you home and did some narrative sculptures inside watch faces.
This time he’s partnered up with Creative Technologist James Rutherford to produce Binaudios; a device that enables the user to listen to the sounds of the city – at the moment it’s installed in the Sage Gateshead music discovery centre.
Taking tourist binoculars as inspiration, the Binaudios can be pointed at over 40 different locations, seen out of the Sage Gateshead windows. Turn the giant listening cones toward the football stadium to hear the crowd chanting or to the Tyne Bridge to hear King George V’s speech when he opened the bridge in 1928. Point it toward the park to listen to sounds such as skateboarders and local tennis players.
As the Binaudios are rotated the stereo sounds move from one ear to the other creating a real feeling of listening to the city across the river.
I’ve met loads of ‘Creative Technologists’ on my travels. They believe creativity and art are the driving forces behind the technology they make.
James describes his work as “somewhere between code and art”. He mainly creates software; developing visualisations, data tools or games.
Binaudios was his first Raspberry Pi project AND first go with Python! Just for you guys, he has very kindly written up how Binaudio is put together:
How Binaudios works:
Although Binaudios was developed to look like an analogue device, there’s a small selection of electronics concealed within the central wooden box. A USB lead runs up the central column, powering a Raspberry Pi. This is connected to speakers within the metal cones and a USB hub. The hub adds some extra flash memory and has a couple of ports for attaching a keyboard and mouse for debugging.
Dominic recorded a selection of sounds from across Newcastle. I load these when the device boots. There are around 40 of them, spread across the 180 degree range of movement provided by the ear-cones.
The Pi has a PiBorg XLoBorg sensor attached to the GPIO port. The XLoBorg returns a 3-axis reading of the magnetic field at a point. The Python script very roughly converts this into a compass heading (to do this properly is extremely complicated- so this is a bit of a hack). I spread this heading into two angles a couple of degrees apart to fake some left/right ear separation, pick the sound clips within a small range of these and assign some volumes. The volume profile drops-off over a few degrees which produces a naturalistic ‘telescope’ focus effect. The left/right separation also enhances this as the unit is turned.
The rest is all about smoothing. I debounce the output of the XLoBorg (it has a slight natural waver), ensure volume levels are adjusted gently (audio buffering can cause the sound to chop otherwise, which is very unnatural) and keep the sounds playing even when they are a few degrees out of audio range (this means that sounds don’t necessarily need to restart from the beginning when they are back in ‘view’).
The XLoBorg is a sensitive bit of kit, and magnetic fields are complicated (who knew!?). I needed to spend some time calibrating and recalibrating. Slight vertical misalignment seems to shift the compass heading much more than I first anticipated. It’s a very intriguing bit of hardware and I look forward to playing with it some more!
My test set of samples worked wonderfully, but the program failed critically when I got the real clips- some of the sounds would work, but the rest would make a single pop, or a loud, painful high-pitched wave. I never fully figured out why, but I think I was maxing out Pygame’s audio channels. Originally I was playing all of the sounds simultaneously and just shifting the volumes around (so that all but a few were zero), but I switched this to just trigger those within a small angle range – so it now plays maybe four or five at the same time. There was no failure response from the code, so I spent a manic day trying to squash, re-encode and generally poke the samples about without error reports to work on. Thankfully, the fix seems reliable.
This was my first physical project, first Pi project, and first slice of Python charming!
You can see them in action in this video or you can go and visit in person!