In order to explore the current limits of 3D printing technology, I've created a technique for converting digital audio files into 3D-printable, 33rpm records and printed a few functional prototypes that play on ordinary record players. Though the audio quality is low -the records have a sampling rate of 11kHz (a quarter of typical mp3 audio) and 5-6 bit resolution (less than one thousandth of typical 16 bit resolution)- the songs are still easily recognizable, watch the video above to see the process and hear what the records sound like.
This past year I've been posting a lot of audio projects, specifically, I've been experimenting with using relatively simple tools and techniques and very little memory to approximate and recreate digital audio signals. A great example is my Arduino Vocal Effects Box, where I used an Arduino to perform realtime pitch-bending on an incoming audio signal. Through these projects, I've learned that audio is a very resilient medium, it can take a fair amount of abuse (in the form of distortion and compression) while still maintaining most of the integrity of the original sound. The key is as long as you loosely approximate the overall shape of an audio signal, the output will sound reasonably recognizable. We have evolution to thank for this: as we hear audio, some complicated processing goes on in our brains that makes us very good at ignoring noise and focusing on the important pieces of information coming through. We can work off of relatively few cues (sometimes these even include contextual or visual cues) to piece together mangled or noisy audio and make sense of it; this is how we are able to focus on one voice in crowded room or decipher a message sent over a cheap walkie talkie.
This project was my first experiment extending this idea beyond electronics. I printed these records on a UV-cured resin printer called the Objet Connex500. Like most 3D printers, the Objet creates an object by depositing material layer by layer until the final form is achieved. This printer has incredibly high resolution: 600dpi in the x and y axes and 16 microns in the z axis, some of the highest resolution possible with 3D printing at the moment. Despite all its precision, the Objet is still at least an order of magnitude or two away from the resolution of a real vinyl record. When I first started this project, I wasn't sure that the resolution of the Objet would be enough to reproduce audio, but I hoped that I might produce something recognizable by approximating the groove shape as accurately as possible with the tools I had.
In this Instructable, I'll demonstrate how I developed a workflow that can convert any audio file, of virtually any format, into a 3D model of a record, and how I optimized these records for playback on a real turntable. The 3D modeling in this project was far too complex for traditional drafting-style CAD techniques, so I wrote an program to do this conversion automatically. It works by importing raw audio data, performing some calculations to generate the geometry of a record, and eventually exporting this geometry straight to a 3D printable file format. Most of the heavy lifting is done by Processing, an open source programming environment that's often used for 2D and 3D graphics and modeling applications. Here's a basic overview of my Processing algorithm:
use raw audio data to set the groove depth- parse through the raw audio data, this is the set of numbers that defines the shape of the audio waveform, and use this information to set the height of the bottom of a spiral groove. This way, when a turntable stylus moves along the groove it will move vertically in the same path as the original waveform and recreate the original audio signal.
draw record and groove geometry- A 3D model is essentially a list of triangles arranged in 3D space to create a continuous mesh, use the data from the last step and some general record parameters (record diameter, thickness, groove width, etc) to generate the list of triangular faces that describes the record's shape and the detailed spiral groove inscribed on its surface.
export model in STL format- the STL file format is understood by all 3D printers, export the geometry calculated in the last step as an STL file. To get Processing to export straight to STL, I used the ModelBuilder Library written by Marius Watz (if you are into Arduino/Processing and 3D printing I highly recommend checking this out, it works great).
I've uploaded some of my complete record models to the 123D gallery as well as the Pirate Bay. Check Step 6 for a complete listing of what's there and what I plan on posting. Alternatively, you can go to Step 7 to download my code and learn how to make printable record models from your own audio.
Special thanks to Randy Sarafan, Steve Delaire, Arthur Harsuvanakit, Phil Seaton, and Audrey Love for their help with this project.
Here's another video that gives a great overview of the printing process and shows the printers at work:
Remove these ads by
Signing UpStep 1: How Does a Record Work?
The record player and record cutter were invented by Edison in 1877. Due to a lack of precise machinery and technique at the time, the grooves on the first records were much larger than those on modern microgroove records and, subsequently, the audio signals were much noisier. This is a similar situation that I found myself in when starting this project: despite the high precision of the Objet machines, the resolution is nowhere near modern vinyl quality. Here and here are two examples of Edison's first phonograph tests. You can hear that the quality of recording of these tests is pretty close to what I've been able to 3d print; although I can't find the exact specs on these records, I'd imagine that the scale of the grooves was similar to what I was working with.
To give you an idea of the resolution of a modern record, check out the images above. Figs 1-3 are from Chris Supranowitz, a researcher at The Institute of Optics at the University of Rochester. These are close up images of a vinyl record, taken with an electron microscope. The dark objects in figs 1 and 2 are tiny particles of dust. Fig 3 is a bird's eye view of the record grooves, the darker regions are the top (uncut) surface of the record.
Fig 4 was made by branku62 at vinylengine.com, it shows the profile dimensions of a standard microgrove mono groove, this is what you would find on a modern mono 33 or 45 (stereo grooves are actually cut a bit smaller). In the diagram 1 mil = 1/1000", which is about 25um. Microgroove records require a stylus with a 0.7 to 1.0 mil radius tip, the tip makes contact with the groove at E in fig 1, a width of about 1.4 mil. The total depth of the groove is around 1.1 mil. These dimensions match up nicely with the dimensions of the electron microscope images.
Fig 5 is from Ron Geesin and Mark Berresford's website, it shows the groove depths of the older 78's. These records were much more coarse than microgroove records, both the needle and grooves were about 3x as large in every dimension. Fig 2 shows the groove depth for 78's was somewhere between 2.2 and 3.6 mil. The stylus radius was around 2.7 mil.












































