My, How Things Change!

Our first birthday was in March, so we thought we'd share some pictures from before we moved in versus today. Enjoy!

Synesthetic Piano

Have you ever wondered what Beethoven's 5th symphony would look like as a painting? Of course not, that doesn't even make sense. Beethoven is music, meant to be enjoyed by the ears, not the eyes. But then, there are a lot of things we modify in order to see: vibrations of the earth's crust seen as graphs, magnetic resonance images, the gamma rays of a distant supernova, and on and on. So why can't we paint a song?

The Hill City Keys project seems like the perfect opportunity to find out. Since I can't play piano, I'll instead leverage the talent of the Lynchburg community. And since I've often heard some impressive music played at the community market piano, I decided to make it my painting piano. So I wired it up to a Raspberry Pi that detects the notes being played in real time, which then sends the notes to another Raspberry Pi at the Academy Center of the Arts, which controls a robotic arm that moves a paint brush depending on the note being sent, painting a picture of the music being played.

You can watch the arm paint in real time below, followed by a more detailed description of the project.

The Piano

Detecting Notes

There are many ways to detect the notes played on the piano. A few different options would be to put a touch sensor on each key, watch the keys being pressed with a camera, or you could detect the sound being played.

I decided to take the audio sampling route. Music notes are simply letters we assign to specific audio frequencies. When the air vibrates at 132Hz, that's middle C. So in order to detect the note played on the piano, we first need to record audio samples. The Synesthetic Piano does this using a simple USB microphone connected to a Raspberry Pi. The Pi records an audio sample for a short period of time, which contains a waveform of amplitude versus time. Unfortunately, amplitude is not what we're looking for. Any note can be played at any amplitude, what we need is the frequency. Fortunately, Joseph Fourier figured out that any function can be represented by a series of sine waves. Along with this realization, he came up with a clever way to transform a function of time into a function of frequency, which is exactly what we need. In essence, the Pi records an audio sample of amplitudes versus time, it then recreates that sample with a series of sin waves. Those sine waves have a known amplitude, frequency, and phase. The Pi then takes the sine wave with the highest amplitude, as it most likely represents the note being played. It then looks up the corresponding note of that frequency. Mathematically, it looks like this, with $f(t)$ being the amplitude versus time function and $f(\epsilon)$ being the resulting function of frequency.

$$f(\xi) = \int_{-\infty}^{\infty} f(t)e^{-2\pi i x\xi}dx$$

Python's wonderful Scipy library comes with a discreet Fourier transform function that does all the hard work for us. I just chose a sampling rate that keeps the notes accurate while reading one note every tenth of a second.

Sending and Receiving Data

Once the piano figures out what note you played, the data needs to be sent to the painter. Since the piano and the painter are very far from one another, I chose to transfer the data over the internet. Another challenge to consider is that these two devices are on two different networks, neither of which I have administrative rights on. This meant that I couldn't just send data directly from the piano to the painter. Instead, I decided to use the MQTT protocol by sending all the data through CloudMQTT


The Painter

The painter's job is to be inspired by music to paint something beautiful.

The Arm

The arm is made of aluminum, with stepper motors as the joints, and a 3D printed hand. When C, C#, D, and D# are played, the shoulder will quickly or slowly move clockwise or counter-clockwise. Similarly, E, F, F#, and G do the same for the elbow.

The Paint

There are four different color paints, each pumped by a 3D printed peristaltic pump. These are positive displacement pumps, which means they pump the same volume of paint with every step of the motor. When G#, A, A#, or B are played, one of the four paints are pumped onto the canvas.

The Big Picture

There are two things I look forward to learning from this experiment: are the paintings repeatable, and do good songs look better than a random mashing of the keys?


Check out the photos from our Hill City Robot Combat II event!

Our next combat robot event will be August 27th at Riverviews Artspace. Start building now!

Also, check out our summer project for 12-18 year olds to build combat robots.

Summer 2017 Internships

