Unixで音楽CDのエンコード
Unix系のOSならおそらく大丈夫。Mac(Snow Leopard)とUbuntu 11.04で確認した。
曲名、アーティストなどのメタ情報はCDDBなどに頼ることもできるが、この際手入力することで妥協しようとおもう。後で述べるが、cueファイルに手でメタ情報を書き込む。
まず、CDを挿入しよう。
MacとUbuntuの場合、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: ちょっと修正