If you, like me, have a sizable vinyl record collection, then at some point you may want to make digital copies of them ("vinyl rips") so you can play them out or enjoy them on your phone or computer. I've done this a fair amount of times -- probably about a hundred records -- and let me tell you: there is a lot that can go wrong and affect the quality of your transfers!
A friend of mine recently asked for some tips on vinyl ripping his own collection, so the following started as a comment on his Facebook post. However, after posting, I realized that some of this knowledge may not be very widely known, so I thought I would polish it up and make a blog post of it!
This is not a step-by-step guide for beginners; I am assuming you already have your turntable, software, and audio setup worked out. (I am also kind of assuming you are an electronic music DJ, but this advice should work for anyone.) So if you want your hand held, look elsewhere! This post is more about the little things you want to think about before you hit Record:
Check your pitch calibration using the dots on the side of the platter and the red light. You want to make sure that the '0' on the pitch control corresponds with exactly 33 or 45 RPM. This is especially important for accurate BPM readings, beatgridding, and beatmatching. If you don't know how to do this, here is a good guide.
It helps to have two turntables: one for recording (deck 1), and one for prepping the next disc you want to record (deck 2).
Do a quick cleaning on the disc right before you record to reduce dust. A wet cleaning would be best; I usually do this on deck 2 while deck 1 records. You can put a fan on it so it dries fast. This way all you will have to do on the disc you are recording is a quick dusting or dry clean, mainly to catch dust from the slipmat (if you use those) or the rubber mat.
Use a fresh needle; worn needles will impact sound quality!
If you're using a digital recorder, it can be annoying to match up generically-named audio files to their original disc. So, on a notepad, or in your phone's notes, write down the file name on the recorder next to the record name or Discogs ID. Then, it will be easy to match which file goes to each disc, and then you can add other metadata later. (And be sure to hit the 'track cut' button, or hit stop and then record again!)
For electronic music: even with the Technics direct drive, even if you calibrate it with the red light and the dots, there is very slight pitch wobble and BPM won't usually be a perfect round number. I believe this is a symptom of analog being analog both on your turntable and on the record cutter that produced the original mother that your disc is stamped from. This makes accurate BPM readings and setting up beatgrids on DJ software a much bigger pain in the ass than you might be used to with digital files. Be careful playing these out with SYNC enabled!
If possible, you should record in 32-bit float format. This way it is practically impossible to clip the recording! Then you can set audio levels in post and bounce the final cut to 16-bit. 32-bit float has such a wide dynamic range that clipping is never going to happen. (That said, I don't think this benefits sound quality very much if at all; but there are those who would argue that you should record in at least 24-bit. My suspicion is that this is an audiophile's old wives' tale. My own research indicates that vinyl's dynamic range is equivalent to something closer to 12-bit digital audio.)
Recording in anything above 44.1khz is probably overkill -- but if you want a higher sample rate do an integer multiple like 88.2khz. This way, you can minimize the chances of downsampling adding weird quantization artifacts. Again, there are those who would argue you should record in the highest sample rate you can, but in my opinion this more audiophile cargo-culting. (The exception here is if you plan on doing weird stuff to the resulting audio file, like pitching it down, sampling, or running it through an FX chain. In those cases a higher sample rate would be better.)
Set your needle weight to something a little higher than usual, so that you can minimize skips.
Make sure the needle is as close to perpendicular to the disc as possible; a slanted needle will produce stereo audio levels that are slightly higher in one channel than the other. If possible you will want to verify this with level meters before getting started.
And one bonus tip: handle your needles and the tonearm very carefully! Don't be like me and drunkenly clip the cartridge with your arm, sending the needle skidding across the record like a crashed motorcycle. The tonearm+cartridge+needle assembly is very delicately balanced and shocks like that can throw something out-of-whack!
Finally, I don't have any recommendations for needles or cartridges, other than the venerable Shure M44g, if you can get your hands on one. I'm still pissed that Shure stopped making them. When I run out of spares I will be a very sad panda. (Though I have heard good things about JICO's clones.)
Sitting around the campfire
I recently ran into the following error when adding some indices to a PostgreSQL database from within an Alembic migration:
CREATE INDEX CONCURRENTLY cannot run inside a transaction block
Which makes sense, particularly if you're creating the table with the index in the same migration (transaction block) -- how can `CREATE INDEX` know anything about a table that doesn't exist yet?
There are a variety of SQL schema transforms (a.k.a. DDL statements) that work this way. Alembic migrations are always run inside a transaction, and breaking out a given statement is not immediately obvious. Luckily, Alembic provides a way for us to end the transaction early and execute statements on their own ("autocommit"):
def upgrade():
with op.get_context().autocommit_block():
op.execute("ALTER TYPE mood ADD VALUE 'soso'")
It's important to note that any statements before the autocommit block will be committed! So it is probably best to do this last, at the end of your migration, in order to keep things simple.
And while this blog post speaks of PostgreSQL, this should apply to any database that SQLAlchemy supports!
Selected tracks from my debut album, Listen E.P., are now available for your enjoyment on streaming platforms worldwide! It's Technological / The Dream can be found on Spotify, Apple Music, and many others! Give em a listen today!
Do you have an HSTORE column on your PostgreSQL database that you don't want to be `null` but need to have a default value? The syntax for this is a little irregular; so I'm posting it here for my own reference and yours:
my_column HSTORE DEFAULT '' NOT NULL
is the line in your `CREATE TABLE`command that you want.
Additionally, if you want your SQLAlchemy model object to initialize this column with said empty dictionary (instead of `None`), per this StackOverflow post you need take a couple of extra steps in your model:
from sqlalchemy.dialects.postgresql import HSTORE
from sqlalchemy.ext.mutable import MutableDict
class Item(db.Model):
my_column = db.Column(MutableDict.as_mutable(HSTORE), nullable=False, default={}, server_default='')
def __init__(self, **kwargs):
kwargs.setdefault('my_column', {})
super(Item, self).__init__(**kwargs)
Girl with a Pearl Earring by Johannes Vermeer (Mauritshuis)
Every so often I find myself looking for art for some reason or another -- maybe a blog post, or referencing something I saw in a museum, or maybe just for plain enjoyment -- and oftentimes it can be found in an open image collection! I've kept a small working list of these places in my head over the years, and I realized it might be useful to write them down and figure out what else is out there. As it turns out, there is a lot!
This is a collection of high-resolution, open-access, free-download, free-to-use image libraries, focusing on the visual arts like painting or photography. There are other styles of art (like sculptures, audio, or archaeological artifacts) in some of these links but that is not the focus. Most of these links are free to use in any application -- commercial or non-commercial -- but not all. Please check the license before using anything you find here commercially. The images in these links should be a mixture of public domain and Creative Commons-licensed content.