前回では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]
諸々の変更や記事名の変更をしました。