Unixで音楽CDのエンコード

Unix系のOSならおそらく大丈夫。Mac(Snow Leopard)とUbuntu 11.04で確認した。
曲名、アーティストなどのメタ情報はCDDBなどに頼ることもできるが、この際手入力することで妥協しようとおもう。後で述べるが、cueファイルに手でメタ情報を書き込む。


まず、CDを挿入しよう。

MacUbuntuの場合、CDを挿入すると勝手にマウントされてしまう。排他制御する必要があるので、そのマウントを解除しなければならない。
そのためには、CDドライブの識別子を把握しなければならない。Macの場合は/dev/disk1など、Ubuntuの場合は/dev/cdromなどである。などというのは、後ろの数字が変わったりするから。でも、小さい順に振られている筈。
そしたら、アンマウントをする。

sudo umount /dev/disk1*

後ろに*を付けたのは、マルチセッションCD用の対策。
管理者権限が無い場合はディスクユーティリティーなどでアンマウント。

次にCDをtoc形式でリッピングする。
Ubuntu 11.04の場合は、

cdrdao read-cd --device /dev/cdrom --session 1 --datafile image.bin image.toc 

"--session 1"は最初のセッションだけ読み出すという意味。CCCDなどのマルチセッションCDの場合、オーディオは最初のセッションに書きこまれているので。
MacBoookPro(MC374J/A)の内蔵ドライブから読み出すときは

cdrdao read-cd --device 0,0,0 --session 1 --datafile image.bin image.toc 

とした。なぜか/dev/disk1はうまく行かなかった。他にドライブがあったら何を指定したら良いのか分からない。


作成されたtocをcueに変換する。

toc2cue image.toc image.cue

作成されたbinはBigEndian形式なのでLittleEndian形式に変換する。

dd if=image.bin of=image.wav conv=swab

lameでmp3に変換する。

lame -b 32 -B 256 -v -V 3 -q 0 -k --verbose -r image.wav image.mp3
# lame -r image.wav image.mp3

上側のコマンドは自分の趣味でオプションを付けたもの。最低限必要なのは下側のコメントアウトされてるコマンドなので、それをベースに変更してください。

image.cueをテキストエディタで開き、曲名などのメタ情報を手で打ち込む。
このサイトが詳しいので参考に

打ち込んだら、

FILE "image.bin" BINARY

となっているところを、

FILE "image.wav" WAVE

に書き換えておく。(実は不要)

打ち込みが終わり、lameエンコードも完了したらmp3spltを実行する。cueに従ってmp3を分割し、さらにタグ情報を埋め込んでくれる。バージョンは、なるべく新しいのを使用すること。(後述)

mp3splt -T 2 -f -o "@n2 - @t" -c image.cue image.mp3

詳しいオプションは

man mp3splt

などで調べること。CDDBに接続してメタ情報を取得することもできるのかな?文字コードはShift-JISになっているようだ。ありがたい。

mp3spltは2.2.5だと曲ごとの演奏者を読み込んでくれない。Ubuntu 11.04はデフォルトで入れられるのは2.2.5。MacPortsは2.2.6aでこれは大丈夫なのだが…ダウンロードはここから該当するディストリビューションを探していれる。


これでいちいちWindowsで再起動しなくて済む…しばらくはこれで通そうと思う。cueをマウントする必要が無いのがありがたい。そのうちGracenoteも調べようとは思う。Developperの登録をしてみたり。


追記 6/7: Ubuntuの場合Braseroでもtocリッピング可能。


追記 7/3: ちょっと修正

追記:MacPortsで必要なパッケージはcuetools, mp3splt, lame