Picture of Laser Cut Record
laser copy.png
wood record 1.png
wood record2.png
paper record 1.png
paper record 2.png

A few months back, I wrote about how I used a 3D printer to transform any mp3 into a physical record.  Though all the documentation for that project is available here, and the 3D models could potentially be printed through an online fabrication service, I knew that the barrier to entry for normal people interested in trying out the process themselves was prohibitively high.  With this project I wanted to try to extend the idea of digitally fabricated records to use relatively common and affordable machines and materials so that (hopefully) more people can participate, experiment, and actually use all this documentation I've been writing.

These records were cut on an Epilog 120 Watt Legend EXT to a theoretical precision of 1200dpi (the kerf of the cut and some tricks I used to avoid crashing the laser cutter dropped the actual precision down by ~1/6).  The audio on the records has a bit depth between 4-5 (typical mp3 audio is 16 bit) and a sampling rate up to about 4.5kHz (mp3 is 44.1kHz).  So far I've successfully cut audio on wood (figs 1-2), acrylic (figs 3-4), and paper (figs 5-6), and I'm sure there are many more materials that would work.  I wrote the Processing sketch that generates the record cutting paths so that it can be modified for any song, material, cutting machine, record size, and turntable speed (skip ahead to download the code and learn how to make your own records).

You should also note that in this Instructable I'll demonstrate specifically how I used a laser cutter for this process, but the cutting files I'm using are standard vector graphics in a PDF format, so they can be extended to many other digital fabrication tools. For example, I'm curious to see if it's possible to use a CNC mill or a CNC razor blade paper cutter with my cutting files (a group of people were able to cut out some sine waves on paper using a Cameo in this Instructable).

Below are some of my final results, read on to see how they were made and how you can make your own.

Joy Division - Love Will Tear Us Apart on clear acrylic (download vector files):

Radiohead - Idioteque on wood (download vector files):

The Velvet Underground and Nico - Femme Fatale on maple (download vector files):

Remove these adsRemove these ads by Signing Up
1-40 of 184Next »

interesting, i've got some wood in the back here............oh no its the wrong type.

Great design, just proves that music can be made on anything

I am confused on step 10 what do I rename in processing?

the name of your song, the text file to import.

Jrisby2 months ago
Hey there. I Have recently tried this and it had cut 3/4 of the grooves then preceded to cut the inner and outer circles. Do you know why it might be stoping?
amandaghassaei (author)  Jrisby17 days ago

you'll probably have to split it up into a few files and send them one by one without moving the material in between cuts. There's a variable called numGroovesPerFile (or something similar) download the latest code from github and try lowering that number.

george.titsworth made it!1 month ago

Thanks for the instructable! This is going to make a really nice Christmas gift!

I did mine on a mini-helix. The current record does not play very well.. lots of noise, a little skipping, but you can make out the tune and it looks great. I'm going to ply around a little more with it when I can to try to clean up the sound.


just saw this, so cool! Do you have a video? what song is it?

Not a bad idea, not sure it'll replace my ipod though :)

spenhoo9 months ago

I'm getting this error, not sure what to do about it. Any suggestions?

Traceback (most recent call last):

File "/Users/....(directory)........../", line 21, in <module>

frameInt = map(ord, list(frame))#turn into array


Is it just that my file is too big to do this way?

amandaghassaei (author)  spenhoo9 months ago

haven't seen that one before. how many min is your song?

It's 30 minutes - I know that exceeds vinyl limit I think for one side
But maybe I'll try it again.. Could've been a glitch in my process...

If it exceeds the vinyl limit it means the groove pitch is too narrow and cuts will overlap. That may cause the error.

amandaghassaei (author)  spenhoo9 months ago

Try 5-6 min and see if that works.

KonradC15 months ago

Nice proof of concept but falls far from being listenable. Now I don't know much about laser etching a record but I used to be a lathe operator for the cutting of vinyl records back in the 90's. There are a few things you haven't taken into account it seems. the lower rotational speed of the inner groves is the reason the sound degrades so much near the end of a song. It happens on regular records as well but it's not as noticeable. It looks like your grooves are too wide as well...

Best of luck with this!

I guess you could get a lot better quality if you modified the laser cutter to accept a turntable and cut along the axis of the record in a tangential tracking manner. After all, that's how *actual* masters are cut.

soulomon2 months ago

