Building a Singing Tree with Raspberry Pi for a Magical Techno-Forest



For our room-scale end of term class project where we built a techno-forest experience, I was assigned (along with my codeveloper Billy K) the role of creating a “singing tree” that needed to be interactive and contain a puzzle for people to solve. With Billy’s expertise with musical theory and design, we set out to split the task equally, where I would take the lead in the physical experience, and Billy would take the lead in implementing code and experience design. We would later work together to integrate the tree with the remaining puzzles created by the rest of the class to create our magical forest experience.

Initial Design

Because our project is an interconnected experience, I decided to use a Raspberry Pi 3 to power the electronic side of the tree because of its built in wifi and bluetooth capabilities and its processing power. The hope was to be able to connect to other experiences over wifi if necessary. The idea was to create something using capacitive touch as the interaction layer between the player and the tree, either using paint or foil strips in a way that was easily understood.

I started by building an example project from the Ultimate Raspberry Pi Handbook, “Turn a banana into a guitar”(1) as a way to get a quick prototype up and to learn how to use the pi. We used an Adafruit Capacitive touch Hat and soldered Female header pins to connect it to the pi, while adding additional male header pins to the GPIO extension part of the Hat to allow us to connect additional devices if needed. We also had to run a previous version of Raspbian for compatibility with the Capacitive touch Hat (as the way that the I2C bus is initiated in newer versions causes an incompatibility issue).

The connection points on the Hat were connected to strips of aluminum foil with alligator clips for testing purposes. My initial tests with this setup and the example code from the handbook felt very natural and responsive.

I also connected an external bluetooth speaker via an audio cable, because we wanted the sound that the tree makes to come through the tree. It’s connected over a cable, because when running python scripts with super user access (which is required when using the raspberry Pi GPIO pins) the default audio output is through the headphone jack.

I was also able to successfully add code to the example project that would turn on an LED connected to the GPIO pin extension of the capacitive touch hat.

Growing the Tree

From that initial prototype, we needed to scale up to something much bigger. To do so, we got a coat rack from Argos that had a very tree-like shape and connected wires to balls of aluminum foil wrapped in aluminum foil tape to increase conductivity and give a bigger surface for touch when interacting with the tree. The wires were originally connected to alligator clips that were then connected to the raspberry pi touch hat, but this gave us issues with inconsistent loss of input as the tree was being moved. When testing each input individually, the issue wasn’t happening. We decided that it was likely that there was problems with the connections between the clips and the wires, so we decided to hook wires up directly to the touch hat that would be soldered to the wires on the tree once we had finished the code of the experience.

Billy then started working on a python script that utilizes pygame and the Adafruit Capacitive Touch hat library to build the interactions using all 12 available inputs. While he was doing so, I started dressing the tree in a way that would make it feel more technological and tree-like. I wrapped the tree in Gaffer tape to protect the wires, and painted the tree with a copper spray paint.

We attempted to add LEDs and elwire to the tree from the GPIO pins on the Raspberry Pi, but because of the size, we weren’t able to get something that looked or felt the way that we wanted. We decided to build the game experience of the tree without visual feedback as a result, and planned on adding code that could potentially turn on a blacklight when the puzzle had been solved to give the tree a slightly otherworldly feel to the design.

I also 3D printed a carrier case for the Raspberry Pi that I had found on Thingiverse(2) with hexagonal holes for cabling. Once the code had been nearly finished (and could be easily updated by connecting to the pi via ssh), I soldered the wires connecting the wires from the tree to the wires from the pi, and attached the carrier case to the underside of the tree. Testing with the soldered connections showed that the touch input was much more consistent than with the alligator clips. This also made the tree mobile, so as long as we had a portable battery (and were careful), we could potentially set up the tree anywhere.

The last step was to continue to dress the tree further while Billy made final changes to his code for the tree. I added fake foliage covering the carrier box, exposed electronics, and speaker, and some additional foliage to give the impression that there were more branches to the tree. I also spray-painted some polystyrene balls to give new texture to the tree and the impression of knobs or fungus growing along the outside. Our blacklight was damaged during room setup, and we were happy about the look of the tree, so we decided not to include this element in the final design.


Including the tree as part of a larger experience was a team effort. My role ended up primarily with rigging and setup of the equipment that was used in the theatre that contained the entire experience. On our first day of rigging for our final exhibition, I worked with Tommy (who built a coded language puzzle) and Nicky (who is a member of the University staff who taught us to use the equipment). We set up six spotlights, three projectors and a white sheet covering three walls as a projecting surface to be tested when the rest of the group was available. We also set up a computer that was connected to the projectors with HDMI to ethernet converter boxes for video, and a digital mixer for audio. This way, we had plenty of opportunity to play around with the equipment when we were able to work together as a group.

I then worked with Jo (our creative director) and Alex (who made the environmental audio and a projection mapped waterfall puzzle) to configure the sound mix environment for the exhibition. I showed our team what I had learned the previous day, and we all worked together to change the setup so that there was only one projection surface at the end of the space and we adjusted the positions of the spotlights to match our intended room layout. Once we had our projectors in the right positions, I worked with Hugh (who was part of a team that built an “organic” television) to display a glitchy forest background in the room.

Final Result

The tree was placed in the back corner of our magical forest and was lit with a single spotlight. The final touch to the visual design was to add a trilby hat with a feather on it to acknowledge the fact that it was built with a coat hanger, but to also show that it was so much more. The tree is of many worlds, in the sense that it is both digital and organic, functional and mystical. We also adjusted the delay of the tree’s response to make players wait less when they are trying to learn the notes to the song, and made it so there are less notes total. This way more players can complete the puzzle when viewing the tree in exhibition.

The final result felt very true to our original design, where the tree could be a collaboration between the player and the exhibit, and could be played as an instrument or puzzle by one or many people.


  1. “Turn a banana into a guitar” The Ultimate Raspberry Pi Handbook: 2017 Edition. P.58
  2. “Box with Hexagonal Holes” by pmoews

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s