From Vinyl to Digital

Nothing beats the sound quality of a good LP record, but if you need travel convenience, you can make a CD or Ogg Vorbis copy.

Dory Previn inspired me to pursue this project. She recorded a string of intelligent, literate albums in the 1970s, but by the early 1990s they still were not available on CD. With a little searching, I found a package named gramofile by Anne Bezemer and Ton Le designed to capture the sound of vinyl and prepare it for burning to CD. Then, along came xmcd2make by C. R. Johnson, which extends gramofile's functionality. Look at the possibilities:

  • Preserve the music on inexpensive, durable media.

  • Have each track individually accessible with timing details.

  • Encode to Ogg or MP3.

  • Apply click reduction filters to all or selected tracks.

  • Leave out unwanted songs and rearrange the order.

  • Fit two albums onto one disk.

Preparing the Hardware

Sound quality depends on many factors, as explained in the “Linux Audio Quality HOWTO”, but with a quality sound card and well-supported drivers. Try to keep the card away from other cards to minimize induced noise. Because I'm using a spare PC solely for this project, I have only two cards installed: video in the first PCI slot and a SoundBlaster Live! 5.1 in the last PCI slot. If you plan to use the PC for other tasks while capturing the LP to disk, use a kernel from the 2.4 series, apply the preempt-kernel and lock-break patches (see Resources), select the new choices under Processor type, then build and install it. I was pleasantly surprised by the quality of sound on the CD from the first LP I processed.

Minimal Software

If you simply want to burn a CD, gramofile alone does the job. Install it from an RPM or deb file. Figure 1 shows the main menu. I discuss each step further later in this article. gramofile expects a mixer called xmixer, which I found in a Debian package called mctools-lite, but in the RPM world, it is in a package called multimedia. However, there's no problem using whatever mixer you have in another window or console.

Figure 1. gramofile's Main Menu

Deluxe Software

For the encoding of songs in Ogg or MP3 format, consider taking the extra steps to install xmcd2make and its dependencies also. A bit of tedium up front will simplify the processing of every album. The xmcd2make scripts are simply that—Perl scripts whose installation amounts to make install. However, they won't work until swig, oggenc (for Ogg encoding) or lame (for MP3), mpgtx and Perl module Getopt::Long are installed. In addition, xmcd2make expects the special version of gramofile that has perl-swig extensions, with a P in the version name. So let's get to work. Because this machine is dedicated to one task, I'll do all installs as root and untar each package from /usr/local.

swig has progressed, but gramofile hasn't. Using the latest version 1.3.17, the gramofile make perl-swig failed. Using Debian's older version 1.1.p883-4 (apt-get install swig), the make completed. Here's the manual equivalent:

tar xvzf swig1.1-883.tar.gz
cd  SWIG1.1-883
make install

oggenc should be available as RPM or deb packages, though the name may be elusive. For Debian, I used apt-get install vorbis-tools libvorbis0. Lame may be harder to find due to patent issues, and Ogg is the politically correct choice.

mpgtx, a command-line MPEG toolbox, is a simple apt-get install mpgtx in Debian, but I installed version 1.3 from source with the classic tar, configure, make, make install as in swig above. Though pages of warnings scrolled by, it installed without complaint.

The Perl module Getopt::Long is part of Debian's 5.6.1 package, and I hope it's in yours too. On my system it's installed in /usr/share/perl/5.6.1/Getopt/

A manual install of gramofile with perl-swig extensions is not for the timid. It requires ncurses5-dev and doesn't install itself. You'll need to know where your Perl CORE resides, so try:

cd /usr/lib
find -name CORE

This reveals that my Perl CORE is at /usr/lib/perl/5.6.1/CORE. After untarring gramofile, edit the Makefile in the perl-swig subdirectory, changing the line PERLCORE = -I/usr/... to match your installation:

tar xvzf gramofile-1.6P
cd gramofile-1.6P
cd perl-swig