Someone should hack a DVD-R firmware to print 4.7" flexi discs!
Thank you for your amazing work Amanda.

You know, that *could* work if you have a LightScribe or LabelFlash burner and compatible discs.

Hello Amanda,

I am so blown away by this work. I would rather like a copy of a record of the Beach Boys Pet Sounds album on this wooden record. How much would you charge to make one of these for me? At your convenience. How much ? even the Velvet Underground would be cool too. Please let me know I would really appreciate it. I am not so technical so I could not do it myself. Please let me know if you would be able to do for a charge :) Thank you, Peter and you can contact me best at Thank you again in dance :)

jamesburkill11 months ago

Hi, When I go to open the Python wavtotext file it flashes up for a second then disappears, do you know why this would happen?

I had this problem to so I had to open python idle

amandaghassaei (author)  jamesburkill10 months ago

did you figure it out? what version of python are you using?

soulomon2 months ago

Someone should hack a DVD-R firmware to print 4.7" flexi discs!
Thank you for your amazing work Amanda.

davidbarcomb2 months ago

Great project, I must try this

hey i thought i sent a message already but i cant find it!
I'm having trouble when i get to the cutting stage, it seems to just skip some (most) of the files? it seems to not recognise that there's any data being sent. is this just because the files are too big?

yeah I've seen that to. are you using illustrator to send files into the laser? The workaround is to grab the latest code and decrease the variable numGroovesPerFile until you can import each file without losing info. Or if you open the files in adobe reader and "print" from there it should work, but you won't be able to edit/move anything.

CasualTuxedos5 months ago

Do you need a 120 watt, 1200 dpi laser? What is the minimum laser requirement?

amandaghassaei (author)  CasualTuxedos5 months ago

the wattage doesn't matter - as long as you can cut through the material. You will have to play around with the settings to get the groove etching just right. I wasn't really taking full advantage of the 1200 dpi because the kerf of the laser is so wide, I'm sure it would work with something less than 1200, but I haven't tried.

Hi, thanks. Does it have to cut THROUGH the material? Does engraving not work?

amandaghassaei (author)  CasualTuxedos3 months ago

you'll want to cut through for the profile of the disc and the center hole.

peigan6 months ago

im getting an error on python:

Traceback (most recent call last):

File "/Users/eidtecnico/Downloads/LASER RECORDS/LaserCutRecord-master/LaserCutRecord/", line 26, in <module>

frameOneChannel[i] = frameInt[4*i+1]*2**8+frameInt[4*i]#separate channels and store one channel in new list

TypeError: 'map' object is not subscriptable


amandaghassaei (author)  peigan6 months ago

did you put the audio file in the same folder as the python script?

Hello! I'm also getting the same problem when I run the file in Python 3.4.1. When I run the file in Python 2.7.8 it says

Traceback (most recent call last):

File "/Users/flaviawilson/Desktop/UNIVERSITY/CCDN244 Expanded Photographics/Project Two - Lomo/LaserCutRecord-master/", line 26, in <module>

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

Do you have any ideas? The audio file is definitely in the same folder as the python script. Sorry to be a bother, I'm new to python but super excited about this instructable! You've done an awesome job, thanks so much :)

FlaviaW FlaviaW4 months ago

Figured out the problem - I'd already converted the audio track to mono, so the python code was getting confused because it was thinking the track was in stereo.

Also the code does only seem to work in 2.5.4, but I might be wrong.

amandaghassaei (author)  FlaviaW4 months ago

cool, yeah I haven't tested other versions.

use 2.5.4. I tried using other python releases as well and they didnt work

This is super great. Looking to work with this in some manner (hopefully some really nice wooden records?) for my art degree (and of hold onto this idea throughout my practice). I've known since I started thinking about this that quality of sound would never really be 100 hundred percent, but I'd thought I'd only be able to attempt to mimic vinyl records somehow, and that it would be very manual and probably not work :) This post is a lifesaver honestly, and I really appreciate how much more control I have over the project now, so thanks heaps :)

cool, I'd love to see how it turns out!

rmd65026 months ago

Just wondering - how long do needles/cartridges last playing these sorts of records - I want to try this out, but not sure how expensive equipment to use it with!

amandaghassaei (author)  rmd65025 months ago

it probably wears down the needle, but it shouldn't affect anything else. I'd get an extra needle, usually that's not too expensive - $10-15

1-40 of 184Next »