前回ではqaacがシェルから使えるようにしました。その続きです。
次にabcdeとatomicparsleyをいれます。これはA Better CD Encoderの略で、cddbからのタグ取得とリッピングとエンコードを一気にやってくれます。サイコーです。atomicparsleyはaacエンコードをした際にabcdeでのタグ付けに必要なようです。
# aptitude install abcde atomicparsley
abcdeはAACエンコーダがfaacしか使えないのですが、実はシェルスクリプトなのでqaacが使えるように弄れます。弄ってうまくいったのでパッチを作りました。パッチを当てられるようにpatchコマンドもいれます。
# aptitude install patch
abcde.patch
--- abcde.orig 2012-09-18 22:51:23.000000000 +0900
+++ abcde 2013-11-08 03:50:05.355956207 +0900
@@ -1154,7 +1154,9 @@
;;
m4a)
# Tag the file at encode time, as it can't be done after encoding.
- if [ "$DOTAG" = "y" ]; then
+ if [ "$AACENC" = "qaac" ]; then
+ $RUN_COMMAND nice $ENCNICE $AACENCODER $AACENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" --title "$TRACKNAME" --track "$1" --genre "$CDGENRE" --date "$CDYEAR" "$IN" -o "$OUT"
+ elif [ "$DOTAG" = "y" ]; then
$RUN_COMMAND nice $EFFECTIVE_NICE $AACENCODER $AACENCODEROPTS --artist "$TRACKARTIST" --album "$DALBUM" --title "$TRACKNAME" --track "$1" --genre "$CDGENRE" --year "$CDYEAR" --comment "$COMMENT" -o "$OUT" "$IN"
else
@@ -3869,6 +3871,10 @@
AACENCODEROPTS="${AACENCODEROPTSCLI:-$AACENCOPTS}"
AACENCODER="$AACENC"
;;
+ qaac)
+ AACENCODEROPTS="${AACENCODEROPTSCLI:-$AACENCOPTS}"
+ AACENCODER="$AACENC"
+ ;;
esac
# and which tagger
# patch /usr/bin/abcde < abcde.patch
設定ファイルはホームディレクトリでも読んでくれるのでコピーします。
$ cp /etc/abcde.conf ~/.abcde.conf
あとはabcdeがqaacを使うように設定します。一応私の設定とデフォルトの差分を載せておきます。
abcde.conf.diff
--- abcde.conf 2012-09-18 22:51:23.000000000 +0900
+++ .abcde.conf 2013-11-08 21:57:47.090984769 +0900
@@ -12,6 +12,7 @@
# If you just wanted to use a proxy server, just set your http_proxy
# environment variable - wget will use it correctly.
#CDDBURL="http://freedb.freedb.org/~cddb/cddb.cgi"
+CDDBURL="http://freedbtest.dyndns.org/~cddb/cddb.cgi"
# The CDDB protocol level.
# Right now 5 is latin1 output and 6 is UTF8 encoding.
@@ -70,6 +71,7 @@
#SPEEXENCODERSYNTAX=default
#MPPENCODERSYNTAX=default
#AACENCODERSYNTAX=default
+AACENCODERSYNTAX=qaac
# Specify the syntax of the normalize binary here - so far only 'normalize'
# is supported.
@@ -128,6 +130,7 @@
#SPEEXENC=speexenc
#MPPENC=mppenc
#AACENC=faac
+AACENC=qaac
#ID3=id3
#ID3V2=id3v2
@@ -186,6 +189,7 @@
# M4A/AAC
#AACENCOPTS=
+AACENCOPTS="--cvbr 192 -q 2"
#ID3OPTS=
#ID3V2OPTS=
@@ -239,6 +243,7 @@
# OUTPUTTYPE can be either "ogg", "mp3", "flac" or "spx", or a combination
# of them separated with ",": "ogg,mp3".
#OUTPUTTYPE=ogg
+OUTPUTTYPE=m4a
# Output filename format - change this to reflect your inner desire to
# organize things differently than everyone else :)
@@ -251,9 +256,10 @@
# to the files. Remove it from your user defined string if you are getting
# files like ".ogg.ogg".
#OUTPUTFORMAT='${ARTISTFILE}-${ALBUMFILE}/${TRACKNUM}.${TRACKFILE}'
+OUTPUTFORMAT='${ALBUMFILE}/${TRACKNUM} ${TRACKFILE}'
# Like OUTPUTFORMAT but for Various Artists discs.
#VAOUTPUTFORMAT='Various-${ALBUMFILE}/${TRACKNUM}.${ARTISTFILE}-${TRACKFILE}'
+VAOUTPUTFORMAT='${ALBUMFILE}/${TRACKNUM} ${TRACKFILE}'
# Like OUTPUTFORMAT and VAOUTPUTFORMAT but for the ONEFILE rips.
#ONETRACKOUTPUTFORMAT=$OUTPUTFORMAT
@@ -305,6 +311,10 @@
#{
# echo "$@" | sed s,:,\ -,g | tr \ / __ | tr -d \'\"\?\[:cntrl:\]
#}
+mungefilename ()
+{
+ echo "$@" | sed s,:,\ -,g | tr / \ | tr -d \'\"\?\[:cntrl:\]
+}
# Custom genre munging:
# By default we just transform uppercase to lowercase. Not much of a fancy
@@ -359,6 +369,7 @@
# If you'd like to have abcde eject the cdrom after all the tracks have been
# read, uncomment the following line.
#EJECTCD=y
+EJECTCD=y
# To encode on the remote machines foo, bar, baz, quux, and qiix, as well as
# on the local machine (requires distmp3 to be installed on local machine and
これでひと通り終わりました。お疲れ様です。
音楽CDを挿入してabcdeと唱えればあとは分かります。
エンコードオプションは.abcde.confの186行目付近のAACENCOPTSで変えられます。なんで--cvbr 192なのかというのも前回紹介したkamedoさんのサイトで分かります。自分でテストしたわけじゃないのですが。
AACとWMAの音質比較 - Kamedoの音風景
ちなみにabcdeではファイル名にスペースやスラッシュが使われる場合アンダーバーに置き換えられるのですが、これも.abcde.confの設定を変えることでできます。311行目付近の関数mungefilename内のtrコマンドが使われているところです。ここを
#mungefilename ()
#{
#echo "$@" | sed s,:,\ -,g | tr \ / __ | tr -d \'\"\?\[:cntrl:\]
#}
から
mungefilename ()
{
echo "$@" | sed s,:,\ -,g | tr / \ | tr -d \'\"\?\[:cntrl:\]
}
とかに変えればいいわけです。あとは色々好きにしてください。
それでは。
[追記:2013/12/12]
諸々の変更や記事名の変更をしました。