豪鬼メモ

一瞬千撃

Linux上でCDのリッピングとMP3エンコードを行う素朴な手順

傷がついたCDをiTunesとかでリッピングするとエラーになったり音飛びしまくったりするので、Linux上でCD Paranoiaを使ってリッピングしてLameでMP3に変換するという手順をよく遂行する。具体的な手順をよく忘れるので、メモっとく。


まず、CD ParanoiaLameとeyeD3をインストールしておく。また、以下のコマンドをwav-convert.shとかいう名前で用意しておく。

#! /bin/sh

lameopts="-h -b 192"         # 音楽用のLameオプション
#lameopts="-h -b 160 -m m"   # 語学教材用のLameオプション

count=1
stem="$1"
shift
album="$1"
shift
artist="$1"
shift
while [ $# -gt 0 ] ; do
    file=$1
    shift
    echo $file
done | sort |
while read file ; do
    title=`printf "%s-%02d" "$stem" "$count"`
    outfile=`printf "%s-%02d.mp3" "$stem" "$count"`
    echo "converting $file to $outfile"
    count=$((count+1))
    lame $lameopts "$file" "$outfile"
    eyeD3 --remove-all -A "$album" -a "$artist" -t "$title" --to-v2.3 "$outfile"
done

アルバム毎の作業用ディレクトリを作る。ここでは ~/music/album-hogeとする。複数枚組のアルバムの場合でもディレクトリは1個でOK。

$ mkdir album-hoge
$ cd album-hoge

そこで、CD Paranoiaをバッチモードで実行する。track01.cdda.wav、track02.cdda.wav、といったファイルがトラックごとに作られる。

$ cdparanoia -B

さきほどのwav-convert.shを実行する。第1引数はファイル名の接頭辞を指定する(通常はアルバム名と同じでよい)。第2引数はアルバム名を指定する。第3引数はアーティスト名を指定する。第4引数以降は、wavファイルのリストを指定する。

$ wav-convert.sh album-hoge album-hoge superman track*.wav

そうすると、album-hoge-01.mp3、album-hoge-02.mp3、といったファイルが作られる。うまくいっていたら、wavファイルを消す。

$ rm -f *.wav

複数枚組のアルバムの場合、cdparanoiaとwav-convertとrmの手順を一枚ごとに実行する。その際に接頭辞にalbum-hoge-01、album-hoge-02といった感じでディスク番号を付与しておく。

最後に、作業用ディレクトリごとMP3プレーヤにコピーする。

なぜ年の瀬にこんな面倒なことをしているかというと、クリスマスプレゼントにWALKMANを貰ったので、iTunesから乗り換えようと思ったからである。任意速度での再生ができてLinuxからマウントして曲データを転送できる筐体としてWALKMANを所望したのだ。でもって、昔にビットレート128kとかで作ったデータを192kとかでエンコードしなおそうと思ったわけだが、CDが結構傷ついていて多くのリッパーでうまく扱えないので、CD Paranoiaの出番というわけである。めんどくせーことこの上ない。