Difference between revisions of "Rip Audio CDs"

From ArchWiki
Jump to: navigation, search
m (Using a simple shell script: used nowiki instead of html codes)
(simplification and beautification of wikilinks (interactive))
(Tag: wiki-scripts)
 
(20 intermediate revisions by 12 users not shown)
Line 1: Line 1:
 
[[Category:Optical]]
 
[[Category:Optical]]
 +
{{Merge|Optical Disc Drive|There's already [[Optical disc drive#DVD ripping]].}}
 
CD rippers are designed to extract ("rip") the raw digital audio (in a format commonly called CDDA) from a compact disc to a file or other output. Most CD rippers also support burning audio to a CD and transcoding it on-the-fly.
 
CD rippers are designed to extract ("rip") the raw digital audio (in a format commonly called CDDA) from a compact disc to a file or other output. Most CD rippers also support burning audio to a CD and transcoding it on-the-fly.
  
 
== Introduction ==
 
== Introduction ==
 +
 
Music is usually stored on audio CDs in an uncompressed format (requires a lot of space, e.g. 700MB for only 80 minutes of audio). Extracting the audio from the CD usually involves compressing it so that it requires less space using:
 
Music is usually stored on audio CDs in an uncompressed format (requires a lot of space, e.g. 700MB for only 80 minutes of audio). Extracting the audio from the CD usually involves compressing it so that it requires less space using:
 
; Lossless compression: same quality, less space.
 
; Lossless compression: same quality, less space.
Line 10: Line 12:
  
 
== Ripping ==
 
== Ripping ==
 +
 
=== Using a CD ripper ===
 
=== Using a CD ripper ===
{{Box||For some examples of CD rippers see: [[Common Applications#CD Ripping]].|#E5E5FF|#FCFCFC}}
 
  
=== Using a simple shell script ===
+
For some examples of CD rippers see: [[Optical disc drive#Ripping]].
If you want to rip an audio CD gapless and using CD-Text you can use the following shell script. You need to [[Pacman|install]] the {{Pkg|mp3splt}}, {{Pkg|cdrtools}} and {{Pkg|vorbis-tools}} packages, all available in the [[official repositories]].
 
  
{{hc|rip_gapless.sh|<nowiki>
+
=== Using a shell script ===
#!/bin/sh
 
# This script needs mp3splt, cdrtools, vorbis-tools
 
  
CREATE_OGG="true";
+
{{Accuracy|Doesn't pass [http://www.shellcheck.net/ shellcheck]}}
CREATE_FLAC="false";
 
CREATE_MKA="false";
 
  
WORKING_DIRECTORY=`pwd`
+
If you want to rip an audio CD gapless and using CD-Text you can use the shell script at [https://gist.github.com/anonymous/df51d12829bb1dac40e0]. You need to [[install]] the {{Pkg|mp3splt}}, {{Pkg|cdrtools}} and {{Pkg|vorbis-tools}} packages, all available in the [[official repositories]].
  
function usage()
+
=== Creating bin/cue files from CD ===
{
 
  echo "Usage: $0 [OUTPUT_DIRECTORY] device";
 
  echo "eg.: $0 my_audio_cd /dev/sr0";
 
  exit;
 
}
 
  
function no_cdtext()
+
One can create a bin/cue file pair from an audio CD by using {{Pkg|cdrdao}} from the shell:
{
+
$ cdrdao read-cd --read-raw --datafile cdimage.bin cdimage.cue
  echo "CD doesn't contain cd-text information";
 
  echo "Please specify output directory";
 
  echo "$0 OUTPUT_DIRECTORY device";
 
  exit;
 
}
 
  
function remove_quotes() {
+
The cue file generated by this method is not the same as some users may expect from tools such as EAC on Windows. To convert the cdrdao formatted cue files to the "standard" cue file, one can use {{AUR|yatoc2cue}}.
  local OUTPUT_STRING
 
  # remove quotes
 
  OUTPUT_STRING=$(echo "$1" | sed "s/^\([\"']\)\(.*\)\1\$/\2/g")
 
  # remove selected special characters
 
  echo "$OUTPUT_STRING" | sed "s/\(.*\)[\\]\(.*\)/\1\2/g"
 
}
 
  
 +
== Post-processing ==
  
# store command line parameters
+
=== Tag editors ===
if  [[ "$#" = "2" ]] ; then
 
  CDROM=$2;
 
  OUTPUT_DIRECTORY=$1;
 
elif [[ "$#" = "1" ]] ; then
 
  CDROM=$1;
 
else
 
  usage;
 
fi
 
  
# retrieve CD information
+
For some examples of audio tag editors see: [[List of applications#Audio tag editors]].
echo "Retrieve CD information"
 
CD_INFO=$(cdda2wav -J -g /dev/sr0 2>&1)
 
  
# test if CD-Text is available
+
=== Converting to other formats ===
if [[ "detected" == $(echo "${CD_INFO}" | awk '/^CD-Text.*/ {print $2}') ]]; then
 
  echo "CD-Text detected"
 
  CD_TEXT_DETECTED=true
 
  ALBUM_INFORMATION=$(echo "${CD_INFO}" | grep ^"Album title")
 
  # remove characters from beginning of string
 
  ALBUM_INFORMATION=$(echo "${ALBUM_INFORMATION#*Album title: }")
 
  ALBUM_TITLE=$(echo "${ALBUM_INFORMATION% from *}")
 
  ALBUM_TITLE=$(remove_quotes "${ALBUM_TITLE}")
 
  ALBUM_ARTIST=$(echo "${ALBUM_INFORMATION#* from }")
 
  ALBUM_ARTIST=$(remove_quotes "${ALBUM_ARTIST}")
 
fi
 
 
 
# check if cd has cdtext
 
if [[ true == ${CD_TEXT_DETECTED} ]]; then
 
  if [[ "2" = "$#" ]]; then
 
    echo "CD-text found"
 
    echo "Overriding given output directory name"
 
  fi
 
  mkdir -p "./${ALBUM_ARTIST}/${ALBUM_TITLE}"
 
  cd "./${ALBUM_ARTIST}/${ALBUM_TITLE}"
 
  OUTPUT_DIRECTORY="${ALBUM_ARTIST}/${ALBUM_TITLE}"
 
  OUTPUT_FILENAME="${ALBUM_TITLE}"
 
else
 
  if [[ "$#" != "2" ]]; then
 
    no_cdtext
 
  else
 
    mkdir "${OUTPUT_DIRECTORY}"
 
    cd "${OUTPUT_DIRECTORY}"
 
    OUTPUT_FILENAME="${OUTPUT_DIRECTORY}"
 
  fi
 
fi
 
 
 
cdda2wav -cuefile -paranoia -t all dev=${CDROM} "${OUTPUT_FILENAME}.wav" &> "${OUTPUT_FILENAME}.log"
 
  
if [[ "true" = ${CREATE_OGG} ]]; then
+
If the CD ripper you used does not support the format you wanted to convert to you can use other encoders/decoders such as [[FFmpeg]] or [[MEncoder]]. Some simple scripts to convert from [[Convert FLAC to MP3|flac]] to MP3 can also be found on the wiki.
  mkdir ogg
 
  pushd ogg
 
  oggenc -o "${OUTPUT_FILENAME}.ogg" -q 6 "../${OUTPUT_FILENAME}.wav"
 
  oggsplt -c "../${OUTPUT_FILENAME}.cue" -o "@N - @t" "${OUTPUT_FILENAME}.ogg"
 
  popd
 
fi
 
  
if [[ "true" = ${CREATE_FLAC} ]]; then
+
== See also ==
  mkdir flac
 
  pushd flac
 
  cd flac  # -5 -V -T "ARTIST=%a" -T "ALBUM=%g" -T "DATE=%y" -T "GENRE=%m" --tag-from-file=CUESHEET="%a - %g.cue" --cuesheet="%a - %g.cue" %s
 
  flac --cuesheet="../${OUTPUT_FILENAME}.cue" --tag-from-file=CUESHEET="../${OUTPUT_FILENAME}.cue" --output-name="./${OUTPUT_FILENAME}.flac" --best "../${OUTPUT_FILENAME}.wav"
 
  popd
 
fi
 
  
if [[ "true" = ${CREATE_MKA} ]]; then
+
* RIAA and actual laws allow backup of physically obtained media under these conditions [https://www.riaa.com/physicalpiracy.php?content_selector=piracy_online_the_law RIAA - The Law].
  mkdir mka
 
  pushd mka
 
  # -5 -V -T "ARTIST=%a" -T "ALBUM=%g" -T "DATE=%y" -T "GENRE=%m" --tag-from-file=CUESHEET="%a - %g.cue" --cuesheet="%a - %g.cue" %s
 
  flac --output-name="./${OUTPUT_FILENAME}.flac" --best "../${OUTPUT_FILENAME}.wav"
 
  mkvmerge -q -o "${OUTPUT_FILENAME}.flac.mka" "${OUTPUT_FILENAME}.flac" --attachment-mime-type text/plain --attachment-description "cdda2wav Log" --attach-file "../${OUTPUT_FILENAME}.log" --attachment-mime-type text/plain --attachment-description "Original CUE Sheet" --attach-file "../${OUTPUT_FILENAME}.cue" --title "${ALBUM_TITLE}" --chapters "../${OUTPUT_FILENAME}.cue"
 
  rm "./${OUTPUT_FILENAME}.flac"
 
  popd
 
fi
 
 
 
# rm "${WORKING_DIRECTORY}/${OUTPUT_DIRECTORY}/${OUTPUT_FILENAME}.{cddb,cdindex,cdtext,wav}"
 
</nowiki>}}
 
 
 
== Post-processing ==
 
=== Tag Editors ===
 
{{Box||For some examples of audio tag editors see: [[Common Applications#Audio tag editors]].|#E5E5FF|#FCFCFC}}
 
=== Converting to other formats ===
 
If the CD ripper you used does not support the format you wanted to convert to you can use other encoders/decoders such as [[FFmpeg]] or [[MEncoder]]. Some simple scripts to convert from [[Convert Flac to Mp3|flac]] or [[Convert Any To Mp3|other formats]] to mp3 can also be found on the wiki.
 

Latest revision as of 14:27, 30 March 2017

Merge-arrows-2.pngThis article or section is a candidate for merging with Optical Disc Drive.Merge-arrows-2.png

Notes: There's already Optical disc drive#DVD ripping. (Discuss in Talk:Rip Audio CDs#)

CD rippers are designed to extract ("rip") the raw digital audio (in a format commonly called CDDA) from a compact disc to a file or other output. Most CD rippers also support burning audio to a CD and transcoding it on-the-fly.

Introduction

Music is usually stored on audio CDs in an uncompressed format (requires a lot of space, e.g. 700MB for only 80 minutes of audio). Extracting the audio from the CD usually involves compressing it so that it requires less space using:

Lossless compression
same quality, less space.
Lossy compression
lower quality, much less space.

Most common formats to convert to are: APE and FLAC for lossless and MP3 and OGG for lossy.

Ripping

Using a CD ripper

For some examples of CD rippers see: Optical disc drive#Ripping.

Using a shell script

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: Doesn't pass shellcheck (Discuss in Talk:Rip Audio CDs#)

If you want to rip an audio CD gapless and using CD-Text you can use the shell script at [1]. You need to install the mp3splt, cdrtools and vorbis-tools packages, all available in the official repositories.

Creating bin/cue files from CD

One can create a bin/cue file pair from an audio CD by using cdrdao from the shell:

$ cdrdao read-cd --read-raw --datafile cdimage.bin cdimage.cue

The cue file generated by this method is not the same as some users may expect from tools such as EAC on Windows. To convert the cdrdao formatted cue files to the "standard" cue file, one can use yatoc2cueAUR.

Post-processing

Tag editors

For some examples of audio tag editors see: List of applications#Audio tag editors.

Converting to other formats

If the CD ripper you used does not support the format you wanted to convert to you can use other encoders/decoders such as FFmpeg or MEncoder. Some simple scripts to convert from flac to MP3 can also be found on the wiki.

See also

  • RIAA and actual laws allow backup of physically obtained media under these conditions RIAA - The Law.