Visit Our Store »
Go Pro Today »




Have you considered having a custom stylus made for these records by someone like Expert Stylus UK? I know they make 5 mil styli for early 78s, but they might be able to make a 10 mil stylus (or whatever the groove width for these 3D records is) as well. I imagine you would be able to reduce surface noise significantly.
as you are looking into making records from things other than vinyl, I thought you might be interested in hearing about a friend of mine who (a very
long time ago) successfully made a near perfect (although probably not very good for needles) fibreglass copy of the Beatles revolver, using alginate moulding compound to take an impression straight from the existing record. Although this technique is only useful if you have a vinyl copy already, it might extend your, and anyone elses, research... Lovely to read your posts anyway, very excited to see where this is going!
www.instructables.com/id/Laser-Cut-Record/
sorry I couldn't help more
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.
Romain
I really like the idea of printing records on something other than vinyl, which isn't a very nice material except that it can be thermo-molded at least once in a very accurate way.
One of the problems with vinyl was always the thickness and warping. Nobody liked floppy records, ideally they'd all be 1/4"+ thick and flat as a pane of glass. As long as you don't have to carry 100 of them around to gigs etc...
I'm really interested to see where this goes.
http://www.instructables.com/id/Laser-Cut-Record/
is it possible that you could change the processing code in the linear strip file so it builds a box base, similarly to how the record generator builds the the record for the grooves to be applied too.
sorry i haven't replied in awhile, been up to my eyeballs in stuff
the processing code works brilliantly, thank You :-)
however i'm now having issues trying to plant it in to surfaces so now i'm going to print it them and place them in to object manually.
Have you tried to placing them in to 3d model ?
cheers
charlie
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?
T
I'm gripped by the idea of making my own record and making a record player to play it on.
Thanks for your input!
Toby
String filename = "your_file_name_here.txt";
and change your_file_name_here.txt to whatever the name of your txt from python is. this is the same way you should have imported the wav into python.
Watch the video at the very beginning of the instructable, you'll see what I mean.
I've been playing with the code for the past week but i am a noob at writing code, hence why i messaged you because i was starting to think it was impossible :-( but i really would like to get this working as i agree it could open up into something different and interesting :-). Is it possible you could highlight the parts you think i would need to change ? also i'm looking though processing's reference page to help me gain a better understanding of its code but is there any where you feel could help me understand ?
thank you so so much
charlie
i was wondering if its possible to alter the processing code you have written to make the record grooves come out in a straight line instead of a spiral ?
C H
The 0dB level for a 1 kHz Signal has a stylus velocity of 10cm/s according to the RIAA specification. This can be transformed into a maximum amplitude of about 16 µm.
A good and cleaned record is able to provide 60dB signal/noise ratio (even more reported). This means 16 nm amplitude for a signal on the noise floor. And even below the noise floor signals are perceptible and significant to the ear/brain.
The critical dimension in the leading edge semiconductor industry is currently around 22nm ...
http://www.robotplanet.dk/audio/vst_temperature/
I believe a value of +20 should be the correct setting for cutting vinyl.
The plug-in has been tested with 96000 and 44100 Hz samplerates, but I think anything from 44100 and up should fine. Feel free to grab it.
Speaking of samplerate, I believe the 11025 rate is the major reason your experiment sounds "muffled". Low samplerates are rather devastating, compared to low bitrates or added noise, as this removes information that the ear cannot recreate.
thanks!
If you do your modeling with the RIAA record curve it will also help you with your maximum feature size as large low frequency features will be made smaller on your record thus helping you to record louder without bouncing the stylus out of the groove. The playback reversal will be automatic with any standard phono preamp.
Regarding phase again, all you need is a "L-R" differential output. If you switch the wires as Dreitakt suggests, then combine the outputs to mono, it should work.
With normal wiring, combining the channels yields "L+R" or only lateral modulation. This was originally done to provide normal playback of mono laterally cut records with stereo playback cartridges, resulting in 2 channels of in phase audio from the mirror image groove walls (no difference = no stereo = no vertical modulation which is _all_ your records should have)
Concerning the Phase of the two cartridge outputchannels: My experience is that there are four connectors, that are two for each channel (Left and Right). I think that the two connectors of one channel just have to be swapped providing the mono output to be in phase for both channels. Then, and this is normal way, no phase correction by Op-Amp or Software is is needed.
Good Luck
I think that the described 180 degrees phase shift is a faulty behaviour of the used turntable which can be corrected by the mentioned swapping of the two connector leads of only one channel ( left or right) directly at the cartridge outputs so that the other one is connected to signal ground.
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 !
String filename = "daftpunk.txt";
does that make sense?
One more thing, special styli are made for odd groves for collectors of old non-standard records. One of those or even just a "78" 3mil. one might give better sound from your big groove geometry.
Your records contain only vertical (up and down) audio modulation as per your described modeling process. A normal mono signal on a record is only lateral or back and forth modulation. Stereo recordings contain horizontal as the mono sum and vertical as the stereo difference between the 2 channels. I was wondering if your playback process is accounting for this?
I have not seen it brought up in any of the comments or your info.
If you are not doing so, setting up the playback cartridge to provide an output of only vertical modulation might dramatically increase your signal to noise ratio. Anything that describes how to wire a stereo cartridge for playback of Edison vertical (hill and dale) discs would be appropriate. Here is a link to a forum discussion -
http://forum.talkingmachine.info/viewtopic.php?f=7&t=7302
It basically involves combining the left and right outputs out of phase however it is done.
I am very interested in printing a record, but I don't have access to any type of 3D printer, do you know any kind of supplier that could print at this kind of detail?
Thanks
Thank you.
It's cruel but I really like imagining the pain on the face of an "audiophile" when you tell them you printed a record from a compressed mp3.
I was thinking, for a higher mechanical resolution, you could use the rapid prototyping machines as used in photonica labs (e.g. high precision milling).
It might help if you did the recordings in 45RPM. For a given wavelength reproduced, a 45RPM track is longer (ability to pack in more information given the resolution limit you have with the printer) versus a 33RPM track. Most every turntable around will run at 45RPM (you are correct 78RPM is hard to find) - move the belt to the other pulley or flip the switch. A lot of vinyl albums are pressed at 45RPM now - they are theoretically higher fidelity.
The longer length would allow you to use a higher resolution sound file. The RIAA curve would help a little bit, but it wouldn't be as dramatic as increasing to a higher resolution file.
Good work, great idea.
BTW, the process of turning up the gain without clipping is called "compression" or "companding" and you should use it instead of just turning up the gain and then clipping. You can use a Volume Maximizer plug-in or a compressor followed by a limiter. See http://en.wikipedia.org/wiki/Companding and http://gottagrooverecords.com/vinyl-mastering/
Again, awesome! My MakerBot has some catching up to do.
Uh...this was a joke...you know....something that requires a sense of humor.....there's an instructable on that..
I think your project concept is excellent. You'd probably achieve higher fidelity by cutting a pre-formed with an inscribing tool (basically a 3D milling machine instead of 3d printing. cutting plastic than printing.
Perhaps by combining some precision robotics controllers, stepper motors, etc you could learn to cut plastic. This would be great for all types of users with 3D printers who want to take a second pass at the printed output and put a slot or grove or hole in it.
excellent concept - good luck!
http://www.warf.org/technologies.jsp?ipnumber=P120012US01
For now a tip: Try C64 tunes or other chiptunes for experimenting. Although the soundchip SID is a synthesizer, it is able to play digitalized sounds from about 5 to 6 bits, ideal for experimenting with your printed vinyls.
http://www.youtube.com/watch?v=qr73jWMfGPg
There is also a special cardridge for the C64, the MSSIAH. It's an all-in-one audio cardrigde which also allows to play MIDI-controlled samples in 6 bit. There's a big forum with musicians, maybe some people are even interested to get their tunes on printed vinyl ;)
http://www.8bitventures.com/mssiah/
http://www.mssiah-forum.com/
http://www.youtube.com/watch?v=MAsxMjV7zEg
http://www.youtube.com/watch?v=mFPfsKI_Qck
Or try some of the over 42.000 SID songs from the High Voltage SID Collection ;)
http://www.hvsc.de/
Greets, RC.
I wanted to use the lower 33.3RPM speed in order to make this more like a real 12" record (45 RPM is only used for 7" records, and 33RPM for the full sized 12")
Playing speed and disc diameter are independent of one another, and there are discs out there of several sizes, from as small as 4" diameter for the Hip-Pocket records to a whopping 16" diameter for transcription grammophones, with dozens of sizes in between those besdies the standard 7" and 12" we're all familiar with. There are even some limited runs that go smaller than the 4" standard. I have several 7" and 10" discs that play at 33.3 RPM (EPs), and conversely have several 12" discs that play at 45 RPM (mostly European singles, which also have much wider grooves than standard American vinyl).
If you pushed your speed up to 45rpm on the same 12" vinyl blank, you could feasibly increase your audio fidelity without increasing the precision at which the machine would have to print the bumps (more bits per second, just by using more physical vinyl running under the needle per second without having to make the bumps smaller or cram more onto the same space).
What I really like is you chose some great sources for working with.
I doubt that the majority of people could actually tell the difference between a 128 kb/s MP3 and a vinyl record played on the "average" sound system. At any rate, There are 3-hundred some kb/s MP3s and codecs like FLAC that I believe reproduce the sound as accurately as vinyl, to my ears.
One thing that would have to be done is to print the record in a spiral, this would eliminate the repetitive sound. In a grid pattern, the resolution would need to be so high to eliminate the unwanted noise, that I don't see 3D printing ever being able to print a record that sounds good. The frequency of the bumps would need to be raised to where the frequency was above human's hearing range
I think the best way to make your own record would be to use a solenoid and a recording needle on a turntable and advance it inward as the record spins.
Yeah, most people can't tell the difference in digital and analog, nor do they care.
It would be like taking a picture on a 1 megapixel camera, printing it on a dot matrix printer, and re-taking the picture using a 2 megapixel camera and expecting significantly better results. The accuracy of the lower frequencies in these recordings suggests to me that the method for converting the mp3 to "bumps" is correct, and I don't see any benefit to measuring the depth directly.
What do you think the max dpi for scanning and printing is possible. Buy the way Good Job!
Disappointed by the apocalypse, but totally blown away by the Instructable!
The circle of life returns us to the beginnings (of audio anyway) again! ^_^
I can tell you put a LOT of work into this, and it's very interesting.
Oh, I think you put an equation in wrong. You wrote this:
revolutions per second = (revolutions per minute)/(minutes per second)
and I think you meant this:
revolutions per second = (revolutions per minute)/(seconds per minute)
(Because, there are either 0 minutes per seconds, or 1/60th minutes per second. However you want to calculate it.)
Too bad that you were limited by the technology, but it will improve. (Unless that Mayan Apocalypse hurries up and actually happens today!)
Very cool.
Thanks for the hard work, and even more thanks for sharing it!
Great job!
Can't wait to see what we'll be able to print in 5 to 10 years from now! :-)
K
3D Computing
Oh Oh DRM!...... copyright.... infringing technology....
Yes a new wave of piracy sweeps the globe....
The home made telephone quality audio record..........
Funny about the linear printing injection patterns, on the disk surface - sounds just like printing, but in reverse....
("Test two" reminded me of the sound effects from Forbidden Planet)
Here's a thought - how compatible would 3D printing be with cylinders, the oldest "records"?
Or would it be possible to scan an existing vinyl record and turn the scan into a new record?
Oh, and what about putting other kinds of data into your conversion process? What would a picture sound like? Or annual rainfall data?
This is a really exciting project!
> and turn the scan into a new record?
That would be an absolutely BRILLIANT way to revive old, worn out records! Just bring the peaks back to their old positions, and fill in gouges. Possibly even 'repair' old broken records that are irreplaceable!
There may be a whole new industry here!
By the way, I have a 1912 record player and its quality of sound is about the same :) at least on those record I have. It is so mind boggling to see the technology coming full circle in 100 years, except this time fully in control of an individual (with a nice 3D printer)
I am very curious: what is that repeating wining artifact once per revolution heard on all records? Is this a result of digitalization or something mechanical? Or perhaps introduced by the printer? Thank you for the great instructable!
Thank you for sharing!
p.s. I really liked that sync sweep sound at the very beginning of 'Smells Like Teen Spirit', very synthy!
A couple of thoughts on improving audio quality:
* You should definitely downsample or lowpass filter your source signal before encoding & making your record. This will eliminate aliasing caused by your low sample rate on the physical side. Given your sample rate of 5 to 12 kHz, you should lowpass filter your audio at between 2.5 and 6 kHz, depending on where the signal is being laid down on the disc. To make things easy, just lowpass around 4kHz and be done with it. This is really simple in audacity, sox, or any other audio processing software. (sox in.wav -r 8000 out1.wav; sox out1.wav -r44100 out2.wav) is one simple command line way to do it.
* you also need anti-aliasing on the playback side. This isn't as easy, but it will definitely be necessary to reduce all the aliasing caused by the bumps in the record. The easiest way to manage this would be to turn your treble knob all the way down. Definitely non-ideal, but will help. Otherwise you can put an actual lowpass filter in between the record player and amp, but that's tricky because the record players have such a tiny signal level -- you'd need to shield the whole filter. And it's hard to make a sharp lowpass anyway.
* You should apply RIAA EQ to the file before processing. If you're a DSP kind of person, this will make sense: http://www.musicdsp.org/showone.php?id=122. Otherwise, just draw the approximate EQ in audiacity equalizer before processing.
A few little tweaks and you'll have started the next audiophile revolution. ;-)
http://en.wikipedia.org/wiki/SPARS_code
Very interesting project. Thank you for share with us!
It'll still be a little pricey, I'm sure, but if hobbies were cheap, more people would have them. :) (or, at least, I like to think so!)
Did you apply RIAA equalization to the audio? RIAA reduces the base and boosts the treble. Because music signal typically has much higher amplitude of base than highs, this helps "pack" lauder sound into the groove, and improves the S/N ratio. Sorry I haven't read the details, but if you haven't, this is worth trying.
Also, using 45 rpm would help getting a better high frequency range.
http://en.wikipedia.org/wiki/RIAA_equalization
How are you feeding the audio signal from the turntable into your amp? Through a phono pre-amp or straight to line levels?
Makes sense. With a vector file you can leverage the interpolation built into the machine so that's one less thing to program.
@randofo: Hadn't considered "flame" polishing. (probably better to use a flash lamp in this case) With the UV cure, I assumed the print media wouldn't re-melt and flow.
I guess the next step in 3D printing will be to print a working CD.
Thanks for this amazing Instructable.
I do wonder if some micro-polishing would help the signal to noise ratio? Something like "jet polishing"? (just google those two terms) Or an "ultrasonic polish" by putting the record and some polish in a bag, and the whole mess in an ultrasonic cleaner?
Does the 3d printer have the ability to directly read a stack of layer bit-maps? A 12in x 12in x 600dpi binary bit-map should fit in about 6.5MB. A 20 layer stack would be about 130MB. (you'd need to repeat the bottom layer a lot of times to get a strong base though) Theoretically then, using a PC based layer slicer would let full records fit in the printer's memory.
The printer is essentially converting the 3D files to thousands of individual bitmaps. You would need a 3D model to initiate the printing and generate the files, and it will probably make it unhappy to start changing those files on it. It keeps track of the layers.
but what does one of these objet printers cost?
Hey-- I blog for Wired Magazine's GeekDad section and would love to do a post about this. Could I re-use one or two of your pictures in the posting? Email me as "roy.wood" at gmail or reply here if that's okay. Thanks!
thanks!