Introduction: Physical Representation of Sound

This began from a desire to be able to physically represent sound, specifically the sound of myself playing piano blindfolded, complete with curses, clomps on the piano, and general frustration.
This instructable will show you how to make any song or .wav file into a three-dimensional physical object that can be created with a mill, a 3D printer, or any other method you desire.  

(Note: a huge shout-out to Carlo Sammarco for the Rhino and Grasshopper instructions and defintions, and to Devon Henry for Frequency Amplitude Quantifier.)

Step 1: DCLabs Website

Go to the wonderfully helpful website:

Scroll down to the section about Audio in Rhino, and download the .zip.
This .zip will contian a Rhino definition, a Grasshopper definition, a program called 'Frequency Amplitude Quantifier', and a .pdf with more detailed instructions about how to work all of them.

Step 2: Frequency Amplitude Quantifier

After extracting the files, open the folder labeled "Frequency_Amplitude_Quantifier" and open the program of the same name.  (Image 1)

The program pops up, filled with alarmingly crowded windows.  First, take a deep breath, because this part is actually shockingly simple.   Then, select the smaller of the two windows and click on the 'clear all' button in the bottom left corner.  (Image 2)  After clicking, the text should be erased and the box should be empty.

Click the 'open' button in the upper left corner, and chose a .wav file to upload. (Image 3)

Click on the sound icon to the right of the 'open' button, so that it turns a gray-blue color.  This turns on sound collection, and you can see a box with some rapidly changing numbers underneath the 'open' button. (Image 4)

To begin data collection, click on the '1' button next to the sound icon.  In the right side of the window, you will see a rectangular box with dots representing data fluctuating as the sound is collected. (Image 5)

The collection will stop automatically once the .wav file is played through to the end, but if you want to stop it prematurely you can click on the '0' button next to the '1' button.  In the smaller of the two windows, there will be a long list of numbers, all beginning with 'sample.'  (Image 6)  

Copy all of this information (Ctrl + A) and paste it into a notepad, or equivalent .txt program.  Make sure that the file is saved in .txt format.  (Image 7)

Step 3: Grasshopper

(If you have downloaded the .zip from the DCLabs website, it included a .pdf with instructions about how do to the next step in both Rhino and Grasshopper.  I'm showing the Grasshopper method, because I personally find it easier than the Rhino method, but of course feel free to look at the .pdf and decide for yourself!)

Open Rhino, and start Grasshopper.  Open the location where the .zip file extracted. (For me, it was the desktop)  Open the 'Grasshopper Definition' file, and drag 'Audio Frequencies in Rhino' onto the Grasshopper window.  (Image 1)
In a second or two, this terrifying image will appear in your Grasshopper screen. (Image 2)
Again, take a deep breath.  Move to the far left of the definition, and on the left-most box, right click on 'path' and select 'Set one file path'.  (Image 3)  
Select the .txt file you saved earlier.  (Image 4)
Zoomed out, the boxes will have changed from orange to gray, as there is now information flowing through the veins of Grasshopper!  (Image 5)

This Grasshopper Definition basically takes the data collected in Frequency Amplitude Quantifier and subtracts the words from each line of code, so only the numbers remain.  Again, credit goes to Carlo Sammarco for this amazing Grasshopper assistance. 

Step 4: Grasshopper and Rhino

At this point, you can peek over in Rhino and see the shape that has been created with the data.  (Image 1)

By adjusting the slider at the bottom of the definition in Grasshopper, you can change the height (amplitude), length (time), and width (frequency) of the three-dimensional form.  (Image 2)

Once content with the dimensions, go to the box at the very far right of the definition, right-click, and select 'bake.'  (Image 3)

There will now be a second form that, once Grasshopper is closed, will remain in Rhino.  (Image 4)

Close Grasshopper, and scale the form to whatever dimensions you want.  Since I am going to be milling out foam for a plaster mold, I have shrunk it down quite a bit.  (Image 5)

In the next step, the form will be made mill-ready.

Step 5: Preparing for the Mill

My plan for this piece was to have an end result of plaster, of the same form that you see in Rhino. (Image 1)  To do this, I will be making a solid box from which I will then subtract the wave form, so that I will be milling out the negative, and then casting the positive.  This is what I will be describing in the next step.  

To successfully subtract the wave form from a solid box, the wave form must first be a solid object.  To do this, I first duplicated the edge of the wave form starting on the shallow side.  Lines were then drawn from the edges of that duplicated line to another line drawn parallel to the C plane.  (Image 2)  After joining all of the lines, I used the patch command to create a surface.  (Image 3)  I did this same thing to the other three sides, and then created a surface on the bottom. (Image 4)  

Once all of the surfaces were joined together to create a solid surface capable of passing the volume test (using the volume command to check to see if the object has an internal volume and is therefore an actual solid), I created a box around the entire object.  (Image 5)  

In order for the objects to Boolean difference properly, the wave form must stick out slightly.  (Image 6)
After the Boolean difference command, the object should look like Image 7.  

Flip and orient the object so that the cavity is facing up, and the object is ready to put into Visual Mill.

Note:  This is the way that I decided to go through this process.  Of course, with Rhino, there are roughly 630 different ways to create any single piece; this is my own interpretation of the process.  

Step 6: Milling

Here are some images of the foam being removed from the (mostly) dried plaster.  I used pink insulation foam for this piece, because it mills well and doesn't produce much foam dust.
If you have never cast plaster from foam before, make sure you use copious amounts of Murphy's Oil Soap on the foam before casting.  Once the plaster is poured, expect a much longer curing time because the air-tight foam greatly inhibits the drying process.  

Step 7: The Final Piece

Here are some images of the final pieces, installed for presentation, and then lit by the natural light in the studio.


ideasxbj (author)2015-07-08

Hello there,
Hope somebody knows a way to fix this:
I got an error message after clicking the sound icon (i have selected a wav file). The error message just one line said "ad_mme:stopping due to error.

Has anybody encounter the same problem?
Thanks a lot!!

Screen Shot 2015-07-09 at 10.06.07 AM.png
akshatm (author)2014-09-24

1. Line 37: Function 'ParseLine' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used.

this is what i get on the grasshopper component .

how a i suppose to solve this ?

and there is another error in the component saying insufficient interpolation points for a curve.

problem 2.jpgproblem.jpg
akshatm (author)2014-09-24

this is not working for me. i get these errors everytime i try to import the file . whats should i do now ? can u please help ? even by doing exactly how u have given the steps. when i open my file from the frequency amplifier. the text file created i open it in grasshopper. but the components show me many errors. the second component itself shows orange . and doesnt transfer the data collected . please help asap. i really need this for my architectue thesis

problem 1.jpg
josecapelo (author)2013-04-07

Nice Post!

foobear (author)2013-04-06

zomg this is the sweetest thing I've ever seen. You are the new ruler of the internet.