3

I'm planning to rip my full CD collection (probably more than 100 CDs*) to FLAC with CDparanoia and ReplayGain tags added.

Over the years, I used different codecs and quality options for them, meaning I have some of those albums in MP3 CBR 320, some as V0-4 and some in Ogg Vorbis. Now, I would like to re-rip them all losslessly and I could use a program that lets me do all these tasks with the least amount of manual work involved.

Is there any program that you can think of that is able to rip CDs accurately to FLAC and add ReplayGain as well? (GUI or command line is both fine.)

  • Update: They are around 260, in fact. Conunting cases, excl. Bonus disks, DVDs, etc. ;)
4

Full disclosure: I am one of the former maintainers of abcde.

The command line ripper abcde has this ability. To install simply run the following command in a Terminal window:

sudo apt-get install abcde cdparanoia flac metaflac imagemagick glyrc

Then place the following configuration in a file ~/.abcde.conf:

# -----------------$HOME/.abcde.conf----------------- #
# 
# A sample configuration file to convert music cds to 
#       FLAC using abcde version 2.7.2
# 
# Modified for AskUbuntu http://askubuntu.com/q/867593/57576
#  to allow ReplayGain as well as Album Art retrieval...
#
# http://andrews-corner.org/linux/abcde/index.html
# -------------------------------------------------- #

# Encode tracks immediately after reading. Saves disk space, gives
# better reading of 'scratchy' disks and better troubleshooting of
# encoding process but slows the operation of abcde quite a bit:
LOWDISK=y

# Specify the method to use to retrieve the track information,
# the alternative is to specify 'musicbrainz':
CDDBMETHOD=cddb

# Make a local cache of cddb entries and then volunteer to use 
# these entries when and if they match the cd:
CDDBCOPYLOCAL="y"
CDDBLOCALDIR="$HOME/.cddb"
CDDBLOCALRECURSIVE="y"
CDDBUSELOCAL="y"

# Specify the encoder to use for FLAC. In this case
# flac is the only choice.
FLACENCODERSYNTAX=flac

# Specify the path to the selected encoder. In most cases the encoder
# should be in your $PATH as I illustrate below, otherwise you will 
# need to specify the full path. For example: /usr/bin/flac
FLAC=flac

# Specify your required encoding options here. Multiple options can
# be selected as '--best --another-option' etc.
# Overall bitrate is about 880 kbs/s with level 8.
FLACOPTS='-s -e -V -8' 

# Output type for FLAC.
OUTPUTTYPE="flac"

# Options to pass to metaflac for ReplayGain:
FLACGAINOPTS="--add-replay-gain"

# The cd ripping program to use. There are a few choices here: cdda2wav,
# dagrab, cddafs (Mac OS X only) and flac. New to abcde 2.7 is 'libcdio'.
CDROMREADERSYNTAX=cdparanoia            

# Give the location of the ripping program and pass any extra options,
# if using libcdio set 'CD_PARANOIA=cd-paranoia'.
CDPARANOIA=cdparanoia  
CDPARANOIAOPTS="--never-skip=40"

# Give the location of the CD identification program:       
CDDISCID=cd-discid            

# Give the base location here for the encoded music files.
OUTPUTDIR="$HOME/Music"               

# The default actions that abcde will take.
ACTIONS=cddb,getalbumart,playlist,read,replaygain,encode,tag,move,clean

# Decide here how you want the tracks labelled for a standard 'single-artist',
# multi-track encode and also for a multi-track, 'various-artist' encode:
OUTPUTFORMAT='${OUTPUT}/${ARTISTFILE}-${ALBUMFILE}/${TRACKNUM}.${TRACKFILE}'
VAOUTPUTFORMAT='${OUTPUT}/Various-${ALBUMFILE}/${TRACKNUM}.${ARTISTFILE}-${TRACKFILE}'

# Decide here how you want the tracks labelled for a standard 'single-artist',
# single-track encode and also for a single-track 'various-artist' encode.
# (Create a single-track encode with 'abcde -1' from the commandline.)
ONETRACKOUTPUTFORMAT='${OUTPUT}/${ARTISTFILE}-${ALBUMFILE}/${ALBUMFILE}'
VAONETRACKOUTPUTFORMAT='${OUTPUT}/Various-${ALBUMFILE}/${ALBUMFILE}'

