Step 7: Make Your Own Records

Picture of Make Your Own Records
You can convert your own audio files into 3D STL models in ten easy steps:

1.  Download Processing.

2.  Download the ModelBuilder library for Processing.  I used version 0007a03.

3. Unzip the Modelbuilder library .zip and copy the folder inside called "modelbuilder".  Unzip the processing .zip and go to Processing>modes>java>libraries and paste the "modelbuilder" folder in the "libraries" folder.

4.  Download Python 2.5.4.

5.  Download Audacity.

6.  Download the code from GitHub (you can download the files as a zip by clicking on the cloud button).  Open the folder called Processing3DPrintedRecord.

7.  Open an audio file of your choice with Audacity.  Use Effect>Amplify to amplify the signal as much as you can without noticeable effects of clipping (you will be able to get away with some clipping, and remember this is not crystal clear audio anyway).  Make sure there is 2 sec of blank audio at the end of the track so that nothing gets clipped.  Keep the audio under 6 min.  File>Export this file and save it in the "Processing3DPrintedRecord" folder as a wav file. 

8.  Open the Python file called "wavtotxt".  Copy the file name of the file you just saved in the line:

             fileName = "your_file_name_here.wav"

Hit Run>RunModule, after a minute or two you will have a .txt file saved in the Processing3DPrintedRecord folder.

9.  Open the Processing Sketch.  In File>Preferences check the box that says "increase the maximum available memory to" and write in the amount of available ram on your computer.  I've found that my laptop with 4GB RAM can handle audio files up to 1.5 min long.  For longer files you will need to use a computer with 12-16GB of RAM.  If Processing starts and then gets stuck or crashes, it is a RAM issue and you will need to move to a machine with more RAM.

10.  Change the name of the import file in the Processing sketch to your txt file name:

             String filename = "your_file_name_here.txt";

Close all other programs running on your computer and run the Processing sketch Sketch>Run.  After a few seconds you will see "record drawn, starting grooves" appear at the bottom of the Processing window.  After some more time you will get updates on the status of the sketch: "3 of 85 grooves drawn".  Eventually Processing will tell you that it is writing your STL file and when it is done it will say "Closing 'name_of_your_file.stl' and tell you haw many faces are in the file.  You can find the finished file in the Processing3DPrintedRecord folder.

Once you've made them, post them!  I've been posting mine on the 123D gallery and the Pirate Bay.  Enjoy, and let me know if you have questions or need help getting this to work.  I've tested this process in both Windows (64 bit) and Mac OS, though I'd imagine it will work for Linux as well.
BenL73 months ago

This is such a cool program! But I am having trouble running the processing sketch. It says

"No library found for unlekker.util

No library found for unlekker.modelbuilder

No library found for ec.util

Libraries must be installed in a folder named 'libraries' inside the 'sketchbook' folder."

I tried putting the files in a bunch of different folders but non of them seemed to work. Any thoughts?

OliviaS4 months ago

Hi, this is a really great tutorial but I ran into a problem when trying to find the "wavtotxt" file on Python. Since Python has updated I wondered if it had been removed or possibly i just couldn't find it. I would really like to know how you found it as I was hoping to use this as a part of a project.


agouiller2 years ago
Hi Amanda ! This is a really amazing work you made here ! Congratulation !
I tried to make my own 3D model with processing but I have some trouble with step 10. "Change the name of the import file in the Processing sketch to your txt file name: String filename = "your_file_name_here.txt";"

Should we write "String filename = "your_file_name_here.txt";" in the text editor of Processing or make file>open and open the .txt file ?

Thanks in advance for your advices !
amandaghassaei (author)  agouiller2 years ago
cool, glad to hear you're messing with the code! I just changed that line to whatever the name of my file was. so if I had a file called daftpunk.txt, I changed the line to read:

String filename = "daftpunk.txt";

does that make sense?

Hello Amanda - I understand this Question was answer 2 years ago - but here I am asking the same question.

I have created the "myfile.txt" file through Python programming. But now trying to "import the data within 'myfile.txt' file" into Processing, and then also where should I be typing "String filename = "myfile.txt"; ... Everytime I run Processing, all I get is a Grey 'java' box appear with nothing happening?

Any suggestions you may have?

Hi Amanda, thanks a lot for this great tutorial and for sharing all the amazing experimental work you're doing. I've been getting my head around it all day and I'm hopefully very close to output the STL file to try 3D printing it next. I'm curious to see what audio quality/resolution 3D printers can output these days, in comparison to the time where you made your demos.

I was looking at the video and noticed that in Audacity, you invert the curve in the equalisation effect and then apply a low pass filter. However, none of these steps seem to be mentioned in point 7.

Are you able to explain what these steps are for and whether they are required?

Thanks in advance! Charly

Awesome instructable, although i ran into a problem with the wavtotext file. I went through all the instructions and created a text file of the song and eventually ended up making both a laser cut version and a 3d print version. When i went back to look at my text file, it ended up being just a copy of the code for the wavtotext python code. Any ideas? It went through the process of creating it but the laser cut and 3d print files both have no information on them, just the cutlines.


eon9972 years ago
This is incredible. I have made a 3D model, but I don't know where I can get it printed...can some one get me a link to place where you can get a model shipped to you? Thanks!
fabacademy2 years ago
Hi amandaghassaei,

I assume a lot of people are contacting you, so, I will be quick.

When I try to convert the stereo file into a mono file via Python, the .txt file never shows up in my folder. I have a TypeError message from Python saying :

'map' object is not subscriptable

Do you know how I can fix that ?
Bests from France.
T0BY2 years ago

This is amazing, you're a genius!

I'm having trouble, I keep getting the following response;

Traceback (most recent call last):
File "C:\Users\Computer\Downloads\F0Y8Y6VHAUNM3D4\wavtotext.py", line 34, in
frameOneChannel[i] = frameInt[4*i+1]*2**8+frameInt[4*i]#separate channels and store one channel in new list
IndexError: list index out of range

What do you think I'm doing wrong?

Jan.H2 years ago
And for proper RIAA equalization, before amplifying the recording in Audacity in step 7, go to Effects>Equalization. Then, from the "Select Curve" list box, select the RIAA preset, and afterwards, hit the "Invert" button, because you want to create a new record (with bass attenuated, and high frequencies boosted), while Audacity's preset is intended for playback.