<<  2008.1  >>
SMTWTFS
  12345
6789101112
13141516171819
20212223242526
2728293031  
 
リンク
その他
  • RSS2.0
  • Credit

  • SEO
    loading

    プライバシーポリシー

カテゴリー » Linux » いろいろ January 03, 2008

Linux で音楽ファイルの cue シート作成 Linux

Linuxで音楽ファイルの可逆圧縮 : 再生編のコメント欄の質問を思い出して、CUEシートについて調べてみた今日この頃。

最近は音楽CDをパソコンに取り込む時に、アルバムをまとめて単一ファイルとして保存する方法が流行っているのですか?
Windows環境においてはcuesheetを利用した1CD1ファイルでの音楽ファイル管理がマニアの間では半ば常識となっている感があるけど
flac+cue [while(1)って恐くね?]
なんて書いてあったりするし。「ファイル数が少なくてフォルダスッキリ」「CDにある曲間(プリギャップ?)の再現」が利点なのかな? 可逆圧縮と組み合わせる事が多い?

残念ながらLinuxにはWindowsのExact Audio Copy(EAC)みたいなソフトがないようです。それでも上の flac+cue [while(1)って恐くね?] を参考にして、下のようにすれば作ることができました。
$ cdrdao read-cd --device /dev/cdrom --datafile CDImage.bin CDImage.toc
$ sox -t cdda CDImage.bin CDImage.wav
(sox: command not found なら yum or apt-get install sox)
$ toc2cue CDImage.toc CDImage.cue
$ sed -i 's/CDImage\.bin/CDImage\.wav/g' CDImage.cue
$ rm CDImage.bin CDImage.toc
でもこれだと曲情報が皆無。何を再生しているのかプレイリストに表示されません。cdrdao には --with-cddb というオプションがあるにはあるのですが、日本語が文字化けします。仮に文字化けしなくても toc2cue コマンドでCUEに変換すると情報が消えちゃうし… ruby-freedb は RPM が無いので却下。

それで、いろいろ考えたり検索したりして、以下のシェルスクリプトに落ち着きました。動作には sox の他に cueconvert(cuetools) が必要です。Fedora なら SeaMew RPMs(のくす牧場) のRHEL 5向けRPMを、Ubuntuなら apt-get install cuetools でインストール可能
#!/bin/bash
# -*- Coding: utf-8-unix -*-
# 音楽CDからWAVEとCUEシート作成
# ファイル上書きチェックしてないので注意

# CDDB サーバ http://freedbtest.dyndns.org/
cddb_server="freedbtest.dyndns.org:80:/~cddb/cddbutf8.cgi"

cdrdao read-cd --device /dev/cdrom --with-cddb \
--cddb-servers "$cddb_server" --datafile CDImage.bin CDImage.toc
sox -t cdda CDImage.bin CDImage.wav
cueconvert -i toc -o cue CDImage.toc CDImage.cue

# printf すると日本語の文字化けが直る
printf "$(cat CDImage.cue)\n" | sed -e '/^MESSAGE/d' -e '/^$/d' \
-e 's/CDImage\.bin/CDImage\.wav/g' > CDImage.cue.tmp
mv CDImage.cue.tmp CDImage.cue

# ファイル名をTITLEと同じにする
# やっつけ処理で上手くいかないかも
TITLE=$(grep TITLE CDImage.cue | head -1 | egrep -o '".*"' | \
sed -e 's/^"//' -e 's/"$//' \
-e "y@\"\/\<\>\\\*\:\?\|@”/<>¥*:?|@")
if [ "$TITLE" ]; then
  mv CDImage.wav "$TITLE".wav
  TITLE=$(echo -n "$TITLE" | sed 's/&/\\\&/g')
  sed "s/CDImage/$TITLE/g" CDImage.cue > "$TITLE".cue
  rm CDImage.bin CDImage.cue CDImage.toc
else
  rm CDImage.bin CDImage.toc
fi
大した事してないし動くはず。それはそうと、上のように printf を通すと文字化けが解決します。なぜ直るかは不明
$ cat CDImage.cue
TITLE "\343\202\202\343\201\206\343\201\262\343\201\ ..."
PERFORMER "\346\243\256\345\217\243\345\215\232\345\255\220"

# printf "$(cat CDImage.cue)"
TITLE "もうひとつの未来 〜starry spirits〜"
PERFORMER "森口博子"
とにかくこれでCUEシートが作れました。WindowsのEACと微妙に INDEX の値が違うけど気にしたら負けです。ドライブのオフセットとか追求しても気持ちの問題程度らしいし。

そのままだとサイズが大きいので圧縮するといい感じ
$ oggenc CDImage.wav -o CDImage.ogg
$ lame CDImage.wav CDImage.mp3
$ flac CDImage.wav -o CDImage.flac
$ wavpack CDImage.wav -o CDImage.wv
$ ttaenc -e CDImage.wav -o CDImage.tta
$ mac CDImage.wav CDImage.ape -c2000
CUEの「FILE "ファイル名" WAVE」をそれぞれエンコードした名前に書き換えて完了。

で、作ったのはいいけど再生はどうすれば?
また調べねば

≪続き≫
Linux で音楽ファイルの cue シート再生

≪追記 2008/02/21≫
abcde - A Better CD Encoderというプログラムがありました。
04:02 pm | コメントする |

上の記事に対するコメント

1. code_air_edge (Website)  2008/01/03 23:45
amaroKでしたら、WAVやOgg、FLACなどのファイルと同じディレクトリにCUEシートがあれば、再生時そのCUEシートの情報を元に表示して再生してくれます。
ただし、再生時にCUEシートを反映してくれるだけで、ライブラリにはそのメディアファイルが1つ登録されるだけなので、Windowsのプレーヤーのような扱いはできないですね。
CUEシートの規格自体がWin向けですし、Linuxではあまり対応しているソフトは見かけないですね・・・。

2. Owner CommentSawa  2008/01/04 19:18
ちょうどgoogleでヒットした
http://airedge.blog89.fc2.com/blog-date-20070916.html
を読んでました

>ライブラリにはそのメディアファイルが1つ登録されるだけ
これは分かりにくそうですね。
Linuxで一番先進的なamarokでもそうなんですか…
あ、でも「amarokだからこそ対応している、さすがamarok」と思うべきかも

3. NONAME  2008/01/05 11:06
k3bのオーディオCD作成機能でflacやttaなどはCueシートが使えます。
事前にCueシートの文字コード変換が必要ですが・・・
そのほかの形式もWaveに変換すれば分割→mp3に変換できました。

4. Owner CommentSawa  2008/01/05 14:18
情報ありがとうございます。
k3bとamarokは他の同種ソフトに比べて頭一つ抜けていますね。

5. モーマンタイ  2008/01/07 23:00
ちゃんと文章を読んでください。僕は[EAC]ape+cue.zip.rarを分割したいと書いたのです。それをipodに入れる方法も教えてください。それとCD-Rに焼く方法も教えてください。m4aを再生する方法と教えてくれたらうれしいです。

6. Owner CommentSawa  2008/01/08 00:39
いつかネタにします
今は再生する方法について調べてます

コメントをどうぞ。名前とURLはオプションです。

Comment Form
NAME:
URL:
文字色:  

累計:10197、今日:199、昨日:964
Created in 0.018 sec.