Linux Step By Steps
Ripping cassette tapes and creating mp3 files
Written by Alan Jackson on July 2005

1)  Rip
Don't forget! - Set input volume to max with mixer (use xmixer or kmix).
I take my output from the earphone jack, and plug this into my sound card, into the stereo input jack (not microphone). If you have the volume too high on the tape player it could damage your sound card if you come in through the microphone jack, since it is expecting a small signal.
Record the sound with a gui like Sound Studio or Audacity, or from sox, *** this is my preference ***
$ rec -c 2 -r 44100 -s w myfilename.wav

The GUI's are good because then you can edit the file easily. Do record some silence at the beginning - you can always trim it later and you can see the noise level. However, Sound Studio in particular will take all your memory if you try to give it a whole side of a tape at once.

One side of a tape can easily exceed 200 Mb! 

2) Normalize, split, and write
Unless there is serious noise that would affect the normalization, go ahead and adjust the level now.
- normalize

You will probably need to load the file into audacity or rezound and trim the ends - starting and stopping the tape generates large noise spikes.
Rezound can normalize, but it is much slower... but then I have noticed I see a DC component on the signals that rezound can remove prior to normalization.

Rezound has better filters (like remove DC), but audacity lets you add the tag info when you same an mp3 file, though I'm not sure it actually works!

To automatically split the file up with rezound :
    remaster -> mark quiet areas

    adjust cues by hand

    file -> save as multiple files
        format mp3
        prompt only once...

Summary of steps in rezound (again, my own preference)

3. Tag and rename
I have a script for this...
While you're waiting on the file filtering and writing to finish, build the tagfile for adding tags and renaming the output files.

------------- begin -----------------
#!/usr/bin/perl -w
use strict;
use MP3::Info qw(:DEFAULT :genres);
my $SEP = ':';
my $thirty = '0--------1---------2---------3';
# read tag definition file and apply
while (<>) {
    next if (/^#/ || /^\s*$/); # skip blanks and comments
    if (/^SEP /) { # reset field separator
        $SEP = $_;

    my @vals = split(/\s$SEP\s/);
    # file exist?
    next if ! -e $vals[0];
    # any longer than 30 characters?
    foreach my $fld (@vals[2..7]) {
        if (!defined $fld) {$fld = " ";}
        if (length($fld) > 30) {
                die "$fld\n$thirty\nLength > 30 characters\n";
    my $outfile = $vals[1];
    print "Updating $vals[0] to $outfile with :\n",
        "\tTitle : $vals[1]\n",
        "\tArtist : $vals[2]\n",
        "\tAlbum : $vals[3]\n",
        "\tYear : $vals[4]\n",
        "\tComment : $vals[5]\n",
        "\tGenre : $vals[6]\n";
    rename($vals[0], $outfile);
----------------- end --------------------

tagfile :
# separator :
# all fields must be less than or equal to 30 characters
# file, new file, Title, Artist, Album, Year, Comment, Genre

Part1side1.mp3 : SpiritSong.mp3 : Spirit Song : Rainbow : DeColores 4, His Name Is Jesus : : : Folk
Part2side1.mp3 : IWillAriseAndGoToJesus.mp3 : I Will Arise and Go To Jesus : Rainbow : DeColores 4, His Name Is Jesus : : : Folk


Summary steps :
1. rec -c 2 -r 44100 -s w side_1.wav
2. rezound side_1.wav
3. tagfile
4. burn it all onto a CD for safe-keeping