We’re looking for five interns to help us out this summer. It’s an opportunity to do something different, gain experience in a variety of fields (machining, computer software and hardware, woodworking, electronics, graphic design, etc.), and work with a mentor with expertise in your field of interest.

While the internships are unpaid, each intern is provided a $200 budget for their project, courtesy of the Lynchburg Morning Rotary Club.

Internship begins on June 12th and ends on August 4th.


10 hours per week: 4 hours on Tuesday and the other 6 hours decided on an individual basis. We’re looking for self-motivated individuals capable of recognizing problems and finding solutions.


Time should be equally divided between the following four duties:

  • Space improvement projects: Depending on your interests, this might mean building a drill press storage cabinet, optimizing our computer network, web administration, social media, etc. Sometimes you’ll have specific assignments, but you’ll also be expected to find your own projects. If we need a paper towel holder, 3D print one. If the drill bits are hard to find, build a storage case for them.
  • Prepare for and assist with classes and workshops: Setup the room layout, computers, materials, and experiments.
  • Clean and organize the space: vacuuming, sweeping, taking out trash, putting tools where they belong, etc.
  • Personal projects: Interns are expected to make something that they’ll write about and present to the board of directors at the end of the internship. This should be something that is personally interesting and takes advantage of the resources at Vector Space. The requirements are intentionally vague; this is your opportunity to be creative.

Here's one of our interns from the Summer of 2016 talking about his experience.

This program is generously sponsored by, Lynchburg Rotary


Apply Below


Deadline: 5/26 (extended)

Lynchburg Mini Maker Faire

Mini Maker Faire Comes to Lynchburg

(Lynchburg) On Sunday, March 26th from 12:00pm to 4:30pm, Vector Space will present the Lynchburg Mini Maker Faire, the first maker faire in our area in partnership with the national movement started by and in collaboration with Make: magazine from Maker Media. This event will take place on the campus of Randolph College.

In the words of Maker Media, a Maker Faire is, “Part science fair, part county fair, and part something entirely new. Maker Faire is an all-ages gathering of tech enthusiasts, crafters, educators, tinkerers, hobbyists, engineers, science clubs, authors, artists, students, and commercial exhibitors. All of these ‘makers’ come to Maker Faire to show what they have made and to share what they have learned.”

Maker Faire launched its first event in 2006 and is focused on showcasing makers across the spectrums involving technology, art, craft, science and engineering. The Lynchburg Mini Maker Faire encourages makers to come out of their workspaces and garages to demonstrate their talents for the local community, while inspiring others to find out how things are made and possibly even pick up a new hobby or interest in a skill.

We are proud to be partnering with Randolph College by making Lynchburg Mini Maker Faire a part of their annual Science Festival. Come out and enjoy hands-on activities, amazing exhibits, locally made products for sale, food trucks, a group build project and more. This event is free and family friendly as there will be activities for those ages four and up.

We would like to thank our partners and sponsors Make:, Vector Space, Randolph College, clutch Magazine and Opportunity Lynchburg. For more information please visit or call (804)387-1519 or email

Combat Robots

If you missed our first Robot Combat event back in November, don't worry, there's still time to get in on February's event!

Heat Transfer in less than 1kb

The hardware development community at put together a challenge to build something awesome in less than 1Kb, so we decided to join the fun. Here's our entry.


despite all of your friends who like to say that "heat goes up", heat actual moves according to this equation,
$$ \frac{\partial T}{\partial t} = \alpha \nabla^2 T $$

If you're wondering what on earth that means, you have two options: study differential equations for a few years or watch the colors change on our LED board. This LED board displays our solution to the 2D heat equation, written in less than 1Kb of program space, which we've entered in Hackaday's 1Kb Challenge. If you were to heat up a 14.5x10.9 inch sheet of copper, the heat would move through it exactly as our board displays. The same temperatures would be at the same locations at the same time. Don't believe it? Grab your thermocouple and follow the details over at Hackaday.


Subscribe to Blog