This Instructable will walk you through the steps required to make a laser cut record using audio of your choice. This process was originally developed by Amanda Ghassei and you can read her excellent documentation, as well as check out a 3D printed version, here: https://www.instructables.com/id/Laser-Cut-Record/
Step 1: So How Does a Record Work?
- The grooves of a record correspond to the physical graph of a sound wave.
- As the needle moves through the grooves, it vibrates the air around it, reproducing the sound. The record player amplifies the vibrations.
- Stereo vinyl record grooves run both horizontal and vertical - that is, the needle moves both up and down, and side to side. The laser cutter only has lateral motion, no depth control, so we will be cutting a mono record.
Step 2: Getting Started
To use this guide, you must download and install:
- Python (https://www.python.org/downloads/)
- Processing (https://processing.org/)
- Audacity (http://audacityteam.org/)
As well as the source code:
- https://github.com/amandaghassaei/LaserCutRecord - Download all the files as a .zip and extract them somewhere where you can find them.
- Change the name of the file from "LaserCutRecord-master" to "LaserCutRecord" Whenever you save your files, make sure to save them in this folder.
- Download an .mp3 of your choosing to be the audio of your record.
Step 3: Audacity
- Open Audacity and File > Open your .mp3 file.
- Your file must be shorter than 3:10 to fit on the record. To cut it down, pick a good stopping point, select the excess audio (click + drag to select) and use Ctrl + X to cut it.
- Add a fade to make the cut-off less abrupt. Select the portion you want to fade, and use Effects > Fade Out. Then, add two seconds of silence to the end of your track using Generate > Silence.
- Optional: Apply a low pass filter of 2250Hz with a rolloff of 48dB using Effect > Low Pass Filter.
- Optional: Use Effect > Equalization > RIAA > Inverse to bump up the high frequencies.
- Use Effect > Amplify to amplify the signal as much as you can without clipping. The Audacity compressor (Effects > Compressor) decreases the dynamic range of your song to get the most of the song at the maximum amplitude without clipping. This is not high fidelity and sound quality will be a matter of taste.
- https://www.instructables.com/id/3D-Printed-Record/ has a more thorough explanation of the how/why of the audio effects.
- Finally, export your edited file as a .wav file. Call it something you will remember.
Step 4: Python
- Edit wavtotxt.py file in LaserCutRecord folder: On Mac Ctrl + click and Open With > IDLE, Adobe Edge Code or TextEdit. In Windows, right click and Open With > IDLE or Notepad.
- On line 10 of the python code, change the word ‘space’ to your file name.
- Save the file. Do not change the file name.
- In the LaserCutRecord folder, Ctrl + click on wavtotxt.py and Open with... Python Launcher.
- A window will open in Terminal showing a couple lines of commands. After about 5-10 seconds, a line should appear saying “[Process completed]”
- Look in your LaserCutRecord folder and make sure there is a [yourfilename].txt file.
Step 5: Processing
- Open Processing and File > Open LaserCutRecord.pde
- Two tabs are open. Click on LinearRecord, click on the arrow to the right of the tab, and delete it.
- On line 17, replace “your_file_name_here” with your file name.
The size command has changed in Processing 3! If you are using Processing 3:
- Delete line 65 (should say “ size(cutterWidth*scaleNum,cutterHeight*scaleNum);”
- Copy and paste the following two lines on line 42 (should be blank):
- Earlier versions of Processing don’t need to change any code except the file name.
- Hit the “Play” button. After a minute or so, go look in your folder. You should have a number of .pdf files. These are what you will send to the laser cutter.`
Step 6: At the Laser
- Run the files as vector cuts, one right after the other. Do not cut all the way through your material. The groove just needs to be deep enough to keep the needle from skipping.
- Illustrator will have a hard time opening files with this much information. It has a bug where it will cut the vector off at a certain point and you will lose your audio. Send to cutter direct from .pdf.
- The last pdf contains both audio information and an outline of your cut out. Laser the audio info like you did the previous files. Then open the file in Illustrator, delete the audio info, and run the cut out path. At this point, you have the option to add a raster engraving of the name of your audio (or whatever you want). Pretty straightforward to make a guess on the placement of the words.
Step 7: Play Your Record!
- The record can be played on any turntable as normal.
- I have only tested in wood but it is noisy! Like with a standard record, cleaning the dust and debris from the grooves helps. However, you can still hear the melody with a little imagination
- Another major issue is warping of the material from the heat of the laser. I would like to test on a naturally flexible material to see if this improves sound quality.
Step 8: Troubleshooting
- Forgetting to rename the file folder “LaserCutRecord” from “LaserCutRecord-master” will cause an error.
- If you have no experience with Python, remember you must Right Click > Open With to edit your file. Double-clicking on your file will run the program rather than enabling you to edit the code.
- When editing in TextEdit I accidentally typed over the quotation marks as well as my file name. The quotation marks I typed in TextEdit threw a syntax error when I ran the file. If you use a word processor (as opposed to IDLE or similar) to edit code, only change the file name and leave the quotation marks alone.
- Several times when I ran wavtotxt.py, it never displayed “[Process completed]” However, as long as the *.txt file appears in the LaserCutRecord folder, you can proceed to the next step.
- Amanda wrote in the original instructions that her laser’s internal memory (Epilog Legend) can’t handle more than one file of that size at once, and to turn the laser off and back on between files. I tested on a Universal VLS 4.6 and an Epilog Zing. The Zing randomly crashed about 20% into any file I sent to it. The Universal appeared to have no problem receiving the files one after the other, possibly because it has no internal memory.