# Create playlists for single and various-artist encodes. I would suggest
# commenting these out for single-track encoding.
PLAYLISTFORMAT='${OUTPUT}/${ARTISTFILE}-${ALBUMFILE}/${ALBUMFILE}.m3u'
VAPLAYLISTFORMAT='${OUTPUT}/Various-${ALBUMFILE}/${ALBUMFILE}.m3u'

# This function takes out dots preceding the album name, and removes a grab
# bag of illegal characters. It allows spaces, if you do not wish spaces add
# in -e 's/ /_/g' after the first sed command.
mungefilename ()
{
  echo "$@" | sed -e 's/^\.*//' | tr -d ":><|*/\"'?[:cntrl:]"
}

# What extra options?
MAXPROCS=2                              # Run a few encoders simultaneously
PADTRACKS=y                             # Makes tracks 01 02 not 1 2
EXTRAVERBOSE=2                          # Useful for debugging
COMMENT='abcde version 2.7.2'           # Place a comment...
EJECTCD=y                               # Please eject cd when finished :-)

This is a basic configuration and many, many more options are available including:

  1. Automatic embedding of the downloaded album art
  2. Many, many other options for album art downloading
  3. Different flac encoding options
  4. The possibility of encoding to multiple other codecs simultaneously
  5. Different file naming, folder locations etc

But this basic configuration may very well be enough for your purposes. If so simply insert you Audio CD and run the command:

abcde

And all should be well!

Note: Values are stored for both track and album gain, see the mediainfo output below. I have highlighted album and track values with a <-----:

General
Complete name                            : 01.Speak To Me Breathe.flac
Format                                   : FLAC
Format/Info                              : Free Lossless Audio Codec
File size                                : 20.2 MiB
Duration                                 : 4 min 0 s
Overall bit rate mode                    : Variable
Overall bit rate                         : 705 kb/s
Album replay gain                        : -3.68 dB  <-----
Album replay gain peak                   : 0.968201  <-----
Album                                    : Dark Side Of The Moon 1992 remaster
Track name                               : Speak To Me Breathe
Track name/Position                      : 01
Track name/Total                         : 09
Performer                                : Pink Floyd
Genre                                    : Psychedelic Rock
Recorded date                            : 1973
Cover                                    : Yes
Cover type                               : Cover (front)
Cover MIME                               : image/jpeg
Comment                                  : abcde version 2.7.2
CDDB                                     : 710a1109

Audio
Format                                   : FLAC
Format/Info                              : Free Lossless Audio Codec
Duration                                 : 4 min 0 s
Bit rate mode                            : Variable
Bit rate                                 : 705 kb/s
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 44.1 kHz
Bit depth                                : 16 bits
Replay gain                              : -0.48 dB  <-----
Replay gain peak                         : 0.679779  <-----
Stream size                              : 20.2 MiB (100%)
Writing library                          : libFLAC 1.3.1 (UTC 2014-11-25)

References:

  • Hi Andrew, thank you for your detailed answer! I've read about abcde before, but wasn't able to find anything on this particular setup. Do you know if both track gain and album gain will be added this way? That's another important detail for me. – Prototype700 Jan 4 '17 at 19:09
  • 1
    @Prototype700 Looks like both, I have added mediainfo output to the answer to illustrate this... – andrew.46 Jan 4 '17 at 20:29
  • Ah, yes it looks that way, indeed. That's great, this leaves no questions unanswered for me. Thank you! – Prototype700 Jan 5 '17 at 13:31
  • Edit: I had gotten an error message that the package for "metaflac" could not be found while trying to install, apparently it's already included in the "flac"-package and can safely be removed from the command. Everything seems to be working fine, thanks again! One further note: I like to remove all "unnecessary" tags (e.g.Genre and the CDDB data) from the files. To accomplish this automatically, I had to move the "replaygain" action further back, just before "clean" and add "--remove-tag=(name of tag)" after "--add-replay-gain" in the FLACGAINOPTS-config. If someone else should look for it. – Prototype700 Feb 7 '17 at 13:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.