25.
Januar
2011
In den FAQ ist schon seit ca. 2004 nachzulesen, dass ich unter Linux zum Rippen von meinen Audio-CDs die beiden Softwarelösungen abcde
und/oder grip
verwende. Da ich den größten Teil meiner CD-Sammlung schon vor Jahren in .mp3 umgewandelt hatte, war auf meinem aktuellen System kein abcde
mehr eingerichtet.
Grund genug für mich ein paar Zeilen zu schreiben wie ich beim Einrichten vorgegangen bin und wie so ein Vorgang des »Rippens« einer Audio-CD so aussehen kann.
Da ich die Kommandozeile unter Linux liebe und sich darüber viele Dinge schnell und einfach erledigen lassen, sieht es natürlich auch bei der Wahl der Software für diesen Fall nicht anders aus.
Meine Wahl fiel daher schon vor etlichen Jahren auf abcde
. Wie man auf so einen Namen für ein Skript kommen kann? Nun ja, da war eben mal wieder jemand kreativ.
Offiziell ist es jedenfalls die Abkürzung für »A Better CD Encoder« und sehr einfach zu merken. Es handelt sich dabei wie schon erwähnt um ein Skript und nicht um ein eigenständiges Programm. abcde
ruft andere Programme auf und übernimmt sozusagen das Management des Ablaufs des Rippens, Encodierens und versieht auf Wunsch die erzeugten Dateien mit ID3-Tags.
Die von einer Audio-CD ausgelesenen Daten können über abcde
anschließend in unterschiedlichen Dateiformaten mit (unterschiedlichster) Kompression abgspeichert werden, beispielsweise FLAC, MP3 und Vorbis. Standardmäßig wird erst einmal jeder Track in ein separates WAV extrahiert.
Durch zusätzliche Programme können die ID3-Tags vom Server von freedb.org[1] heruntergeladen werden und nach einer Bestätigung oder Bearbeitung der heruntergeladenen Daten automatisch den .mp3 zugewiesen werden.
Die Installation von abcde
kann über die Kommandozeile oder über ein grafisches Paketverwaltungswerkzeug bewerkstelligt werden. Ich ziehe natürlich die Variante mit der Kommandozeile vor: sudo apt-get install abcde
. Die Ausgabe an der Konsole sollte so oder so ähnlich aussehen:
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Statusinformationen werden eingelesen... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
cd-discid vorbis-tools
Vorgeschlagene Pakete:
distmp3 id3 id3v2 eyed3 normalize-audio vorbisgain mkcue mp3gain
python-musicbrainz
Die folgenden NEUEN Pakete werden installiert:
abcde cd-discid vorbis-tools
Wie man sehen kann werden bestehende Abhängigkeiten wie üblich automatisch aufgelöst und noch zusätzliche Programme installiert. Da am Ende Dateien im Format MP3 erstellt werden sollen, muss auch noch lame
als Encoder installiert werden. Damit MP3-Tags in die erstellten Dateien geschrieben werden können, werden auch noch die beiden Pakete id3
und id3v2
über einen Kommandozeilenaufruf installiert: sudo apt-get install lame id3 id3v2
.
Somit sind alle Programme und Skripte für den ersten Start von abcde
installiert – lediglich die Konfiguration fehlt noch. In der standardmäßigen Konfiguration will abcde
die Musikdateien im Format Vorbis ablegt, muss dies durch eine im Home-Directory abgelegte Konfigurationsdatei .abcde.conf
abgeändert werden. Schließlich sollen Dateien im Format MP3 erzeugt werden. Hierfür gibt es im Internet einige Konfigurationsdateien. Ich habe es mir hier auch recht einfach gemacht und die Beispielkonfiguration von Andrew Strong[2] übernommen:
# -----------------$HOME/.abcde.conf----------------- #
#
# A sample configuration file to convert music cds to
# MP3 format using abcde version 2.3.99.6
#
# http://andrews-corner.org/abcde.html
# -------------------------------------------------- #
# Specify the encoder to use for MP3. In this case
# the alternatives are gogo, bladeenc, l3enc, xingmp3enc, mp3enc.
MP3ENCODERSYNTAX=lame
# 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/lame
LAME=lame
# Specify your required encoding options here. Multiple options can
# be selected as '--preset standard --another-option' etc.
LAMEOPTS='--preset extreme'
# Output type for MP3.
OUTPUTTYPE="mp3"
# The cd ripping program to use. There are a few choices here: cdda2wav,
# dagrab, cddafs (Mac OS X only) and flac.
CDROMREADERSYNTAX=cdparanoia
# Give the location of the ripping program and pass any extra options:
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,playlist,read,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'
# Put spaces in the filenames instead of the more correct underscores:
mungefilename ()
{
echo "$@" | sed s,:,-,g | tr / _ | tr -d \'\"\?\[:cntrl:\]
}
# What extra options?
MAXPROCS=2 # Run a few encoders simultaneously
PADTRACKS=y # Makes tracks 01 02 not 1 2
EXTRAVERBOSE=y # Useful for debugging
EJECTCD=y # Please eject cd when finished :-)
Da die Konfigurationsdatei sehr gut kommentiert ist (wenn auch »nur« auf englisch), erspare ich mir eine detailierte Beschreibung der gewählten Optionen. Weiter also mit dem Beispiel wie die Ausgabe während des Rippens einer Audio-CD an der Konsole verläuft. Von mir eigegebene Aufrufe sind fett hervorgehoben und werden unterhalb der Ausgaben beschrieben:
amy@turanga:~$ abcde -d /dev/cdrom4
Executing customizable pre-read function... done.
Getting CD track info... Querying the CD for audio tracks...
Grabbing entire CD - tracks: 01 02 03 04 05 06 07 08 09 10 11 12 13
Checking CDDB server status...
Querying the CDDB server...
Obtaining CDDB results...
Retrieving multiple matches... done.
In meinem Fall habe ich als Device /dev/cdrom4
angeben müssen, da mein per USB angeschlossener DVD-Brenner unter Linux als eben dieses Device erkannt und vom System integriert wird.
Die letzte zitierte Zeile suggeriert, dass mindestens zwei Einträge zur gleichen CD in der freien CD-Datenbank gefunden wurde. Automatisch wird an dieser Stelle eingeblendet, welche Einträge in den jeweiligen Listen vorhanden sind. Diese können an dieser Stelle im Ablauf lediglich betrachtet, aber noch nicht verändert werden.
Nach dem Schließen der Anzeige ist die nächste offene Frage zu lesen:
Which entry would you like abcde to use (0 for none)? [0-2]: 1
Durch die Eingabe von 1
habe ich die Auswahl auf den ersten der beiden gefundenen Einträge in der freien CD-Datenbank gesetzt. Diese wird nun erneut angezeigt. Die Ausgabe endet mit der Abfrage ob die Datei editiert werden soll:
Selected: #1 (Karpatenhund / Karpatenhund #3)
---- Karpatenhund / Karpatenhund #3 ----
Year: 2007
Genre: Rock
1: Ist es das was Du wolltest
2: Zusammen verschwinden
3: Gegen den Rest
4: Nicht wirklich glücklich
5: Ich will das Du bleibst
6: Tag der nicht vergeht
7: Szene 1
8: Kein Wort mehr
9: Eigentlich wollte ich mich nicht mehr verlieben
10: Stunts
11: Für immer
12: Oh ja
13: Bridgeport night
Edit selected CDDB data? [y/n] (n): y
Eigentlich passt ja soweit alles, jedoch wollte ich das Beispiel durchspielen wenn eine Korrektur an den Daten notwendig sein sollte. Beispielsweise wenn sich ein Rechtschreibfehler eingeschlichen haben sollte oder vom ursprünglichen Verfasser der Liste (un)bewusst falsche Daten bei Jahr, Genre oder den Titeln eingegeben worden sind.
Es öffnet sich nun noch einmal ein Editor (in meinem Fall vim
), mit welchem die Informationen noch einmal bearbeitet werden könnten.
Nachdem Korrekturen vorgenommen wurden, wird die Datei einfach gespeichert und der Editor beendet. Der Ablauf des Rippens wird von abcde
automatisch mit der nächsten Frage fortgesetzt:
Is the CD multi-artist? [y/n] (n): n
Creating playlist...
Grabbing track 01: Ist es das was Du wolltest...
cdparanoia III release 10.2 (September 11, 2008)
Ripping from sector 0 (track 1 [0:00.00])
to sector 19927 (track 1 [4:25.52])
outputting to /home/amy/abcde.980ab90d/track01.wav
(== PROGRESS == [ > | ...... 00 ] == :^D o ==)
Da die CD von »Karpatenhund«[3] nur einen Künstler hat (nämlich »Karpatenhund« selbst), ist es natürlich keine »multi-artist«-CD. Daher die Eingabe von n
, nach deren Bestätigung mit dem Auslesen und Encodieren der einzelnen Stücke begonnen wird.
Dabei wird der Fortschritt zunächst in einer Zeile dargestellt. Ist ein Schritt abgeschlossen »rutscht« die bisherige Ausgabe nach oben, der nächste Fortschrittsbalken wird angezeigt:
Grabbing track 02: Zusammen verschwinden...
cdparanoia III release 10.2 (September 11, 2008)
Encoding track 01 of 13: Ist es das was Du wolltest...
Ripping from sector 19928 (track 2 [0:00.00])
to sector 34488 (track 2 [3:14.10])
outputting to /home/amy/abcde.980ab90d/track02.wav
(== PROGRESS == [ > | 029439 00 ] == :-) o ==)
Tagging track 01 of 13: Ist es das was Du wolltest...
(== PROGRESS == [ | 034488 00 ] == :^D * ==)
Done.
Dies wird so lange fortgesetzt bis alle Musikstücke von der CD ausgelesen und als .mp3 auf der Festplatte gespeichert wurden.
X_FISH