Wandering sound – Part I: Approach

This project is an art installation that should generate sound wandering around in a room. For the room was small and rather labyrinthine (in fact it was a toilet in a bar), it was not possible to use reflections, which is a nice possibility in big clean rooms. So the Approach was to use many (32) small speakers spread across the room. We then fade a sound continuously from one speaker to the next in row. Here we are, the sound is really wandering.

Approach

A normal Device can drive 2 (Stereo) up to 6 (5.1) Speakers. Using many Players would not work without adjustment, even slight speed differenced would sum up resulting in chaos. So the Players would have to communicate and start each other at the exact right time. Instead we take a Stereo-Player, amplify it and then pass on the 2 signals to the correct speakers:

  • set left channel to speaker 1
  • fade in left channel
  • set right channel to speaker 2
  • fade in right channel while fading out left channel
  • when left channel reaches 0: set it to speaker 3
  • fade in left channel while fading out right channel
  • when right channel reaches 0: set it to speaker 4

speakers_fortl

The switching itself was done with relays. The fact that we switch amplified signal makes this easier. Not only we only need one amplifier, we also do not have to worry about unwanted clicks (chatter) while switching.

As a player and control unit I decided to use a raspberry pi 2. As an amplifier I chose a hifiberry amp. [Experience on raspberry and sound]. As speakers I found some nice small waterproof speakers. Later we will see that we need 31 relays to switch the speakers, so we can not (directly) use raspberries GPIO [Experience on raspberry and sound] to switch all of them. There are not enough PINs. So I used an Arduino Mega to control the Relays and got two 16 Relay boards that work well with Arduino. The raspberry is connected to the Arduino by USB, sending serial commands when to set what.

So meet the equipment we are going to work with:

alle_freigestellt_kl

Beautiful, isn’t it? We will have to find transparent housing maybe.
In the next part, I will describe the theory behind the programming.