Pcomp Midterm – What if you could draw sound?

Ok, so to be totally honest this project evolved backwards.  It simply started with wanting to build a robot.  I’ve always loved robotics but have never had the chance to actually attempt to build one myself.  Well, no more!  I’m gonna build a damn robot.  The “backwards” part refers to the fact that meaning of the robot was secondary to the thing itself.  Which is perhaps not the best way to work – but it ended up working out well in that the meaning we gave our little robot that could turned out to be pretty interesting.


The Process

This project has been in progress for a while, with a lot of my past assignments acting as stepping stones.  In that vein, a lot of the project process can be seen in previous posts, which I’ll link to throughout.  With that said – it all started a few weeks ago with bluetooth control.  It turns out to be relatively simple to control an arduino via bluetooth – and I was able to write a simple iPhone app in Swift that allowed me to control the position of a servo motor.  Nothing amazing, but an important first step.  See this previous post to check out the bluetooth in action.

Next up – stepper motors.  Steppers proved a bit more challenging as finding an arduino library to control the steppers well was a bit frustrating.  Not only am I not super familiar with steppers, but the standard Arduino library apparently doesn’t play nicely with the steppers I bought.  Luckily the internet saved me and I was able to find a (somewhat random) stepper library that provides some pretty nice functions, including acceleration.

Next – the frame!  The first “frame” attempt involved hot glueing pieces of foam core together.  Great for a quick and dirty solution, but it quickly became apparent that I needed something sturdier…Screen Shot 2015-10-22 at 4.06.11 PM

To the laser cutter we go!  Man, what a tool.  Super precise, clean cuts.  So easy to use.  Anyway, after mocking up the frame in illustrator, 3D printing a few motor shaft adapters, and running a piece of acrylic through the laser cutter, we had a frame!  A retro-futuristic clear plastic frame.

After hot glueing all the acrylic that didn’t fit properly, performing a few last minute modifications involving a bandsaw, and screwing the motors in and seating the arduino – we had a twirling robot.  At this point all it did was make circles.

From here it was relatively trivial to get it to move in the ways we wanted (that is either forward, back, turn right or left).

The Concept

This is where we got sort of stuck.  We have this robot that turns.  But what does it do?  Tough question to answer.  So Naoki and I brainstormed for a while, and eventually started to go down the path of a music, or sound, making robot that picks up cues from it’s environment.  Then we came to the question of what’s it like to draw sound?  It would be cool to read a drawing and create a sound piece from it.  Which led us to the idea of using a photocell as a super basic line reader.  The light detected by the photocell will change depending on the color of the surface under the robot.  Obviously darker colors will reflect less light, meaning the photocell will receive less light.  We could use this concept to know when the robot was over a line.  Map that information to a speaker, and whaddya know we have a music making line reading robot thing controllable from your iPhone.

There are two forms of interaction going on here.  Drawing lines creates a musical canvas for the robot to explore, but what actually comes out of the speaker relies on where the driver takes the robot.  Two identical landscapes will produce different results depending on the driver.  Pretty interesting.  The actual execution is a bit lackluster – the robot moves REALLY slowly, and the speakers is SUPER quiet and only plays raw tones (theremin style), but the concept is there.

Without further ado, the final thing:

You have to listen closely, but you’ll hear the pitch change as the robot passes over the black line.

Leave a Reply

Your email address will not be published. Required fields are marked *